diff options
author | Davide Italiano <davide@freebsd.org> | 2016-06-28 03:40:49 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2016-06-28 03:40:49 +0000 |
commit | 6713238600a53ed59e8f6962db0228ac8d5ba5c0 (patch) | |
tree | 56bc801ab5758266f35421bba8e7a14a54ad7592 | |
parent | 5aea9ad0fe3ea4c9666f20e50bbd9bdfcfe20a8b (diff) |
[ELF] Warn for duplicate symbols in version scripts instead of erroring out.
Emitting an error in this case breaks real-world application (e.g. libreoffice).
See http://reviews.llvm.org/D21555 for context.
Differential Revision: http://reviews.llvm.org/D21781
git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@273989 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | ELF/SymbolTable.cpp | 2 | ||||
-rw-r--r-- | test/ELF/version-script.s | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/ELF/SymbolTable.cpp b/ELF/SymbolTable.cpp index eaf09ec4c..770c0cf8f 100644 --- a/ELF/SymbolTable.cpp +++ b/ELF/SymbolTable.cpp @@ -534,7 +534,7 @@ template <class ELFT> void SymbolTable<ELFT>::scanVersionScript() { if (SymbolBody *B = find(Name)) { if (B->symbol()->VersionId != VER_NDX_GLOBAL && B->symbol()->VersionId != VER_NDX_LOCAL) - error("duplicate symbol " + Name + " in version script"); + warning("duplicate symbol " + Name + " in version script"); B->symbol()->VersionId = I; } ++I; diff --git a/test/ELF/version-script.s b/test/ELF/version-script.s index de8fb3521..528408d91 100644 --- a/test/ELF/version-script.s +++ b/test/ELF/version-script.s @@ -53,9 +53,9 @@ # RUN: VERSION_2.0 { \ # RUN: global: foo1; \ # RUN: local: *; }; " > %t6.script -# RUN: not ld.lld --version-script %t6.script -shared %t.o %t2.so -o %t6.so 2>&1 | \ -# RUN: FileCheck -check-prefix=ERR2 %s -# ERR2: duplicate symbol foo1 in version script +# RUN: ld.lld --version-script %t6.script -shared %t.o %t2.so -o %t6.so 2>&1 | \ +# RUN: FileCheck -check-prefix=WARN2 %s +# WARN2: duplicate symbol foo1 in version script # RUN: ld.lld --version-script %t.script --dynamic-list %t.list %t.o %t2.so -o %t2 # RUN: llvm-readobj %t2 > /dev/null |