aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-08-27 17:10:23 +0200
committerTom de Vries <tdevries@suse.de>2021-08-27 17:10:23 +0200
commit426f7bbfd4179a5b81f87fa324a854c370e4b07a (patch)
tree3f2fe0306d13d19a37ed01483bbb42a0dcb1eb36
parent6a6429e19b0aa87f95cd20cb9df2715e6d3df6f1 (diff)
downloadgdb-426f7bbfd4179a5b81f87fa324a854c370e4b07a.zip
gdb-426f7bbfd4179a5b81f87fa324a854c370e4b07a.tar.gz
gdb-426f7bbfd4179a5b81f87fa324a854c370e4b07a.tar.bz2
[gdb/testsuite] Generate .debug_aranges in gdb.dlang/watch-loc.exp
Before commit 5ef670d81fd "[gdb/testsuite] Add dummy start and end CUs in dwarf assembly" we had in exec outputs/gdb.dlang/watch-loc/watch-loc a D compilation unit at offset 0xc7: ... Compilation Unit @ offset 0xc7: Length: 0x4c (32-bit) Version: 4 Abbrev Offset: 0x64 Pointer Size: 8 <0><d2>: Abbrev Number: 2 (DW_TAG_compile_unit) <d3> DW_AT_language : 19 (D) ... with a corresponding .debug_aranges entry: ... Offset into .debug_info: 0xc7 Pointer Size: 4 Segment Size: 0 Address Length 004004a7 0000000b 00000000 00000000 ... After that commit we have a dummy CU at offset 0xc7 and the D compilation unit at offset 0xd2: ... Compilation Unit @ offset 0xc7: Length: 0x7 (32-bit) Version: 4 Abbrev Offset: 0x64 Pointer Size: 8 Compilation Unit @ offset 0xd2: Length: 0x4c (32-bit) Version: 4 Abbrev Offset: 0x65 Pointer Size: 8 <0><dd>: Abbrev Number: 2 (DW_TAG_compile_unit) <de> DW_AT_language : 19 (D) ... while the .debug_aranges entry still points to 0xc7. The problem is that the test-case uses a hack (quoting from commit 75f06e9dc59): ... [ Note: this is a non-trivial test-case. The file watch-loc-dw.S contains a .debug_info section, but not an .debug_aranges section or any actual code. The file watch-loc.c contains code and a .debug_aranges section, but no other debug section. So, the intent for the .debug_aranges section in watch-loc.c is to refer to a compilation unit in the .debug_info section in watch-loc-dw.S. ] ... and adding the dummy CU caused that hack to stop working. Fix this by moving the generation of .debug_aranges from watch-loc.c to watch-loc.exp, such that we have: ... Offset into .debug_info: 0xd2 Pointer Size: 4 Segment Size: 0 Address Length 004004a7 0000000b 00000000 00000000 ... Tested on x86_64-linux.
-rw-r--r--gdb/testsuite/gdb.dlang/watch-loc.c28
-rw-r--r--gdb/testsuite/gdb.dlang/watch-loc.exp21
2 files changed, 8 insertions, 41 deletions
diff --git a/gdb/testsuite/gdb.dlang/watch-loc.c b/gdb/testsuite/gdb.dlang/watch-loc.c
index 6fd7cf1..b008967 100644
--- a/gdb/testsuite/gdb.dlang/watch-loc.c
+++ b/gdb/testsuite/gdb.dlang/watch-loc.c
@@ -35,31 +35,3 @@ main (void)
{
return _Dmain ();
}
-
-#ifdef WITH_DEBUG_SECTIONS
-#define xstr(s) str(s)
-#define str(s) #s
-/* The .debug_names-based index support depends on .debug_aranges
- generated by GCC. (.gdb_index includes a gdb-generated map
- instead.) */
-asm (
-" .pushsection .debug_info,\"\",%progbits \n"
-".Lcu1_begin:"
-" .popsection \n"
-" .pushsection .debug_aranges,\"\",%progbits \n"
-" .4byte .Laranges_end - .Laranges_start \n" // Length of Address Ranges Info
-".Laranges_start: \n"
-" .2byte 0x2 \n" // DWARF Version
-" .4byte .Lcu1_begin\n" // .Ldebug_info0 - Offset of Compilation Unit Info
-" .byte 4 \n" // Size of Address
-" .byte 0 \n" // Size of Segment Descriptor
-" .2byte 0 \n" // Pad to 16 byte boundary
-" .2byte 0 \n"
-" .4byte " xstr(DMAIN_START_0) xstr(DMAIN_START_1) xstr(DMAIN_START_2) "\n" // Address
-" .4byte " xstr(DMAIN_LENGTH) "\n" // Length
-" .4byte 0 \n"
-" .4byte 0 \n"
-".Laranges_end: \n"
-" .popsection \n"
-);
-#endif
diff --git a/gdb/testsuite/gdb.dlang/watch-loc.exp b/gdb/testsuite/gdb.dlang/watch-loc.exp
index 6100975..6e8b26e 100644
--- a/gdb/testsuite/gdb.dlang/watch-loc.exp
+++ b/gdb/testsuite/gdb.dlang/watch-loc.exp
@@ -34,7 +34,9 @@ lassign [function_range _Dmain ${srcdir}/${subdir}/${srcfile}] \
# Make some DWARF for the test.
set asm_file [standard_output_file $srcfile2]
Dwarf::assemble $asm_file {
- cu {} {
+ global dmain_start dmain_length
+
+ cu { label cu_start } {
compile_unit {
{language @DW_LANG_D}
} {
@@ -64,21 +66,14 @@ Dwarf::assemble $asm_file {
}
}
}
-}
-set dmain_start_list [split $dmain_start]
-set dmain_start_0 [lindex $dmain_start_list 0]
-set dmain_start_1 [lindex $dmain_start_list 1]
-set dmain_start_2 [lindex $dmain_start_list 2]
+ aranges {} cu_start {
+ arange $dmain_start $dmain_length
+ }
+}
if { [prepare_for_testing "failed to prepare" ${testfile} \
- [list $srcfile $asm_file] \
- "nodebug \
- additional_flags=-DWITH_DEBUG_SECTIONS \
- additional_flags=-DDMAIN_START_0=$dmain_start_0 \
- additional_flags=-DDMAIN_START_1=$dmain_start_1 \
- additional_flags=-DDMAIN_START_2=$dmain_start_2 \
- additional_flags=-DDMAIN_LENGTH=$dmain_length"] } {
+ [list $srcfile $asm_file] {nodebug}] } {
return -1
}