diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp --- a/lld/ELF/Symbols.cpp +++ b/lld/ELF/Symbols.cpp @@ -385,7 +385,7 @@ break; } if (!exclude) - warn("backward reference detected: " + sym.getName() + " in " + + warn("backward reference detected: " + toString(sym) + " in " + toString(it.second.first) + " refers to " + to); } } diff --git a/lld/test/ELF/lto/warn-backrefs-demangle.ll b/lld/test/ELF/lto/warn-backrefs-demangle.ll new file mode 100644 --- /dev/null +++ b/lld/test/ELF/lto/warn-backrefs-demangle.ll @@ -0,0 +1,30 @@ +; REQUIRES: x86 +;; Test that the referenced filename is correct (not or lto.tmp). + +; RUN: split-file %s %t +; RUN: llvm-as %t/a.ll -o %ta.o +; RUN: llvm-as %t/b.ll -o %tb.o +; RUN: ld.lld --demangle --warn-backrefs --start-lib %tb.o --end-lib %ta.o -o /dev/null 2>&1 | FileCheck %s + +; CHECK: warning: backward reference detected: f() in {{.*}}a.o refers to {{.*}}b.o + +;--- a.ll +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +declare void @_Z1fv() + +define void @_start() { +entry: + call void () @_Z1fv() + ret void +} + +;--- b.ll +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +define void @_Z1fv() { +entry: + ret void +} diff --git a/lld/test/ELF/lto/warn-backrefs-no-demangle.ll b/lld/test/ELF/lto/warn-backrefs-no-demangle.ll new file mode 100644 --- /dev/null +++ b/lld/test/ELF/lto/warn-backrefs-no-demangle.ll @@ -0,0 +1,30 @@ +; REQUIRES: x86 +;; Test that the referenced filename is correct (not or lto.tmp). + +; RUN: split-file %s %t +; RUN: llvm-as %t/a.ll -o %ta.o +; RUN: llvm-as %t/b.ll -o %tb.o +; RUN: ld.lld --no-demangle --warn-backrefs --start-lib %tb.o --end-lib %ta.o -o /dev/null 2>&1 | FileCheck %s + +; CHECK: warning: backward reference detected: _Z1fv in {{.*}}a.o refers to {{.*}}b.o + +;--- a.ll +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +declare void @_Z1fv() + +define void @_start() { +entry: + call void () @_Z1fv() + ret void +} + +;--- b.ll +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +define void @_Z1fv() { +entry: + ret void +}