This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]