Re: [RFA]: Java Inferior Call Take 2

Daniel Jacobowitz
2004-06-17T03:06:05Z

On Mon, May 17, 2004 at 04:53:32PM -0400, Jeff Johnston wrote:
> This is the reworked java inferior call patch. My previous attempt tried
> to modify the gdb v3 abi code to handle missing debug information from gcj.
> After a couple of gcc patches from Andrew Haley, the gnu-v3-abi.c code
> doesn't require any tampering.
>
> I had to enhance dwarf2read.c to handle the java vtable name (which is
> vtable) and to modify C++-only code to handle java syntax for class names.
>
> I have included a test case.
>
> Ok to commit?

First of all, it doesn't work for me; I'm guessing that's because I
have gcj 3.3 installed. Are the GCC changes in any released version of
GCC yet, so that I can add appropriately versioned XFAILs?

> * valarith.c (value_subscript): Treat an array with upper-bound
> of -1 as unknown size.

I still don't understand why this change is necessary, i.e. why
providing a large upper bound causes the whole memory region to be
loaded from the inferior. That should not happen.

> @@ -3101,7 +3112,29 @@ dwarf2_add_member_fn (struct field_info
> /* Get name of member function. */
> attr = dwarf2_attr (die, DW_AT_name, cu);
> if (attr && DW_STRING (attr))
> - fieldname = DW_STRING (attr);
> + {
> + /* Note: C++ and Java currently differ in how the member function
> + name is stored in the debug info. For Java, the member name is
> + fully qualified with prototype while C++ just has the member
> + name. To get the Java member name, we strip off any dot qualifiers
> + and remove the trailing prototype. */

Other changes have been made to gcj's debug output in order for this to
work; wouldn't this be a good time to fix the above? No one's given a
reason that I recall for GCJ to abuse DW_AT_name in this fashion.

--
Daniel Jacobowitz