gcc-gdb-test.exp: Handle old GDB "short int" and "long int" types.

Old GDB might show short and long as short int and long int. This made
gcc.dg/guality/const-volatile.c ans restrict.c fail on older GDBs.
According to the patch that changed this in newer versions of GDB
this was a bug: https://sourceware.org/ml/gdb-patches/2012-09/msg00455.html

The patch transforms the types "short int" and "long int" coming from
GDB to plain "short" and "long". And a variant has been added to the
const-volatile.c testcase to make sure short and long long are handled
correctly now with older GDB.

gcc/testsuite/ChangeLog

	* lib/gcc-gdb-test.exp (gdb-test): Transform gdb types "short int"
	and "long int" to plain "short" and "long".
	* gcc.dg/guality/const-volatile.c (struct bar): New struct
	containing short and long long fields.
	(bar): New variable to test the type.

From-SVN: r215501
This commit is contained in:
Mark Wielaard 2014-09-23 11:06:57 +00:00 committed by Mark Wielaard
parent 6c979aa1bf
commit 0043a6c9b9
3 changed files with 23 additions and 0 deletions

View file

@ -1,3 +1,11 @@
2014-09-20 Mark Wielaard <mjw@redhat.com>
* lib/gcc-gdb-test.exp (gdb-test): Transform gdb types "short int"
and "long int" to plain "short" and "long".
* gcc.dg/guality/const-volatile.c (struct bar): New struct
containing short and long long fields.
(bar): New variable to test the type.
2014-09-23 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/62155

View file

@ -28,6 +28,16 @@ struct foo
const signed char csc;
};
struct bar
{
short s;
const short cs;
volatile short vs;
const volatile short cvs;
volatile long long vll;
};
struct bar bar __attribute__((used));
struct foo foo;
const struct foo cfoo;
volatile struct foo vfoo;
@ -72,6 +82,7 @@ main (int argc, char **argv)
/* { dg-final { gdb-test 50 "type:cvip" "int * const volatile" } } */
/* { dg-final { gdb-test 50 "type:bar" "struct bar { short s; const short cs; volatile short vs; const volatile short cvs; volatile long long vll; }" } } */
/* { dg-final { gdb-test 50 "type:foo" "struct foo { const long cli; const signed char csc; }" } } */
/* { dg-final { gdb-test 50 "type:cfoo" "const struct foo { const long cli; const signed char csc; }" } } */
/* { dg-final { gdb-test 50 "type:vfoo" "volatile struct foo { const long cli; const signed char csc; }" } } */

View file

@ -111,6 +111,10 @@ proc gdb-test { args } {
# Squash all extra whitespace/newlines that gdb might use for
# "pretty printing" into one so result is just one line.
regsub -all {[\n\r\t ]+} $type " " type
# Old gdb might output "long int" instead of just "long"
# and "short int" instead of just "short". Canonicalize.
regsub -all {\mlong int\M} $type "long" type
regsub -all {\mshort int\M} $type "short" type
set expected [lindex $args 2]
if { $type == $expected } {
pass "$testname"