From: Wu Zhou <woodzltc@cn.ibm.com>
To: drow@false.org
Cc: gdb-patches@sources.redhat.com
Subject: [RFC] Add a little IBM XL C++ specific code in dwarf2read.c, to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE of a virtual class correctly
Date: Tue, 31 May 2005 03:31:00 -0000 [thread overview]
Message-ID: <Pine.LNX.4.63.0504301332010.26869@plinuxt18.cn.ibm.com> (raw)
Daniel,
As we discussed in a previous thread before, gdb will drop into SEGV
fault when handling the debug-info of a virtual class which has no
DW_AT_containing_type attribute. ARM's RVCT compiler will generate
this kind of debuginfo and prone to trigger SEGV error, which you
fixed in a big un-cleanuped patch. IBM's XL compiler will also
generate this kind of debuginfo and prone to SEGV error too, on
which I posted a small patch based on yours.
I see that you are still too busy to look into this. But maybe we
could handle this somewhat easily. My thought is to begin with
eliminating the SEGV error first, which only need a small fix. Then
we could go on with other parts. So I post the following IBM XLC++
specific patch, wishing that we could make some progress on this.
What is your point on this idea? If you think it is ok, I could also
add ARM specific code into this patch. Please review and comment.
Thanks a lot!
<2005-05-31> Wu Zhou <woodzltc@cn.ibm.com>
* dwarf2read.c (read_structure_type): Add a little IBM XL C++
specific code to set TYPE_VPTR_FIELDNO and TYPE_VPTR_BASETYPE
of a virtual class if a field named "__vfp" is found.
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.181
diff -c -p -r1.181 dwarf2read.c
*** dwarf2read.c 9 Mar 2005 06:03:14 -0000 1.181
--- dwarf2read.c 30 May 2005 14:22:29 -0000
*************** read_structure_type (struct die_info *di
*** 3864,3869 ****
--- 3864,3891 ----
TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
}
}
+ else if (cu->producer
+ && strncmp (cu->producer,
+ "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
+ {
+ /* The IBM XLC compiler does not provide direct indication
+ of the containing type, but the vtable pointer is
+ always named __vfp. */
+
+ int i;
+
+ for (i = TYPE_NFIELDS (type) - 1;
+ i >= TYPE_N_BASECLASSES (type);
+ --i)
+ {
+ if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
+ {
+ TYPE_VPTR_FIELDNO (type) = i;
+ TYPE_VPTR_BASETYPE (type) = type;
+ break;
+ }
+ }
+ }
}
do_cleanups (back_to);
Cheers
- Wu Zhou
next reply other threads:[~2005-05-31 2:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-31 3:31 Wu Zhou [this message]
2005-05-31 5:46 ` Daniel Jacobowitz
2005-05-31 13:27 ` Wu Zhou
2005-06-13 3:26 ` Daniel Jacobowitz
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=Pine.LNX.4.63.0504301332010.26869@plinuxt18.cn.ibm.com \
--to=woodzltc@cn.ibm.com \
--cc=drow@false.org \
--cc=gdb-patches@sources.redhat.com \
/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