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] |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Joel Here's a testcase. In order to see the issue, do the following: 1. Compile it with -g flag 2. Run gdb 3. b main 4. ptype struct my_page You'll see: type = struct my_page { union { struct {...}; }; } Using the proposed patch, you'll see: type = struct my_page { union { struct {int mapping; }; }; } If you want, you may use a more complex union, such as: struct my_page { union { struct { int mapping; long foo; char *pointer; }; struct { char blah; int test; }; struct { char blahblah; }; struct { }; }; }; Any questions, feel free to contact me. Thanks and regards, - -- Carlos Eduardo Seo Software Engineer IBM Linux Technology Center Joel Brobecker wrote: > Carlos, > >> The attached patched fixes an issue described on this post: >> >> http://sourceware.org/ml/gdb-patches/2002-04/msg01114.html > >> 2007-08-16 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com> >> >> gdb/c-typeprint.c (c_type_print_base): check value of >> TYPE_NFIELDS (type) when displaying members of an >> unnamed struct inside an union. > > Could you add a testcase for this issue? Being new at reviewing > other people's patches, it's sometimes hard for me to understand > what you are trying to do. A testcase would help in two ways: not > only ensure that we do not regress in the future, but also help > me understand clearly what it is that we're trying to fix. > > Thank you! > >> Index: src-git/gdb/c-typeprint.c >> =================================================================== >> --- src-git.orig/gdb/c-typeprint.c 2007-08-16 15:28:04.000000000 -0700 >> +++ src-git/gdb/c-typeprint.c 2007-08-16 15:29:07.000000000 -0700 >> @@ -735,7 +735,7 @@ >> fputs_filtered (" ", stream); >> } >> wrap_here (" "); >> - if (show < 0) >> + if ((show < 0) && (TYPE_NFIELDS (type) == 0)) >> { >> /* If we just printed a tag name, no need to print anything else. */ >> if (TYPE_TAG_NAME (type) == NULL) > -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.6 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGzwDaqvq7Aov/qQARArN6AJ9i06xbZqjUGhRXRZg5LReVZtmi6gCghOZB PgEYEpPTi3YfX6rXvQoXlZY= =sCUb -----END PGP SIGNATURE-----
struct my_page { union { struct { int mapping; }; }; }; main() { struct my_page mypage; }
Attachment:
mypage.c.sig
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |