From 77e7aaa4bd980fb96244b874bc867e20b399fe60 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 7 May 2019 10:58:57 +0200 Subject: [PATCH] [gdb/testsuite] Fix .debug_aranges in dw2-case-insensitive-debug.S When running gdb.dwarf2/dw2-case-insensitive.exp with target board cc-with-debug-names, we run into: ... FAIL: gdb.dwarf2/dw2-case-insensitive.exp: regexp case-sensitive off \ (GDB internal error) ... in more detail: ... (gdb) info functions fUnC_lang gdb/dwarf2read.c:5293: internal-error: \ compunit_symtab* dw2_find_pc_sect_compunit_symtab(objfile*, \ bound_minimal_symbol, CORE_ADDR, obj_section*, int): \ Assertion `result != NULL' failed. ... The problem is that the .debug_aranges section in dw2-case-insensitive-debug.S contains a debug_info_offset which is set to 0: ... .section .debug_aranges,"",@progbits .4byte .Laranges_end - .Laranges_start .Laranges_start: .2byte 0x2 .4byte 0 ... while the compilation unit at offset 0 in the .debug_section of the executable is in fact not the compilation unit generated from dw2-case-insensitive-debug.S. This happens when linked in object files contain dwarf info and are placed in the .debug_info section before the compilation unit generated from dw2-case-insensitive-debug.S. Fix this by defining the debug_info_offset field using the label .Lcu1_begin that defines the start of the compilation unit: ... - .4byte 0 + .4byte .Lcu1_begin ... Tested on x86_64-linux with native, cc-with-gdb-index and cc-with-debug-names. gdb/testsuite/ChangeLog: 2019-05-07 Tom de Vries PR testsuite/24522 * gdb.dwarf2/dw2-case-insensitive-debug.S: Fix debug_info_offset in .debug_aranges section. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e2b507574a5..c514c0388cd 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-05-07 Tom de Vries + + PR testsuite/24522 + * gdb.dwarf2/dw2-case-insensitive-debug.S: Fix debug_info_offset in + .debug_aranges section. + 2019-05-07 Tom de Vries PR testsuite/24159 diff --git a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S index f12a82112b5..7f5e1a5d422 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S +++ b/gdb/testsuite/gdb.dwarf2/dw2-case-insensitive-debug.S @@ -64,7 +64,7 @@ .4byte .Laranges_end - .Laranges_start // Length of Address Ranges Info .Laranges_start: .2byte 0x2 // DWARF Version - .4byte 0 // .Ldebug_info0 - Offset of Compilation Unit Info + .4byte .Lcu1_begin // .Ldebug_info0 - Offset of Compilation Unit Info .byte PTRBITS / 8 // Size of Address .byte 0 // Size of Segment Descriptor .2byte 0 // Pad to 16 byte boundary -- 2.30.2