[binutils-gdb] [gdb/testsuite] Fix info-types.exp with gcc/g++ 4.8

Tom de Vries vries@sourceware.org
Thu Oct 3 13:03:00 GMT 2019


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

commit 42275044919fc1dda740d6172d0617f12a0ca2cf
Author: Tom de Vries <tdevries@suse.de>
Date:   Thu Oct 3 15:02:58 2019 +0200

    [gdb/testsuite] Fix info-types.exp with gcc/g++ 4.8
    
    The gdb.base/info-types.exp test-case FAILs with gcc/g++ 4.8 because the DWARF
    record for the 'unsigned int' type is missing in the executables, while it is
    present for gcc/g++ 7.4.1.
    
    For a minimal example using gcc 7.4.1:
    ...
    $ echo "enum enum_t { AA, BB, CC }; enum enum_t var;" > enum.c
    $ gcc enum.c -c -g
    ...
    we find that the enum type has DW_AT_encoding 'unsigned':
     <1><1d>: Abbrev Number: 2 (DW_TAG_enumeration_type)
        <1e>   DW_AT_name        : (indirect string, offset: 0x1f): enum_t
        <22>   DW_AT_encoding    : 7        (unsigned)
        <23>   DW_AT_byte_size   : 4
        <24>   DW_AT_type        : <0x3e>
        <28>   DW_AT_decl_file   : 1
        <29>   DW_AT_decl_line   : 1
        <2a>   DW_AT_sibling     : <0x3e>
    ...
    and a DW_AT_type reference to the type 'unsigned int':
    ...
     <1><3e>: Abbrev Number: 4 (DW_TAG_base_type)
        <3f>   DW_AT_byte_size   : 4
        <40>   DW_AT_encoding    : 7        (unsigned)
        <41>   DW_AT_name        : (indirect string, offset: 0x26): unsigned int
    ...
    
    With gcc 4.8.5 however, we have no 'unsigned' encoding, and no DW_AT_type:
    ...
     <1><1d>: Abbrev Number: 2 (DW_TAG_enumeration_type)
        <1e>   DW_AT_name        : (indirect string, offset: 0x1f): enum_t
        <22>   DW_AT_byte_size   : 4
        <23>   DW_AT_decl_file   : 1
        <24>   DW_AT_decl_line   : 1
        <25>   DW_AT_sibling     : <0x39>
    ...
    as well as no record for 'unsigned int'.
    
    Make the test-case pass with gcc/g++ 4.8 by making the presence of the
    'unsigned int' type optional.
    
    Tested on x86_64-linux.
    
    gdb/testsuite/ChangeLog:
    
    2019-10-03  Tom de Vries  <tdevries@suse.de>
    
    	PR testsuite/25059
    	* gdb.base/info-types.exp: Make the presence of the 'unsigned int'
    	type optional.

Diff:
---
 gdb/testsuite/ChangeLog               | 6 ++++++
 gdb/testsuite/gdb.base/info-types.exp | 8 ++++----
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 8f01b87..0675e85 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-10-03  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/25059
+	* gdb.base/info-types.exp: Make the presence of the 'unsigned int'
+	type optional.
+
 2019-10-02  Andreas Arnez  <arnez@linux.ibm.com>
 
 	* gdb.python/py-format-string.c (string.h): New include.
diff --git a/gdb/testsuite/gdb.base/info-types.exp b/gdb/testsuite/gdb.base/info-types.exp
index fd190ae..8c1ddac 100644
--- a/gdb/testsuite/gdb.base/info-types.exp
+++ b/gdb/testsuite/gdb.base/info-types.exp
@@ -85,8 +85,8 @@ proc run_test { lang } {
 		 "39:\[\t \]+typedef enum_t nested_enum_t;" \
 		 "19:\[\t \]+typedef float nested_float_t;" \
 		 "18:\[\t \]+typedef int nested_int_t;" \
-		 "62:\[\t \]+typedef union_t nested_union_t;" \
-		 "\[\t \]+unsigned int(" \
+		 "62:\[\t \]+typedef union_t nested_union_t;(" \
+		 "\[\t \]+unsigned int)?(" \
 		 "" \
 		 "File .*:.*)?" ]
     } else {
@@ -117,8 +117,8 @@ proc run_test { lang } {
 		 "19:\[\t \]+typedef float nested_float_t;" \
 		 "18:\[\t \]+typedef int nested_int_t;" \
 		 "62:\[\t \]+typedef union union_t nested_union_t;" \
-		 "56:\[\t \]+union union_t;" \
-		 "\[\t \]+unsigned int(" \
+		 "56:\[\t \]+union union_t;(" \
+		 "\[\t \]+unsigned int)?(" \
 		 "" \
 		 "File .*:.*)?" ]
     }



More information about the Gdb-cvs mailing list