[PATCH] D29892: ar: add llvm-dlltool support

Rui Ueyama via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 14 18:58:08 PDT 2017


ruiu added a comment.

Please read your patch throughly again and again to fix all errors of the same kind until you think your patch is perfect. I think I'm pointing out the same errors probably too many times.



================
Comment at: lib/Object/COFFModuleDefinition.cpp:87-89
+      // This lets us handle "==" which is a dlltool ism.
+      if (Buf[1] == '=')
+        Buf = Buf.drop_front();
----------------
This is not safe because Buf may contain just one character (and if that's the case, accessing Buf[1] can cause a runtime error.) You want to do this.

  Buf = Buf.drop_front();
  // GNU dlltool accepts both = and ==.
  if (Buf.startswith('='))
    Buf = Buf.drop_front();
  return Token(Equal, "=");


================
Comment at: lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp:101
+  unsigned MissingCount;
+  llvm::opt::InputArgList Args =
+      Table.ParseArgs(ArgsArr.slice(1), MissingIndex, MissingCount);
----------------
Remove `llvm::`.


================
Comment at: lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp:129-131
+  std::string Path;
+  if (auto *Arg = Args.getLastArg(OPT_l))
+    Path = Arg->getValue();
----------------
  std::string Path = Args.getLastArgValue(OPT_l);


================
Comment at: lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp:143
+  Expected<COFFModuleDefinition> Def =
+      parseCOFFModuleDefinition(MB, Machine, true);
+
----------------
You want to do this only when MB has contents, no?


================
Comment at: lib/ToolDrivers/llvm-dlltool/DlltoolDriver.cpp:155-156
+
+  if (Path.empty())
+    Path = getImplibPath(Def->OutputFile);
+
----------------
OK, so delete the above definition of `Path` and write everything here.

  std::string Path = Args.getLastArgValue(OPT_l);
  if (Path.empty())
    Path = getImplibPath(Def->OutputFile);


Repository:
  rL LLVM

https://reviews.llvm.org/D29892





More information about the llvm-commits mailing list