[lld] r320006 - [ELF] Handle multiple "--version-script" options.

Igor Kudrin via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 6 19:25:39 PST 2017


Author: ikudrin
Date: Wed Dec  6 19:25:39 2017
New Revision: 320006

URL: http://llvm.org/viewvc/llvm-project?rev=320006&view=rev
Log:
[ELF] Handle multiple "--version-script" options.

Both ld.bfd and ld.gold can handle this case.

Differential Revision: https://reviews.llvm.org/D40878

Modified:
    lld/trunk/ELF/Driver.cpp
    lld/trunk/test/ELF/version-script.s

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=320006&r1=320005&r2=320006&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Wed Dec  6 19:25:39 2017
@@ -774,7 +774,7 @@ void LinkerDriver::readConfigs(opt::Inpu
           {Arg->getValue(), /*IsExternCpp*/ false, /*HasWildcard*/ false});
   }
 
-  if (auto *Arg = Args.getLastArg(OPT_version_script))
+  for (auto *Arg : Args.filtered(OPT_version_script))
     if (Optional<MemoryBufferRef> Buffer = readFile(Arg->getValue()))
       readVersionScript(*Buffer);
 }

Modified: lld/trunk/test/ELF/version-script.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script.s?rev=320006&r1=320005&r2=320006&view=diff
==============================================================================
--- lld/trunk/test/ELF/version-script.s (original)
+++ lld/trunk/test/ELF/version-script.s Wed Dec  6 19:25:39 2017
@@ -42,6 +42,12 @@
 # RUN: ld.lld --version-script %t.script --dynamic-list %t.list %t.o %t2.so -o %t2
 # RUN: llvm-readobj %t2 > /dev/null
 
+## Check that we can handle multiple "--version-script" options.
+# RUN: echo "VERSION_1.0 { global : foo1; local : *; };" > %t7a.script
+# RUN: echo "VERSION_2.0 { global: foo3; local: *; };" > %t7b.script
+# RUN: ld.lld --version-script %t7a.script --version-script %t7b.script -shared %t.o %t2.so -o %t7.so
+# RUN: llvm-readobj -dyn-symbols %t7.so | FileCheck --check-prefix=VERDSO %s
+
 # DSO:      DynamicSymbols [
 # DSO-NEXT:   Symbol {
 # DSO-NEXT:     Name: @




More information about the llvm-commits mailing list