diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp --- a/lld/ELF/Symbols.cpp +++ b/lld/ELF/Symbols.cpp @@ -726,5 +726,6 @@ uint8_t bind = binding; replace(other); binding = bind; - } + } else if (traced) + printTraceSymbol(&other); } diff --git a/lld/test/ELF/trace-symbols.s b/lld/test/ELF/trace-symbols.s --- a/lld/test/ELF/trace-symbols.s +++ b/lld/test/ELF/trace-symbols.s @@ -13,6 +13,11 @@ # RUN: rm -f %t2.a # RUN: llvm-ar rcs %t2.a %t2 +# RUN: ld.lld -y foo -shared %t1 %t1.so -o /dev/null | \ +# RUN: FileCheck --check-prefix=PREEMPT %s --implicit-check-not=foo +# PREEMPT: trace-symbols.s.tmp1: definition of foo +# PREEMPT-NEXT: trace-symbols.s.tmp1.so: shared definition of foo + # RUN: ld.lld -y foo -trace-symbol common -trace-symbol=hsymbol \ # RUN: %t %t1 %t2 -o %t3 | FileCheck -check-prefix=OBJECTRFOO %s # OBJECTRFOO: trace-symbols.s.tmp: reference to foo