[PATCH] D74404: [DebugInfo] Fix reading addresses in DWARFDebugAddr.
Igor Kudrin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 11 22:36:48 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5d58eb9f4f71: [DebugInfo] Fix reading addresses in DWARFDebugAddr. (authored by ikudrin).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D74404/new/
https://reviews.llvm.org/D74404
Files:
llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp
llvm/test/tools/llvm-dwarfdump/X86/debug_addr_rela.s
Index: llvm/test/tools/llvm-dwarfdump/X86/debug_addr_rela.s
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-dwarfdump/X86/debug_addr_rela.s
@@ -0,0 +1,28 @@
+# RUN: llvm-mc %s -filetype obj -triple x86_64-pc-linux -o - | \
+# RUN: llvm-dwarfdump -debug-addr - | \
+# RUN: FileCheck %s
+
+## This checks that we use DWARFDataExtractor::getRelocatedAddress() to read
+## addresses of an address table. In this test, the raw data in the .debug_addr
+## section does not contain the full address, thus, it is required to resolve
+## a RELA relocation to recover the real value.
+
+# CHECK: .debug_addr contents
+# CHECK-NEXT: length = 0x0000000c, version = 0x0005, addr_size = 0x08, seg_size = 0x00
+# CHECK-NEXT: Addrs: [
+# CHECK-NEXT: 0x000000000000002a
+# CHECK-NEXT: ]
+
+ .text
+ .space 0x2a
+.Lfoo:
+
+ .section .debug_addr,"", at progbits
+ .long .LAddr0end-.LAddr0version # Length
+.LAddr0version:
+ .short 5 # Version
+ .byte 8 # Address size
+ .byte 0 # Segment selector size
+.LAddr0table:
+ .quad .Lfoo
+.LAddr0end:
Index: llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp
@@ -131,10 +131,7 @@
Data.setAddressSize(HeaderData.AddrSize);
uint32_t AddrCount = DataSize / HeaderData.AddrSize;
for (uint32_t I = 0; I < AddrCount; ++I)
- if (HeaderData.AddrSize == 4)
- Addrs.push_back(Data.getU32(OffsetPtr));
- else
- Addrs.push_back(Data.getU64(OffsetPtr));
+ Addrs.push_back(Data.getRelocatedAddress(OffsetPtr));
return Error::success();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74404.244065.patch
Type: text/x-patch
Size: 1818 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200212/db273c39/attachment.bin>
More information about the llvm-commits
mailing list