Re: [RFA]: Java Inferior Call Take 2

Andrew Haley
2004-06-23T16:06:41Z

Daniel Jacobowitz writes:
> On Wed, Jun 23, 2004 at 12:05:59PM +0100, Andrew Haley wrote:
> > This patch is now in mainline. Is there anything else you need?
>
> Yes. Two sets of questions left, one for Jeff and one [plus a little
> bit] for you...
>
>
> Jeff, one test still fails: calling addprint. I think this is mostly a
> GDB problem rather than GCC. Before starting the program I see this:
>
> (gdb) ptype jvclass
> type = class jvclass : public java::lang::Object {
> public:
> static int k;
>
> static void addprint(int, int, int);
> virtual int addk(int);
> }
>
> Then, after starting it:
> (gdb) ptype jvclass
> type = class jvclass extends java::lang::Object {
> public static int k;
>
> void addprint(int, int, int);
> int addk(int);
> jvclass();
> void <clinit>();
> }
>
> - Should we suppress jvclass and <clinit> the way we do for C++
> artificial methods?
>
> - Why is it java::lang::Object instead of java.lang.Object?
>
> - Why did printing of the type change? There's only one definition
> of jvclass in the debug info, and it's marked Java.
>
> [Andrew, I notice that we've lost the 'static' here. There's nothing
> in the dwarf output to express it, so this is a GCC problem.]

OK.

> The other question: I looked at fixing the debug info to print field
> names correctly. The reason it's wrong is that dwarf2out uses the
> decl_printable_name langhook. Java doesn't use the second argument,
> which the common code assumes is verbosity. Common code always passes
> '2', which matches what Java's does, except in three places: mudflap
> (???), the C tree pretty printer, and this call in dwarf2out used to
> set the name of decls. Java mostly passes 0 since it knows the value
> is ignored. Any reason not to fix up the Java frontend to pass 2,
> extend the function to handle smaller values, and thus correct the
> debug output?

Yes, I can do that.

Andrew.