This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [PATCH RFA] New constvars.exp tests
- From: Fernando Nasser <fnasser at redhat dot com>
- To: Kevin Buettner <kevinb at redhat dot com>
- Cc: gdb-patches at sources dot redhat dot com
- Date: Thu, 17 Oct 2002 16:06:51 -0400
- Subject: Re: [PATCH RFA] New constvars.exp tests
- Organization: Red Hat Canada
- References: <1021010203259.ZM16308@localhost.localdomain>
This looks good. If I am not mistaken, your patch that fixes the
printing has been already committed so these tests will either PASS or
XFAIL.
Pleas check it in.
Thanks for the extra tests,
Regards,
Fernando
Kevin Buettner wrote:
I am about to submit a patch which causes ptype to print a struct with
qualifiers correctly. E.g, for the "crass" test, gdb currently
exhibits the following behavior:
(gdb) ptype crass
type = struct crass {
char * constptr;
}
This is incorrect because gdb failed to print a space in between
"const" and "ptr".
Unfortunately, if you don't use Dwarf 2, you'll simply end up seeing
type = struct crass {
char *ptr;
}
...which is also wrong, but not unexpected (hence the xfail).
For the "crisp" test, gdb currently does the following:
(gdb) ptype crisp
type = struct crisp {
char * const*ptr;
}
Here is what I regard to be the correct behavior for these commands:
(gdb) ptype crass
type = struct crass {
char * const ptr;
}
(gdb) ptype crisp
type = struct crisp {
char * const *ptr;
}
Okay?
* gdb.base/constvars.c (struct crass, struct crisp): New structs.
* gdb.base/constvars.exp (ptype crass, ptype crisp): New tests.
Index: testsuite/gdb.base/constvars.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/constvars.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 constvars.c
--- testsuite/gdb.base/constvars.c 16 Apr 1999 01:34:30 -0000 1.1.1.1
+++ testsuite/gdb.base/constvars.c 10 Oct 2002 20:12:12 -0000
@@ -166,6 +166,11 @@ main (void)
const volatile char * const volatile vagary = &victor;
const volatile unsigned char * const volatile vendor = &vicar;
+
+ /* various structs with const members */
+
+ struct crass { char * const ptr; } crass;
+ struct crisp { char * const *ptr; } crisp;
/* misc. references */
/*
Index: testsuite/gdb.base/constvars.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/constvars.exp,v
retrieving revision 1.7
diff -u -p -r1.7 constvars.exp
--- testsuite/gdb.base/constvars.exp 19 Dec 2001 21:08:45 -0000 1.7
+++ testsuite/gdb.base/constvars.exp 10 Oct 2002 20:12:12 -0000
@@ -278,6 +278,11 @@ proc do_constvar_tests {} {
gdb_test "print *locust" " = 70"
local_compiler_xfail_check
gdb_test "ptype locust" "type = double \\* const"
+
+ local_compiler_xfail_check
+ gdb_test "ptype crass" "type = struct crass \{\[\r\n\]+\[\ \t\]+char \\* const ptr;\[\r\n\]+\}"
+ local_compiler_xfail_check
+ gdb_test "ptype crisp" "type = struct crisp \{\[\r\n\]+\[\ \t\]+char \\* const \\*ptr;\[\r\n\]+\}"
}
do_constvar_tests
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9