diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index c0076a3722fe4..927dc272b5326 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -460,9 +460,9 @@ static void addDependentLibrary(StringRef specifier, const InputFile *f) { if (!config->dependentLibraries) return; if (Optional s = searchLibraryBaseName(specifier)) - driver->addFile(*s, /*withLOption=*/true); + driver->addFile(saver().save(*s), /*withLOption=*/true); else if (Optional s = findFromSearchPaths(specifier)) - driver->addFile(*s, /*withLOption=*/true); + driver->addFile(saver().save(*s), /*withLOption=*/true); else if (fs::exists(specifier)) driver->addFile(specifier, /*withLOption=*/false); else diff --git a/lld/test/ELF/print-archive-stats.s b/lld/test/ELF/print-archive-stats.s index 61e571e352a57..2dd236f8e0a1f 100644 --- a/lld/test/ELF/print-archive-stats.s +++ b/lld/test/ELF/print-archive-stats.s @@ -6,19 +6,21 @@ # RUN: echo '.global foo; foo:' | llvm-mc -filetype=obj -triple=x86_64 - -o 1.o # RUN: echo '.global bar; bar:' | llvm-mc -filetype=obj -triple=x86_64 - -o 2.o # RUN: echo '.global baz; baz:' | llvm-mc -filetype=obj -triple=x86_64 - -o 3.o -# RUN: rm -f weak.a && llvm-ar rc weak.a weak.o -# RUN: rm -f 1.a && llvm-ar rc 1.a 1.o 2.o 3.o +# RUN: llvm-ar rc weak.a weak.o +# RUN: llvm-ar rc 1.a 1.o 2.o 3.o +# RUN: llvm-ar rc lib2.a -# RUN: ld.lld a.o %t/weak.a 1.a --print-archive-stats=a.txt -o /dev/null +# RUN: ld.lld a.o %t/weak.a 1.a -L. --print-archive-stats=a.txt -o /dev/null # RUN: FileCheck --input-file=a.txt -DT=%t %s --match-full-lines --strict-whitespace ## Fetches 0 member from %t/weak.a and 2 members from %t1.a # CHECK:members extracted archive # CHECK-NEXT:1 0 [[T]]/weak.a # CHECK-NEXT:3 2 1.a +# CHECK-NEXT:0 0 {{.*}}lib2.a ## - means stdout. -# RUN: ld.lld a.o %t/weak.a 1.a --print-archive-stats=- -o /dev/null | diff a.txt - +# RUN: ld.lld a.o %t/weak.a 1.a -L. --print-archive-stats=- -o /dev/null | diff a.txt - ## The second 1.a has 0 fetched member. # RUN: ld.lld a.o %t/weak.a -L. -l:1.a -l:1.a --print-archive-stats=- -o /dev/null | \ @@ -27,8 +29,9 @@ # CHECK2-NEXT: 1 0 {{.*}}weak.a # CHECK2-NEXT: 3 2 {{.*}}1.a # CHECK2-NEXT: 3 0 {{.*}}1.a +# CHECK2-NEXT: 0 0 {{.*}}lib2.a -# RUN: not ld.lld -shared a.o --print-archive-stats=/ -o /dev/null 2>&1 | FileCheck --check-prefix=ERR %s +# RUN: not ld.lld -shared a.o -L. --print-archive-stats=/ -o /dev/null 2>&1 | FileCheck --check-prefix=ERR %s # ERR: error: --print-archive-stats=: cannot open /: {{.*}} #--- a.s @@ -38,3 +41,6 @@ _start: call foo call bar call weak + +.section ".deplibs","MS",@llvm_dependent_libraries,1 +.asciz "2"