diff options
author | Tom de Vries <tdevries@suse.de> | 2024-05-15 09:45:55 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-05-15 09:45:55 +0200 |
commit | 7e4f1f4bc7ffe26524a6eb0685bd22863cdfde1e (patch) | |
tree | 98b6876e7486c33461003830f32102a3617c3b13 /binutils/testsuite | |
parent | 27f4c4bd1987980e86cc4e8468aaeb0d0ad7ada8 (diff) | |
download | gdb-7e4f1f4bc7ffe26524a6eb0685bd22863cdfde1e.zip gdb-7e4f1f4bc7ffe26524a6eb0685bd22863cdfde1e.tar.gz gdb-7e4f1f4bc7ffe26524a6eb0685bd22863cdfde1e.tar.bz2 |
[binutils/readelf] Fix printing of dwarf4 .debug_str_offsets.dwo
When compiling a hello world with dwarf4 split dwarf:
...
$ gcc -gdwarf-4 -gsplit-dwarf hello.c -save-temps -dA
...
we have in a-hello.s these three initial entries in .debug_str_offsets:
...
.section .debug_str_offsets.dwo,"e",@progbits
.4byte 0 // indexed string 0x0: short int
.4byte 0xa // indexed string 0x1: /home/vries/binutils
.4byte 0x1f // indexed string 0x2: main
...
but "readelf -ws a.out" starts at the third entry:
...
Contents of the .debug_str_offsets.dwo section (loaded from a-hello.dwo):
Length: 0x30
Index Offset [String]
0 00000000 main
...
This is a regression since commit 407115429b3 ("Modified changes for
split-dwarf and dwarf-5."), which introduced a variable
debug_str_offsets_hdr_len in display_debug_str_offsets.
Fix this by setting display_debug_str_offsets to 0 for the dwarf4 case.
PR 31734
Diffstat (limited to 'binutils/testsuite')
3 files changed, 21 insertions, 0 deletions
diff --git a/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.d b/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.d new file mode 100644 index 0000000..23581e7 --- /dev/null +++ b/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.d @@ -0,0 +1,14 @@ +#name: readelf -ws readelf-debug-str-offsets-dw4 +#source: readelf-debug-str-offsets-dw4.s +#readelf: -ws + +Contents of the .debug_str.dwo section: + + 0x00000000 46495253 54005345 434f4e44 00 FIRST.SECOND. + +Contents of the .debug_str_offsets.dwo section: + + Length: 0x8 + Index Offset \[String\] + 0 00000000 FIRST + 1 00000006 SECOND diff --git a/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.s b/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.s new file mode 100644 index 0000000..108f260 --- /dev/null +++ b/binutils/testsuite/binutils-all/readelf-debug-str-offsets-dw4.s @@ -0,0 +1,6 @@ + .section .debug_str.dwo,"MS",%progbits,1 + .asciz "FIRST" + .asciz "SECOND" + .section .debug_str_offsets.dwo,"MS",%progbits,1 + .4byte 0 + .4byte 6 diff --git a/binutils/testsuite/binutils-all/readelf.exp b/binutils/testsuite/binutils-all/readelf.exp index 09ed75f..9f20cb4 100644 --- a/binutils/testsuite/binutils-all/readelf.exp +++ b/binutils/testsuite/binutils-all/readelf.exp @@ -402,6 +402,7 @@ if {[which $AS] != 0} then { run_dump_test "retain1b" run_dump_test "readelf-maskos-1a" run_dump_test "readelf-maskos-1b" + run_dump_test "readelf-debug-str-offsets-dw4" if {![istarget *-*-hpux*]} then { run_dump_test pr26548 if {![binutils_assemble_flags $srcdir/$subdir/pr26548.s tmpdir/pr26548e.o {--defsym ERROR=1}]} then { |