This is the mail archive of the mailing list for the GDB project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed][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.

Committed to trunk.

- Tom

[gdb/testsuite] Fix main high_pc in nonvar-access.exp


2019-06-11  Tom de Vries  <>

	PR testsuite/24521
	* gdb.dwarf2/nonvar-access.exp: Fix main high_pc.

 gdb/testsuite/gdb.dwarf2/nonvar-access.exp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp
index 594f590810..190ad5d764 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 {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]