Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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


             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