Index: ELF/Driver.cpp =================================================================== --- ELF/Driver.cpp +++ ELF/Driver.cpp @@ -774,7 +774,7 @@ {Arg->getValue(), /*IsExternCpp*/ false, /*HasWildcard*/ false}); } - if (auto *Arg = Args.getLastArg(OPT_version_script)) + for (auto *Arg : Args.filtered(OPT_version_script)) if (Optional Buffer = readFile(Arg->getValue())) readVersionScript(*Buffer); } Index: test/ELF/version-script.s =================================================================== --- test/ELF/version-script.s +++ 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: @