[PATCH] D77087: [lld-macho] Only mock out libSystem.dylib loading in tests

Jez Ng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 13 02:07:38 PDT 2020


int3 marked 2 inline comments as done.
int3 added inline comments.


================
Comment at: lld/MachO/Writer.cpp:357-361
+  if (StringRef(getenv("LLD_FORCE_LOAD_LIBSYSTEM")) == "1" &&
+      dylibOrdinal == 1 && config->outputType == MH_EXECUTE) {
+    headerSection->addLoadCommand(
+        make<LCLoadDylib>("/usr/lib/libSystem.B.dylib"));
+  }
----------------
ruiu wrote:
> int3 wrote:
> > ruiu wrote:
> > > I may be missing something, but doesn't this force lld to always link against /usr/lib/libSystem.B.dylib when it is ran in test, which will fail on non-macOS systems that don't have the dylib file?
> > This just adds an additional load command to the output file, but it doesn't actually cause lld to read and link against libSystem. I.e. we won't create a DylibFile / InputFile for libSystem. It's just an output-time hack.
> Ah, I see. So by adding that library to the dependency list, you can execute an output of lld test run right?
> 
> `LLD_IN_TEST` is set when you are running a test. Can you use that existing environment variable instead? I'm a bit worried about defining a new environment variable as users could start using the internal flag.
> So by adding that library to the dependency list, you can execute an output of lld test run right?

Yup, that's right


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77087/new/

https://reviews.llvm.org/D77087





More information about the llvm-commits mailing list