This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH]: ptype of pointer to typedef
- From: "Andrew Burgess" <aburgess at broadcom dot com>
- To: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Mon, 3 Sep 2012 10:45:46 +0100
- Subject: [PATCH]: ptype of pointer to typedef
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