aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2019-10-03 15:02:58 +0200
committerTom de Vries <tdevries@suse.de>2019-10-03 15:02:58 +0200
commit42275044919fc1dda740d6172d0617f12a0ca2cf (patch)
treea0d4f8967a4f60c769acd6c5670c3a25ce4e5908 /gdb
parenta8b3b8e93e36d2c9efe346f04f3bbd767e3cc0f0 (diff)
downloadgdb-42275044919fc1dda740d6172d0617f12a0ca2cf.zip
gdb-42275044919fc1dda740d6172d0617f12a0ca2cf.tar.gz
gdb-42275044919fc1dda740d6172d0617f12a0ca2cf.tar.bz2
[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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/info-types.exp8
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 .*:.*)?" ]
}