diff options
| -rw-r--r-- | lld/ELF/Driver.cpp | 3 | ||||
| -rw-r--r-- | lld/test/ELF/Inputs/shlib-undefined-ref.s | 4 | ||||
| -rw-r--r-- | lld/test/ELF/shlib-undefined-shared.s | 15 |
3 files changed, 21 insertions, 1 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index cc76fea2ad5..b159fe63eb1 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -1043,7 +1043,8 @@ template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) { return; // Handle undefined symbols in DSOs. - Symtab->scanShlibUndefined<ELFT>(); + if (!Config->Shared) + Symtab->scanShlibUndefined<ELFT>(); // Handle the -exclude-libs option. if (Args.hasArg(OPT_exclude_libs)) diff --git a/lld/test/ELF/Inputs/shlib-undefined-ref.s b/lld/test/ELF/Inputs/shlib-undefined-ref.s new file mode 100644 index 00000000000..cfb7c60ebc0 --- /dev/null +++ b/lld/test/ELF/Inputs/shlib-undefined-ref.s @@ -0,0 +1,4 @@ +.globl f +f: + call should_not_be_exported@PLT + ret diff --git a/lld/test/ELF/shlib-undefined-shared.s b/lld/test/ELF/shlib-undefined-shared.s new file mode 100644 index 00000000000..6d60d01bfab --- /dev/null +++ b/lld/test/ELF/shlib-undefined-shared.s @@ -0,0 +1,15 @@ +# REQUIRES: x86 + +# RUN: llvm-mc -filetype=obj -triple=x86_64-linux-gnu -o %t1.o %S/Inputs/shlib-undefined-ref.s +# RUN: ld.lld -shared -o %t1.so %t1.o + +# RUN: llvm-mc -filetype=obj -triple=x86_64-linux-gnu -o %t2.o %s +# RUN: echo "{ local: *; };" > %t.script +# RUN: ld.lld -shared -version-script %t.script -o %t2.so %t2.o %t1.so +# RUN: llvm-nm -g %t2.so | FileCheck -allow-empty %s + +# CHECK-NOT: should_not_be_exported + +.globl should_not_be_exported +should_not_be_exported: + ret |

