diff options
author | Tom de Vries <tdevries@suse.de> | 2019-06-11 13:22:27 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2019-06-11 13:22:27 +0200 |
commit | 8c2e74f18120dd2f2da7d653466c79dea6841b5e (patch) | |
tree | 75e2f0f0e9604b192da7aac3f66cf48bd1dc571f /gdb/testsuite/gdb.dwarf2 | |
parent | [gdb/testsuite] Add readnow.exp (diff) | |
download | binutils-gdb-8c2e74f18120dd2f2da7d653466c79dea6841b5e.tar.gz binutils-gdb-8c2e74f18120dd2f2da7d653466c79dea6841b5e.tar.bz2 binutils-gdb-8c2e74f18120dd2f2da7d653466c79dea6841b5e.zip |
[gdb/testsuite] Fix main high_pc in nonvar-access.exp
When running gdb.dwarf2/nonvar-access.exp with board readnow, we have:
...
FAIL: gdb.dwarf2/nonvar-access.exp: print/x def_implicit_s
...
and 12 more similar failures.
I've tracked this down to the range of main being hardcoded to
[_main, _main+0x10000) in the dwarf assembly:
...
DW_TAG_subprogram {
{name main}
{DW_AT_external 1 flag}
{low_pc [gdb_target_symbol main] DW_FORM_addr}
{high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr}
} {
...
which overlaps with the .debug_info for the elf-init.c CU (containing
__libc_csu_init and __libc_csu_fini).
Fix this by using function_range to find the actual range of main.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2019-06-11 Tom de Vries <tdevries@suse.de>
PR testsuite/24521
* gdb.dwarf2/nonvar-access.exp: Fix main high_pc.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/nonvar-access.exp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp index 594f5908102..190ad5d764d 100644 --- a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp +++ b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp @@ -27,6 +27,12 @@ standard_testfile main.c nonvar-access-dw.S set asm_file [standard_output_file $srcfile2] Dwarf::assemble $asm_file { + global srcdir subdir srcfile + + set range [function_range main ${srcdir}/${subdir}/${srcfile}] + set main_start [lindex $range 0] + set main_length [lindex $range 1] + cu {} { compile_unit { {DW_AT_name main.c} @@ -98,7 +104,7 @@ Dwarf::assemble $asm_file { {name main} {DW_AT_external 1 flag} {low_pc [gdb_target_symbol main] DW_FORM_addr} - {high_pc [gdb_target_symbol main]+0x10000 DW_FORM_addr} + {high_pc "$main_start + $main_length" DW_FORM_addr} } { # Simple variable without location. DW_TAG_variable { |