D94280 also fixed PR48702.
compileBitcodeFiles<ELFT>();
// Handle --exclude-libs again because lto.tmp may reference additional
- // libcalls symbols defined in an excluded archive.
+ // libcalls symbols defined in an excluded archive. This may override
+ // versionId set by scanVersionScript().
if (args.hasArg(OPT_exclude_libs))
excludeLibs(args);
--- /dev/null
+# REQUIRES: x86
+## --exclude-libs can hide version symbols.
+
+# RUN: rm -rf %t && split-file %s %t
+# RUN: llvm-mc -filetype=obj %t/a.s -o %t/a.o
+# RUN: llvm-mc -filetype=obj %t/b.s -o %t/b.o
+# RUN: llvm-ar rc %t/b.a %t/b.o
+# RUN: ld.lld -shared %t/a.o %t/b.a --version-script=%t/ver -o %t.so
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck %s
+# RUN: ld.lld -shared %t/a.o %t/b.a --exclude-libs=b.a --version-script=%t/ver -o %t.so
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck %s --check-prefix=NO
+
+# CHECK: foo@@v2
+# CHECK: bar@v1
+# NO-NOT: foo@@v2
+# NO-NOT: bar@v1
+
+#--- a.s
+.globl _start
+_start:
+ call foo
+
+#--- b.s
+.symver bar_v1, bar@v1
+.globl foo, bar_v1
+foo:
+bar_v1:
+ ret
+
+#--- ver
+v1 {};
+v2 { foo; };