[llvm-branch-commits] [lld] b0d6beb - [ELF] Drop '>>> defined in ' for locations of linker synthesized symbols

Fangrui Song via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Dec 30 09:21:09 PST 2020


Author: Fangrui Song
Date: 2020-12-30T09:16:26-08:00
New Revision: b0d6bebe90ddce73e58824ba5cb294cb663b5c27

URL: https://github.com/llvm/llvm-project/commit/b0d6bebe90ddce73e58824ba5cb294cb663b5c27
DIFF: https://github.com/llvm/llvm-project/commit/b0d6bebe90ddce73e58824ba5cb294cb663b5c27.diff

LOG: [ELF] Drop '>>> defined in ' for locations of linker synthesized symbols

Reviewed By: grimar

Differential Revision: https://reviews.llvm.org/D93925

Added: 
    

Modified: 
    lld/ELF/Relocations.cpp
    lld/test/ELF/x86-64-gotpc-err.s

Removed: 
    


################################################################################
diff  --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index 875ecf78ca2c..4cfd97dad941 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -74,12 +74,12 @@ static Optional<std::string> getLinkerScriptLocation(const Symbol &sym) {
 }
 
 static std::string getDefinedLocation(const Symbol &sym) {
-  std::string msg = "\n>>> defined in ";
+  const char msg[] = "\n>>> defined in ";
   if (sym.file)
-    msg += toString(sym.file);
-  else if (Optional<std::string> loc = getLinkerScriptLocation(sym))
-    msg += *loc;
-  return msg;
+    return msg + toString(sym.file);
+  if (Optional<std::string> loc = getLinkerScriptLocation(sym))
+    return msg + *loc;
+  return "";
 }
 
 // Construct a message in the following format.

diff  --git a/lld/test/ELF/x86-64-gotpc-err.s b/lld/test/ELF/x86-64-gotpc-err.s
index 7dcbbc5a3378..1dbfc4584dd5 100644
--- a/lld/test/ELF/x86-64-gotpc-err.s
+++ b/lld/test/ELF/x86-64-gotpc-err.s
@@ -3,23 +3,24 @@
 # RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o
 # RUN: not ld.lld -T %t/lds %t/a.o -o /dev/null 2>&1 | FileCheck %s
 
-# CHECK:     error: {{.*}}:(.text+0x2): relocation R_X86_64_GOTPCRELX out of range: 2147483655 is not in [-2147483648, 2147483647]; references data
-# CHECK:     error: {{.*}}:(.text+0x9): relocation R_X86_64_REX_GOTPCRELX out of range: 2147483648 is not in [-2147483648, 2147483647]; references data
+## Test diagnostics for GOTPCRELX overflows. In addition, test that there is no
+## `>>> defined in` for linker synthesized __stop_* symbols (there is no
+## associated file or linker script line number).
+
+# CHECK:      error: {{.*}}:(.text+0x2): relocation R_X86_64_GOTPCRELX out of range: 2147483655 is not in [-2147483648, 2147483647]; references __stop_data
+# CHECK-NEXT: error: {{.*}}:(.text+0x9): relocation R_X86_64_REX_GOTPCRELX out of range: 2147483648 is not in [-2147483648, 2147483647]; references __stop_data
 # CHECK-NOT: error:
 
 #--- a.s
-  movl data at GOTPCREL(%rip), %eax  # out of range
-  movq data at GOTPCREL(%rip), %rax  # out of range
-  movq data at GOTPCREL(%rip), %rax  # in range
+  movl __stop_data at GOTPCREL(%rip), %eax  # out of range
+  movq __stop_data at GOTPCREL(%rip), %rax  # out of range
+  movq __stop_data at GOTPCREL(%rip), %rax  # in range
 
-.data
+.section data,"aw", at progbits
 .space 13
-.globl data
-data:
-  .long 0
 
 #--- lds
 SECTIONS {
   .text 0x200000 : { *(.text) }
-  .data 0x80200000 : { *(.data) }
+  data 0x80200000 : { *(data) }
 }


        


More information about the llvm-branch-commits mailing list