From f79912032bb189c434c6e8c38a461789c3a8a753 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Sat, 10 Jun 2017 19:32:50 +0000 Subject: [PATCH] dwarfdump: Handle relocs to zlib (.zdebug*) compressed sections git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305152 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/DebugInfo/DWARF/DWARFContext.cpp | 2 +- test/DebugInfo/Inputs/dwarfdump-test-zlib.cc | 3 ++- .../Inputs/dwarfdump-test-zlib.o.elf-x86-64 | Bin 0 -> 4688 bytes test/DebugInfo/dwarfdump-zlib.test | 5 +++++ 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 test/DebugInfo/Inputs/dwarfdump-test-zlib.o.elf-x86-64 diff --git a/lib/DebugInfo/DWARF/DWARFContext.cpp b/lib/DebugInfo/DWARF/DWARFContext.cpp index 42ab48808f9..fb48253b2ad 100644 --- a/lib/DebugInfo/DWARF/DWARFContext.cpp +++ b/lib/DebugInfo/DWARF/DWARFContext.cpp @@ -1250,7 +1250,7 @@ DWARFContextInMemory::DWARFContextInMemory(const object::ObjectFile &Obj, continue; RelSecName = RelSecName.substr( - RelSecName.find_first_not_of("._")); // Skip . and _ prefixes. + RelSecName.find_first_not_of("._z")); // Skip . and _ prefixes. // TODO: Add support for relocations in other sections as needed. // Record relocations for the debug_info and debug_line sections. diff --git a/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc b/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc index 966a465f904..6c506381aa5 100644 --- a/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc +++ b/test/DebugInfo/Inputs/dwarfdump-test-zlib.cc @@ -22,6 +22,7 @@ int main() { // $ cp dwarfdump-test-zlib.cc /tmp/dbginfo // $ cd /tmp/dbginfo // $ clang++ -g dwarfdump-test-zlib.cc -Wl,--compress-debug-sections=zlib -o dwarfdump-test-zlib.elf-x86-64 +// $ clang++ -g dwarfdump-test-zlib.cc -Wa,--compress-debug-sections=zlib -c -o dwarfdump-test-zlib.o.elf-x86-64 // $ clang++ -g dwarfdump-test-zlib.cc -Wl,--compress-debug-sections=zlib-gnu -o dwarfdump-test-zlibgnu.elf-x86-64 // llvm-readobj -sections can be used to see that outputs really contain the compressed sections, also output in both -// cases is slightly smaller, that is because of compression. \ No newline at end of file +// cases is slightly smaller, that is because of compression. diff --git a/test/DebugInfo/Inputs/dwarfdump-test-zlib.o.elf-x86-64 b/test/DebugInfo/Inputs/dwarfdump-test-zlib.o.elf-x86-64 new file mode 100644 index 0000000000000000000000000000000000000000..55f5cb0d157c7c33ad992534a7f5ef3bec3ba08d GIT binary patch literal 4688 zcmbtWdr*|u6~D{!e(1&+1vJT$kP2=1SOf*)BUog!ybKaCYNW6)aR+wU*#{z4MT~@X zr9N;cLN^Jvi8V$I8tX`_h5$;&_eAaJq%~+`sxhQQw$V(Oq4(_G6FzU2{?jvjd(Qct z=e_sb?_+&VfigfMAxIK3myBwN5^^bGRL=5>StOQvmZ%)JRU5yNshV>J9czaj_J>aU zu*%VQ2Ygh`YX_b7hdy~@udK9Z8~T47K9vK-?d7VH-^7=d0K6KbU zD(707+~Y_u?LjN?)fd^*rPO1vv}ajC?ys5G-CB2P^Q>{*3fcSz3Bqpqy}?XL(Iqp9 zJ#y%+4vq2I^$q==z*yONRqDTUwXb)#E8m>n*FLk^bfnF-sHfzBXV2Apoo$XSPpvvn)(NtMCGwZ9pdkWW8hAgz)N?mjLwJd{fAc1`J?RdK~Z`ZQ{ zt0m9fn4b~so|SjnIWQ0x8WC0fmu;O}q#c&Df5a9ZkBEEqE5*UHA0CKyo;WApDp&2> zdH9TB$|_fO_ZLqON_I}3v}m+XiK^CZRqM*j)kHE*DGO6;r3H${xw6#8PinU;e{Dm2 z>gC?piN6VI=<7~9M9%$F2w1qkyfQlGdRCh1?d^^YPd$+LwDv{3GA+2~Z%-zC7}fMc`vtQmaMt^Qny_o3>vjoY9m3r9&8^35^#c{M z`nyFN*1WU*>3C^Pkd#QuCWnkRNQ!FR+VXaR&O{L%+eZyU>hkh(4Uvpj1_u|)FBG0T zr@a&q{%*?Dz#YPSot>@=nT}JZ7B3E+*|RF`{ob7uI}(XKY{Kd1XfhaMI_UJuSSX)w zHyT%GSE;R5@@J|VOg69*qODS!D&#eKi`7tVlFtwnfIo)6h&I1JfW(p z#+WR^rYAz=MEId3sVgRuTA5@@WJu^XS}mGlQ@s{Kl7Y_~Cu&>B z&d_J~|1)POJTHH9Omy*?$DN-Q=UF3c^TKT(Sf;mlcC^fUAv!vvHM+gNwPkxry)%2e zYwP*O&LfVJ`sUU?r|XULjjqfF*MnQYixUq{+kY!-lclbp zV6R29fA;d1m;P|wvt+4p*OGb*G1SCQK{1h^I3h z`vP3Nd$F9qj_JP;;o?*H6~kdhe0SIfWQzQupW{rQ!{PV|%IEMKOkc|3{YA1}?i=*8jp=W2IQqA7_#c@5HisW$`cV#VVR|>?us`sXM!LcTJeN~U@8|F@ znf?ujw~d9%Ssus%57KNV04847 z5)m%$-zLH#2Ky{xIQGv};t=8D{O^fyaegAy>GT?VMVVTovFK}vV9{5p1)ILsMg(oO z(Ws}NQXl4XGut(`)n>hwfh?G!Cbf}AE%f6H7<01PEJUcVRNKu&@Fg>PK^V z5u@5*B7&*frWamXP?BV|skN1)Y+1?*gMoOv6Uvq?NKuS__fyq6UCtP`?CD_fE{wHO zWiaU(qF-6I!a{o|HoeuBJRkNVm-dvLYckty)@0o(wPl6QZZs!>J*lqBpb@lMBGARy z)EdfH8-f4dlui#)d|sHa2?mbROK{L4;#BekwE>3nh^|>oz&S=-h63ZDKQb2#&tM60 z?%?|abBOmA?^89!9%C_Lc7-KHe~5=~57t6{kz(HdA-Ra!nT+=wO?>}j)&IMn`tW_k zy2wAGn7{g6tRSwFsf4euW%0OA=y#0?ClFv9&ri%z7Q4C_xK|8PnfKl72ZN9~Y(IB{ zA|gJ16Sd)9h}_6ZcK%H)51b#2B%UYk3(Oav6Y|_(ap(sa5bygk#r)MDWQDpQh!V~Z zU%!Uh_?+PXJ*&^#czx~|@ef#h4kQy1AD>BW{`&7=|19D9q5tvp;rmad7@w0uWHx&# zfL%k%wPWrEa^TLkBs-dOAY?&XR-IU diUmUb$@Jmtzep4EYlo0KENKxd2+ZI8`!7(UcEA7t literal 0 HcmV?d00001 diff --git a/test/DebugInfo/dwarfdump-zlib.test b/test/DebugInfo/dwarfdump-zlib.test index d3ef806f3f8..82f29afdebd 100644 --- a/test/DebugInfo/dwarfdump-zlib.test +++ b/test/DebugInfo/dwarfdump-zlib.test @@ -1,6 +1,7 @@ REQUIRES: zlib RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-zlib.elf-x86-64 | FileCheck %s +RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-zlib.o.elf-x86-64 | FileCheck %s RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-zlibgnu.elf-x86-64 | FileCheck %s CHECK: .debug_abbrev contents @@ -10,3 +11,7 @@ CHECK: .debug_abbrev contents // that sections names are properly shown in zlib-gnu style (without additional 'z' prefix). CHECK: .debug_info contents CHECK: 0x00000000: Compile Unit: length = 0x00000144 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x08 (next unit at 0x00000148) + +// Also check that relocations in the .zdebug sections are handled correctly: +CHECK: DW_AT_ranges {{.*}} (0x00000000{{$}} +CHECK-NEXT: [0x -- 2.50.1