aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2016-06-06 22:42:57 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2016-06-06 22:42:57 +0000
commitb75bd9cb41ff4a16606d75aa1b3dbd82e7a93430 (patch)
tree506776fef5fd43dec3b7f1370d1b52b5706cec22
parent029e6f2d18e4f6d0a3f0b99ee1d930fb3f6dc75c (diff)
Ignore the "globally available" version.
Reduced from a firefox build. git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@271950 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--ELF/InputFiles.cpp2
-rw-r--r--test/ELF/Inputs/version-use.script6
-rwxr-xr-xtest/ELF/Inputs/version-use.sobin0 -> 2720 bytes
-rw-r--r--test/ELF/version-use.s9
4 files changed, 16 insertions, 1 deletions
diff --git a/ELF/InputFiles.cpp b/ELF/InputFiles.cpp
index a5e6cd974..48d04f894 100644
--- a/ELF/InputFiles.cpp
+++ b/ELF/InputFiles.cpp
@@ -527,7 +527,7 @@ template <class ELFT> void SharedFile<ELFT>::parseRest() {
if (Versym) {
// Ignore local symbols and non-default versions.
- if (VersymIndex == 0 || (VersymIndex & VERSYM_HIDDEN))
+ if (VersymIndex == 0 || VersymIndex == 1 || (VersymIndex & VERSYM_HIDDEN))
continue;
}
elf::Symtab<ELFT>::X->addShared(this, Name, Sym, Verdefs[VersymIndex]);
diff --git a/test/ELF/Inputs/version-use.script b/test/ELF/Inputs/version-use.script
new file mode 100644
index 000000000..5b2721b05
--- /dev/null
+++ b/test/ELF/Inputs/version-use.script
@@ -0,0 +1,6 @@
+ABC {
+global:
+foo;
+local:
+*;
+};
diff --git a/test/ELF/Inputs/version-use.so b/test/ELF/Inputs/version-use.so
new file mode 100755
index 000000000..153544e99
--- /dev/null
+++ b/test/ELF/Inputs/version-use.so
Binary files differ
diff --git a/test/ELF/version-use.s b/test/ELF/version-use.s
new file mode 100644
index 000000000..684679fdb
--- /dev/null
+++ b/test/ELF/version-use.s
@@ -0,0 +1,9 @@
+// REQUIRES: x86
+// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
+// RUN: ld.lld %t.o %p/Inputs/version-use.so -o %t.so -shared
+// RUN: llvm-readobj -s %t.so | FileCheck %s
+
+
+ call bar@PLT
+
+// CHECK-NOT: SHT_GNU_versym