[committed,gdb/testsuite] Add missing .debug_abbrev terminator in dw2-cu-size.S

Message ID 20210330131700.GA8241@delia
State New
Headers show
Series
  • [committed,gdb/testsuite] Add missing .debug_abbrev terminator in dw2-cu-size.S
Related show

Commit Message

Tom de Vries March 30, 2021, 1:17 p.m.
Hi,

Since commit 27012aba8a6 "Remove Irix 6 workaround from DWARF abbrev reader"
we have:
...
(gdb) file dw2-cu-size^M
Reading symbols from dw2-cu-size...^M
DW_FORM_strp pointing outside of .debug_str section [in module dw2-cu-size]^M
(No debugging symbols found in dw2-cu-size)^M
(gdb) ptype noloc^M
No symbol table is loaded.  Use the "file" command.^M
(gdb) FAIL: gdb.dwarf2/dw2-cu-size.exp: ptype noloc
...

The problem is a missing .debug_abbrev terminator in dw2-cu-size.S, which
causes the .debug_abbrev contribution to be merged with the next:
...
 Number TAG (0x9b)
   1      DW_TAG_compile_unit    [has children]
    DW_AT_name         DW_FORM_string
    DW_AT_producer     DW_FORM_string
    DW_AT_language     DW_FORM_data1
    DW_AT value: 0     DW_FORM value: 0
   2      DW_TAG_variable    [no children]
    DW_AT_name         DW_FORM_string
    DW_AT_type         DW_FORM_ref4
    DW_AT_external     DW_FORM_flag
    DW_AT value: 0     DW_FORM value: 0
   3      DW_TAG_base_type    [no children]
    DW_AT_name         DW_FORM_string
    DW_AT_byte_size    DW_FORM_data1
    DW_AT_encoding     DW_FORM_data1
    DW_AT value: 0     DW_FORM value: 0
   4      DW_TAG_const_type    [no children]
    DW_AT_type         DW_FORM_ref_udata
    DW_AT value: 0     DW_FORM value: 0
   1      DW_TAG_compile_unit    [has children]
    DW_AT_producer     DW_FORM_strp
    DW_AT_language     DW_FORM_data1
    DW_AT_name         DW_FORM_strp
    DW_AT_comp_dir     DW_FORM_strp
    DW_AT_low_pc       DW_FORM_addr
    DW_AT_high_pc      DW_FORM_data8
    DW_AT_stmt_list    DW_FORM_sec_offset
    DW_AT value: 0     DW_FORM value: 0
...
and consequently, abbreviation code 1 no longer refers to a unique entry.

The eventually causes us to access the first attribute of this DIE:
...
 <0><124>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <125>   DW_AT_name        : file1.txt
    <12f>   DW_AT_producer    : GNU C 3.3.3
    <13b>   DW_AT_language    : 1       (ANSI C)
...
which has form DW_FORM_string, using DW_FORM_strp.

Fix this by adding the missing .debug_abbrev terminator in dw2-cu-size.S.

Committed to trunk.

Thanks,
- Tom

[gdb/testsuite] Add missing .debug_abbrev terminator in dw2-cu-size.S

gdb/testsuite/ChangeLog:

2021-03-30  Tom de Vries  <tdevries@suse.de>

	PR testsuite/27604
	* gdb.dwarf2/dw2-cu-size.S: Add missing .debug_abbrev terminator.

---
 gdb/testsuite/gdb.dwarf2/dw2-cu-size.S | 3 +++
 1 file changed, 3 insertions(+)

Patch

diff --git a/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S b/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S
index af951ea8777..ebbfdb29c5c 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S
+++ b/gdb/testsuite/gdb.dwarf2/dw2-cu-size.S
@@ -104,3 +104,6 @@ 
 
 	.byte		0x0			/* Terminator */
 	.byte		0x0			/* Terminator */
+
+	.byte		0x0			/* Terminator .debug_abbrev
+						   section.  */