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]

Re: [PATCH]: ptype of pointer to typedef


Ping!

On 03/09/2012 10:45 AM, Andrew Burgess wrote:
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]