From b75bd9cb41ff4a16606d75aa1b3dbd82e7a93430 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 6 Jun 2016 22:42:57 +0000 Subject: 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 --- ELF/InputFiles.cpp | 2 +- test/ELF/Inputs/version-use.script | 6 ++++++ test/ELF/Inputs/version-use.so | Bin 0 -> 2720 bytes test/ELF/version-use.s | 9 +++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test/ELF/Inputs/version-use.script create mode 100755 test/ELF/Inputs/version-use.so create mode 100644 test/ELF/version-use.s 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 void SharedFile::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::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 Binary files /dev/null and b/test/ELF/Inputs/version-use.so 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 -- cgit v1.2.3