diff options
| -rw-r--r-- | lld/ELF/Driver.cpp | 2 | ||||
| -rw-r--r-- | lld/test/ELF/version-script.s | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index b859eff6e2f..d4f5c89d71e 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -774,7 +774,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &Args) { {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); } diff --git a/lld/test/ELF/version-script.s b/lld/test/ELF/version-script.s index 66e850620c0..abc716250eb 100644 --- a/lld/test/ELF/version-script.s +++ b/lld/test/ELF/version-script.s @@ -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: @ |

