[lld] r273989 - [ELF] Warn for duplicate symbols in version scripts instead of erroring out.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 27 20:40:49 PDT 2016


Author: davide
Date: Mon Jun 27 22:40:49 2016
New Revision: 273989

URL: http://llvm.org/viewvc/llvm-project?rev=273989&view=rev
Log:
[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

Modified:
    lld/trunk/ELF/SymbolTable.cpp
    lld/trunk/test/ELF/version-script.s

Modified: lld/trunk/ELF/SymbolTable.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=273989&r1=273988&r2=273989&view=diff
==============================================================================
--- lld/trunk/ELF/SymbolTable.cpp (original)
+++ lld/trunk/ELF/SymbolTable.cpp Mon Jun 27 22:40:49 2016
@@ -534,7 +534,7 @@ template <class ELFT> void SymbolTable<E
       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;

Modified: lld/trunk/test/ELF/version-script.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script.s?rev=273989&r1=273988&r2=273989&view=diff
==============================================================================
--- lld/trunk/test/ELF/version-script.s (original)
+++ lld/trunk/test/ELF/version-script.s Mon Jun 27 22:40:49 2016
@@ -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




More information about the llvm-commits mailing list