[gdb/testsuite] Add missing .debug_abbrev terminator in dw2-cu-size.S
authorTom de Vries <tdevries@suse.de>
Tue, 30 Mar 2021 13:16:26 +0000 (15:16 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 30 Mar 2021 13:16:26 +0000 (15:16 +0200)
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.

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/ChangeLog
gdb/testsuite/gdb.dwarf2/dw2-cu-size.S

index 628261b5fbe15ae0f783ccdfd0a899aed83d5c30..f70d56417a1a3685030621c6282610d4c28f9016 100644 (file)
@@ -1,3 +1,8 @@
+2021-03-30  Tom de Vries  <tdevries@suse.de>
+
+       PR testsuite/27604
+       * gdb.dwarf2/dw2-cu-size.S: Add missing .debug_abbrev terminator.
+
 2021-03-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
 
        * gdb.mi/user-selected-context-sync.exp: Spin on a variable in
index af951ea8777ec895dbcd4b9bac71e554fa6b06ce..ebbfdb29c5c8720a972a52639b91e0698ad6079e 100644 (file)
 
        .byte           0x0                     /* Terminator */
        .byte           0x0                     /* Terminator */
+
+       .byte           0x0                     /* Terminator .debug_abbrev
+                                                  section.  */