[lld] r316782 - Handle all symbol types in --trace.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 27 11:30:11 PDT 2017


Author: rafael
Date: Fri Oct 27 11:30:11 2017
New Revision: 316782

URL: http://llvm.org/viewvc/llvm-project?rev=316782&view=rev
Log:
Handle all symbol types in --trace.

One case I was not sure was lazy symbols. bfd skips them completely,
but that is probably an artifact of how they implement archives.

Modified:
    lld/trunk/ELF/Symbols.cpp
    lld/trunk/test/ELF/trace-symbols.s

Modified: lld/trunk/ELF/Symbols.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Symbols.cpp?rev=316782&r1=316781&r2=316782&view=diff
==============================================================================
--- lld/trunk/ELF/Symbols.cpp (original)
+++ lld/trunk/ELF/Symbols.cpp Fri Oct 27 11:30:11 2017
@@ -355,6 +355,10 @@ void elf::printTraceSymbol(Symbol *Sym)
     S = ": reference to ";
   else if (B->isCommon())
     S = ": common definition of ";
+  else if (B->isLazy())
+    S = ": lazy definition of ";
+  else if (B->isShared())
+    S = ": shared definition of ";
   else
     S = ": definition of ";
 

Modified: lld/trunk/test/ELF/trace-symbols.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/trace-symbols.s?rev=316782&r1=316781&r2=316782&view=diff
==============================================================================
--- lld/trunk/test/ELF/trace-symbols.s (original)
+++ lld/trunk/test/ELF/trace-symbols.s Fri Oct 27 11:30:11 2017
@@ -31,19 +31,23 @@
 # RUN:   %t %t2 %t1 -o %t4 2>&1 | FileCheck -check-prefix=OBJECTD2FOO %s
 # RUN: ld.lld -y foo -y common %t %t1.so %t2 -o %t3 2>&1 | \
 # RUN:   FileCheck -check-prefix=OBJECTD2FOO %s
-# RUN: ld.lld -y foo -y common %t %t2 %t1.a -o %t3 2>&1 | \
-# RUN:   FileCheck -check-prefix=OBJECTD2FOO %s
 # OBJECTD2FOO: trace-symbols.s.tmp2: definition of foo
 
+# RUN: ld.lld -y foo -y common %t %t2 %t1.a -o %t3 2>&1 | \
+# RUN:   FileCheck -check-prefix=FOO_AND_COMMON %s
+# FOO_AND_COMMON: trace-symbols.s.tmp: reference to foo
+# FOO_AND_COMMON: trace-symbols.s.tmp2: definition of foo
+# FOO_AND_COMMON: trace-symbols.s.tmp1.a: lazy definition of common
+
 # RUN: ld.lld -y foo -y common %t %t1.so %t2 -o %t3 2>&1 | \
 # RUN:   FileCheck -check-prefix=SHLIBDCOMMON %s
-# SHLIBDCOMMON: trace-symbols.s.tmp1.so: definition of common
+# SHLIBDCOMMON: trace-symbols.s.tmp1.so: shared definition of common
 
 # RUN: ld.lld -y foo -y common %t %t2.so %t1.so -o %t3 2>&1 | \
 # RUN:   FileCheck -check-prefix=SHLIBD2FOO %s
 # RUN: ld.lld -y foo %t %t1.a %t2.so -o %t3 | \
 # RUN:   FileCheck -check-prefix=NO-SHLIBD2FOO %s
-# SHLIBD2FOO:        trace-symbols.s.tmp2.so: definition of foo
+# SHLIBD2FOO:        trace-symbols.s.tmp2.so: shared definition of foo
 # NO-SHLIBD2FOO-NOT: trace-symbols.s.tmp2.so: definition of foo
 
 # RUN: ld.lld -y foo -y common %t %t2 %t1.a -o %t3 2>&1 | \
@@ -61,7 +65,7 @@
 
 # RUN: ld.lld -y bar %t %t1.so %t2.so -o %t3 | \
 # RUN:   FileCheck -check-prefix=SHLIBDBAR %s
-# SHLIBDBAR: trace-symbols.s.tmp2.so: definition of bar
+# SHLIBDBAR: trace-symbols.s.tmp2.so: shared definition of bar
 
 # RUN: ld.lld -y foo -y bar %t %t1.so %t2.so -o %t3 | \
 # RUN:   FileCheck -check-prefix=SHLIBRBAR %s




More information about the llvm-commits mailing list