Re: [PATCH RFA] New constvars.exp tests

Fernando Nasser
2002-10-17T20:08:53Z

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