diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -316,7 +316,8 @@ if (newFile) { // printArchiveMemberLoad() prints both .a and .o names, so no need to // print the .a name here. - if (config->printEachFile && magic != file_magic::archive) + if (config->printEachFile && magic != file_magic::archive && + !isa(newFile)) message(toString(newFile)); inputFiles.insert(newFile); } diff --git a/lld/MachO/DriverUtils.cpp b/lld/MachO/DriverUtils.cpp --- a/lld/MachO/DriverUtils.cpp +++ b/lld/MachO/DriverUtils.cpp @@ -214,6 +214,8 @@ return nullptr; } file = make(**result, umbrella, isBundleLoader); + if (config->printEachFile) + message(toString(file)); // parseReexports() can recursively call loadDylib(). That's fine since // we wrote DylibFile we just loaded to the loadDylib cache via the `file` @@ -229,6 +231,8 @@ magic == file_magic::macho_executable || magic == file_magic::macho_bundle); file = make(mbref, umbrella, isBundleLoader); + if (config->printEachFile) + message(toString(file)); // parseLoadCommands() can also recursively call loadDylib(). See comment // in previous block for why this means we must copy `file` here. diff --git a/lld/test/MachO/flat-namespace.s b/lld/test/MachO/flat-namespace.s --- a/lld/test/MachO/flat-namespace.s +++ b/lld/test/MachO/flat-namespace.s @@ -14,7 +14,15 @@ # With flat_namespace, the linker automatically looks in foo.dylib and # bar.dylib too, but it doesn't add a LC_LOAD_DYLIB for it. -# RUN: %lld -flat_namespace -lSystem %t/main.o %t/baz.dylib -o %t/out +# RUN: %lld -flat_namespace -lSystem %t/main.o %t/baz.dylib -o %t/out -t | \ +# RUN: FileCheck --check-prefix=T %s +## FIXME: The `bar.dylib` line should use `T-NEXT`, but on Windows we load +## libSystem.tbd with different slash styles and end up loading it twice +## for that reason. +# T: main.o +# T-NEXT: baz.dylib +# T: bar.dylib +# T-NEXT: foo.dylib # RUN: llvm-objdump --macho --all-headers %t/out \ # RUN: | FileCheck --check-prefix=HEADERBITS %s # RUN: llvm-objdump --macho --bind --lazy-bind --weak-bind %t/out \