[Bug java/17265] [3.5 Regression] Libjava doesn't build
ebotcazou at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sun Sep 12 08:42:00 GMT 2004
------- Additional Comments From ebotcazou at gcc dot gnu dot org 2004-09-12 08:42 -------
> ... sounds like ASM_OUTPUT_DEF isn't working correctly with the solaris
> assembler. Please try --save-temps and post the .s output.
You correctly guessed, it's related to ASM_OUTPUT_DEF and aliases.
> My guess is that Solaris needs to be fixed to not define ASM_OUTPUT_DEF if the
> assembler doesn't support it.
The Solaris assembler does support equates (hey! it is not that primitive :-)
but the equated symbol must be defined somewhere in the file. Here we have both
.LL_ZN4java4lang5Class23getDeclaredConstructorsEv13 =
_ZN4java4lang5Class23getDeclaredConstructorsEv
which assembles fine because the second symbol is defined as
.global _ZN4java4lang5Class23getDeclaredConstructorsEv
.type _ZN4java4lang5Class23getDeclaredConstructorsEv, #function
.proc 0110
_ZN4java4lang5Class23getDeclaredConstructorsEv:
and
.LL_ZN4java4lang5Class17getDeclaringClassEv20 =
_ZN4java4lang5Class17getDeclaringClassEv
which doesn't because the second symbol is not defined in the file.
I can think of two explanations:
- the aliased method should have been defined in the assembly file but for some
reason it would not have been used, so the compiler decided to not emit it
altogether,
- the new code in class.c is somehow abusing the notion of "alias" as it
attempts to contruct a local alias of an external function.
In the first case, the fix could be to defer the call to assemble_alias until
after we know that the method will be emitted; in the second case, the fix could
be to add yet another target macro and to guard the new code with it.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
Last reconfirmed|2004-09-01 18:59:04 |2004-09-12 08:42:26
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17265
More information about the Gcc-bugs
mailing list