This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: patch to robustify gnuv3_rtti_type
On Sun, Jan 20, 2002 at 12:43:45PM -0800, Per Bothner wrote:
> Daniel Jacobowitz wrote:
> >Go look at gnuv3_rtti_type again. It's misnamed; it does not use RTTI
> >at all. It only looks that the vtable exists and has a name demangled to
> >'vtable for <Class>'.
>
> Yes. With my current patches (gcc and gdb), I get when debugging Java
> runtime (written in C++):
>
> (gdb) whatis source
> type = Class *
> (gdb) p *source
> can't find class named `java::lang::Class', as given by C++ RTTI
>
> That is actually an improvement. The problem at this point is
> inconsistent handling of namespaces bwteeen g++ and gcj. gcj
> emits a class named 'java.lang.Class' (including the periods),
> while g++ emits plain 'Class'. So gdb does not realize these are
> the same class. And neither g++ or gcj emits proper namespace
> information. I think this is one of the biggest stumbling-blocks
> to proper Java debugging.
Wait a second. Are you debugging Java or C++ here? Or are you
debugging a Java program and the C++ runtime, and the same thing is
accessible as java::lang::Class and java.lang.Class?
> What is the current status of support for namepace-handling in gdb?
> If we fix gcj so it emits the same debug into as g++ (i.e.
> 'java.lang.Class' is emitted as plain 'Class'), can gdb "do the
> right thing" based on the mangled names? If not, can gdb handle
> dwarf2 namespace information (which g++ currently supresses)?
We are not currently ready for dwarf2 namespace information, as I
understand it. Fixing it should be the work of a few hours, though.
The state of namespaces through the rest of GDB is a little more
questionable. I know the v3 support file needs changes.
Why do you currently emit java.lang.Class?
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer