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

Tom de Vries vries@sourceware.org
Tue Mar 30 13:16:29 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b953e70356feb6161a2c1c5b18dbebcdb7ea0c94

commit b953e70356feb6161a2c1c5b18dbebcdb7ea0c94
Author: Tom de Vries <tdevries@suse.de>
Date:   Tue Mar 30 15:16:26 2021 +0200

    [gdb/testsuite] Add missing .debug_abbrev terminator in dw2-cu-size.S
    
    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.

Diff:
---
 gdb/testsuite/ChangeLog                | 5 +++++
 gdb/testsuite/gdb.dwarf2/dw2-cu-size.S | 3 +++
 2 files changed, 8 insertions(+)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 628261b5fbe..f70d56417a1 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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
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.  */


More information about the Gdb-cvs mailing list