[gdb/testsuite] Add missing terminator in Dwarf::_macro_unit
When printing complaints with one of the execs from test-case gdb.dwarf2/macro-source-path.exp, we run into: ... $ gdb -q -batch \ -iex "set complaints 100" \ macro-source-path-clang14-dw4-absolute-cwd-32 \ -ex "p main" During symbol reading: debug info runs off end of .debug_macro section \ [in module macro-source-path-clang14-dw4-absolute-cwd-32] $1 = {int ()} 0x4004b7 <main> ... and readelf complains more specifically: ... Contents of the .debug_macro section: Offset: 0 Version: 5 Offset size: 4 Offset into .debug_line: 0xe3 DW_MACRO_define - lineno : 0 macro : ONE 1 DW_MACRO_define_strp - lineno : 0 macro : THREE 3 DW_MACRO_start_file - lineno: 0 filenum: 1 filename: test.c DW_MACRO_define - lineno : 1 macro : TWO 2 DW_MACRO_end_file readelf: Error: .debug_macro section not zero terminated ... Fix this by adding the missing terminator in Dwarf::_macro_unit. Tested on x86_64-linux. Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
parent
f617661c11
commit
e75d765e2b
2 changed files with 13 additions and 0 deletions
|
@ -139,6 +139,17 @@ proc do_test { test_name lines_version DW_AT_name main_file_idx directories
|
|||
return
|
||||
}
|
||||
|
||||
with_complaints 5 {
|
||||
gdb_test_multiple "print main" "no complaints" {
|
||||
-wrap -re "During symbol reading: .*" {
|
||||
fail $gdb_test_name
|
||||
}
|
||||
-wrap -re "" {
|
||||
pass $gdb_test_name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ![runto_main] {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -2252,6 +2252,8 @@ namespace eval Dwarf {
|
|||
with_override Dwarf::end_file Dwarf::_macro_unit_end_file {
|
||||
uplevel $body
|
||||
}}}}
|
||||
|
||||
_op .byte 0x0 "# End macro unit"
|
||||
}
|
||||
|
||||
# Emit a DW_MACRO_define entry.
|
||||
|
|
Loading…
Add table
Reference in a new issue