gas: Fix .debug_info CU header for --gdwarf-5
DWARF5 CU headers have a new unit type field and move the abbrev offset to the end of the header. gas/ChangeLog: * dwarf2dbg.c (out_debug_info): Emit unit type and abbrev offset for DWARF5. * gas/testsuite/gas/elf/dwarf-4-cu.d: New file. * gas/testsuite/gas/elf/dwarf-4-cu.s: Likewise. * gas/testsuite/gas/elf/dwarf-5-cu.d: Likewise. * gas/testsuite/gas/elf/dwarf-5-cu.s: Likewise. * testsuite/gas/elf/elf.exp: Run dwarf-4-cu and dwarf-5-cu.
This commit is contained in:
parent
25b1f10d9b
commit
a3b3e8586d
@ -1,3 +1,13 @@
|
||||
2020-08-02 Mark Wielaard <mark@klomp.org>
|
||||
|
||||
* dwarf2dbg.c (out_debug_info): Emit unit type and abbrev offset
|
||||
for DWARF5.
|
||||
* gas/testsuite/gas/elf/dwarf-4-cu.d: New file.
|
||||
* gas/testsuite/gas/elf/dwarf-4-cu.s: Likewise.
|
||||
* gas/testsuite/gas/elf/dwarf-5-cu.d: Likewise.
|
||||
* gas/testsuite/gas/elf/dwarf-5-cu.s: Likewise.
|
||||
* testsuite/gas/elf/elf.exp: Run dwarf-4-cu and dwarf-5-cu.
|
||||
|
||||
2020-08-02 Mark Wielaard <mark@klomp.org>
|
||||
|
||||
* doc/as.texi (--gdwarf-[345]): Fix typo.
|
||||
|
||||
@ -2464,12 +2464,26 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT ranges_seg,
|
||||
/* DWARF version. */
|
||||
out_two (DWARF2_VERSION);
|
||||
|
||||
/* .debug_abbrev offset */
|
||||
TC_DWARF2_EMIT_OFFSET (section_symbol (abbrev_seg), sizeof_offset);
|
||||
if (DWARF2_VERSION < 5)
|
||||
{
|
||||
/* .debug_abbrev offset */
|
||||
TC_DWARF2_EMIT_OFFSET (section_symbol (abbrev_seg), sizeof_offset);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* unit (header) type */
|
||||
out_byte (DW_UT_compile);
|
||||
}
|
||||
|
||||
/* Target address size. */
|
||||
out_byte (sizeof_address);
|
||||
|
||||
if (DWARF2_VERSION >= 5)
|
||||
{
|
||||
/* .debug_abbrev offset */
|
||||
TC_DWARF2_EMIT_OFFSET (section_symbol (abbrev_seg), sizeof_offset);
|
||||
}
|
||||
|
||||
/* DW_TAG_compile_unit DIE abbrev */
|
||||
out_uleb128 (1);
|
||||
|
||||
|
||||
11
gas/testsuite/gas/elf/dwarf-4-cu.d
Normal file
11
gas/testsuite/gas/elf/dwarf-4-cu.d
Normal file
@ -0,0 +1,11 @@
|
||||
#as: --gdwarf-4
|
||||
#name: DWARF4 CU
|
||||
#readelf: -wi
|
||||
|
||||
#...
|
||||
Compilation Unit @ offset 0x0:
|
||||
Length: 0x.*
|
||||
Version: 4
|
||||
Abbrev Offset: 0x0
|
||||
Pointer Size: .
|
||||
#pass
|
||||
14
gas/testsuite/gas/elf/dwarf-4-cu.s
Normal file
14
gas/testsuite/gas/elf/dwarf-4-cu.s
Normal file
@ -0,0 +1,14 @@
|
||||
.text
|
||||
.file 1 "foo/bar.s"
|
||||
.loc_mark_labels 1
|
||||
.globl foobar
|
||||
.type foobar, %function
|
||||
foobar:
|
||||
.quad 0x1
|
||||
.size foobar, .-foobar
|
||||
|
||||
.globl baz
|
||||
.type baz, %function
|
||||
baz:
|
||||
.quad 0x1
|
||||
.size baz, .-baz
|
||||
11
gas/testsuite/gas/elf/dwarf-5-cu.d
Normal file
11
gas/testsuite/gas/elf/dwarf-5-cu.d
Normal file
@ -0,0 +1,11 @@
|
||||
#as: --gdwarf-5
|
||||
#name: DWARF5 CU
|
||||
#readelf: -wi
|
||||
|
||||
#...
|
||||
Compilation Unit @ offset 0x0:
|
||||
Length: 0x.*
|
||||
Version: 5
|
||||
Abbrev Offset: 0x0
|
||||
Pointer Size: .
|
||||
#pass
|
||||
14
gas/testsuite/gas/elf/dwarf-5-cu.s
Normal file
14
gas/testsuite/gas/elf/dwarf-5-cu.s
Normal file
@ -0,0 +1,14 @@
|
||||
.text
|
||||
.file 1 "foo/bar.s"
|
||||
.loc_mark_labels 1
|
||||
.globl foobar
|
||||
.type foobar, %function
|
||||
foobar:
|
||||
.quad 0x1
|
||||
.size foobar, .-foobar
|
||||
|
||||
.globl baz
|
||||
.type baz, %function
|
||||
baz:
|
||||
.quad 0x1
|
||||
.size baz, .-baz
|
||||
@ -274,6 +274,8 @@ if { [is_elf_format] } then {
|
||||
run_dump_test "dwarf2-18" $dump_opts
|
||||
run_dump_test "dwarf2-19" $dump_opts
|
||||
run_dump_test "dwarf-5-file0" $dump_opts
|
||||
run_dump_test "dwarf-4-cu" $dump_opts
|
||||
run_dump_test "dwarf-5-cu" $dump_opts
|
||||
run_dump_test "pr25917"
|
||||
run_dump_test "bss"
|
||||
run_dump_test "bad-bss"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user