[PATCH] D30889: [ELF] Fix error reporting for eh_frame and other synthetic sections
Eugene Leviant via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 14 01:45:49 PDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL297711: [ELF] Fix error reporting for synthetic sections (authored by evgeny777).
Changed prior to commit:
https://reviews.llvm.org/D30889?vs=91544&id=91682#toc
Repository:
rL LLVM
https://reviews.llvm.org/D30889
Files:
lld/trunk/ELF/InputSection.cpp
lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
Index: lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
===================================================================
--- lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
+++ lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
@@ -0,0 +1,27 @@
+## Check that error is correctly reported when .eh_frame reloc
+## is out of range
+
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
+# RUN: echo "PHDRS { eh PT_LOAD; text PT_LOAD; } \
+# RUN: SECTIONS { . = 0x10000; \
+# RUN: .eh_frame_hdr : { *(.eh_frame_hdr*) } : eh \
+# RUN: .eh_frame : { *(.eh_frame) } : eh \
+# RUN: . = 0xF00000000; \
+# RUN: .text : { *(.text*) } : text \
+# RUN: }" > %t.script
+# RUN: not ld.lld %t.o -T %t.script -o %t 2>&1 | FileCheck %s
+
+# CHECK: error: {{.*}}:(.eh_frame+0x20): relocation R_X86_64_PC32 out of range
+
+ .text
+ .globl _start
+_start:
+ .cfi_startproc
+ .cfi_lsda 0, _ex
+ nop
+ .cfi_endproc
+
+ .data
+_ex:
+ .word 0
Index: lld/trunk/ELF/InputSection.cpp
===================================================================
--- lld/trunk/ELF/InputSection.cpp
+++ lld/trunk/ELF/InputSection.cpp
@@ -172,6 +172,11 @@
// Returns a source location string. Used to construct an error message.
template <class ELFT>
std::string InputSectionBase::getLocation(uint64_t Offset) {
+ // We don't have file for synthetic sections.
+ if (getFile<ELFT>() == nullptr)
+ return (Config->OutputFile + ":(" + Name + "+0x" + utohexstr(Offset) + ")")
+ .str();
+
// First check if we can get desired values from debugging information.
std::string LineInfo = getFile<ELFT>()->getLineInfo(this, Offset);
if (!LineInfo.empty())
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D30889.91682.patch
Type: text/x-patch
Size: 1755 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170314/123bb2a3/attachment.bin>
More information about the llvm-commits
mailing list