From: "Andrew Burgess" <aburgess@broadcom.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: [PATCH]: ptype of pointer to typedef
Date: Mon, 03 Sep 2012 09:46:00 -0000 [thread overview]
Message-ID: <50447C4A.8010009@broadcom.com> (raw)
Given a test program like this:
typedef char (my_char_array) [4];
my_char_array array = {'a', 'b', 'c', 'd'};
my_char_array *array_p = &array;
typedef char my_char;
my_char array2 [4] = {'a', 'b', 'c', 'd'};
my_char (*array2_p)[4] = &array2;
int
main ( void )
{
return 0;
}
Then in gdb:
(gdb) ptype array2_p
type = char (*)[4]
(gdb) ptype array_p
type = char *)[4]
Notice in the array_p case, the missing "(" character.
Patch below include a fix, and a test case. The test case builds on an
existing test that was marked as xfail in a few cases, I've extended the
xfail to cover the new case I've added, but I have no way to check if
this is the right thing to do or not, I'm happy to change the patch if
anyone has an opinion.
Ok to commit?
Cheers,
Andrew
gdb/ChangeLog
2012-09-03 Andrew Bugess <aburgess@broadcom.com>
* c-typeprint.c (c_type_print_varspec_prefix): Pass through the
passed_a_ptr flag when displaying typedef types.
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
index c2a775a..b51ced8 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
@@ -306,7 +306,7 @@ c_type_print_varspec_prefix (struct type *type,
case TYPE_CODE_TYPEDEF:
c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type),
- stream, show, 0, 0);
+ stream, show, passed_a_ptr, 0);
break;
case TYPE_CODE_UNDEF:
gdb/testsuite/ChangeLog
2012-09-03 Andrew Burgess <aburgess@broadcom.com>
* gdb.base/ptype.exp: Test ptype on a pointer to a typedef.
diff --git a/gdb/testsuite/gdb.base/ptype.exp
b/gdb/testsuite/gdb.base/ptype.exp
index c7bede2..0eef17d 100644
--- a/gdb/testsuite/gdb.base/ptype.exp
+++ b/gdb/testsuite/gdb.base/ptype.exp
@@ -370,6 +370,10 @@ if {!$gcc_compiled} then { setup_xfail "rs6000-*-*"
"i*86-*
if {$hp_aCC_compiler} {setup_xfail "hppa*-*-*"}
gdb_test "ptype t_char_array" "type = (|unsigned )char \\\[0?\\\]"
+if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" "i*86-*-sysv4*" }
+if {$hp_aCC_compiler} {setup_xfail "hppa*-*-*"}
+gdb_test "ptype pv_char_array" "type = (|unsigned )char
\\(\\*\\)\\\[0?\\\]"
+
#
##
## test ptype command with pointers
next reply other threads:[~2012-09-03 9:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-03 9:46 Andrew Burgess [this message]
2012-09-03 10:49 ` Andrew Burgess
2012-09-10 9:54 ` Andrew Burgess
2012-09-10 15:44 ` Tom Tromey
2012-09-11 9:05 ` Andrew Burgess
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50447C4A.8010009@broadcom.com \
--to=aburgess@broadcom.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox