This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
Re: Can't build sparc-linux gcc-3.1 2001-12-19 java/lang/ThreadGroup.lo
- From: Jeff Sturm <jsturm at one-point dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: =?X-UNKNOWN?Q?Christian_J=F6nsson?= <c dot christian dot joensson at telia dot com>, java at gcc dot gnu dot org
- Date: Fri, 21 Dec 2001 12:11:36 -0500 (EST)
- Subject: Re: Can't build sparc-linux gcc-3.1 2001-12-19 java/lang/ThreadGroup.lo
On 21 Dec 2001, Tom Tromey wrote:
> >>>>> "Christian" == Christian Jönsson <c.christian.joensson@telia.com> writes:
>
> Christian> /tmp/ccoq2Nfo.s: Assembler messages:
> Christian> /tmp/ccoq2Nfo.s:2598: Error: undefined symbol `.LL306' in operation
> Christian> /tmp/ccoq2Nfo.s:2628: Error: undefined symbol `.LL306' in operation
> Christian> make[3]: *** [java/lang/ThreadGroup.lo] Error 1
>
> I believe this is a known problem. It is a bug in gcc proper, not in
> gcj specifically. I think someone is working on it; check the main
> gcc list.
This also applies to sparc-solaris. Something changed recently in the
way cleanups are generated, and this probably triggered a dormant bug in
the sparc backend.
Cleanups are emitted by gcj for synchronized statements. Previously, the
compiler would emit two calls to _Jv_MonitorExit, one for a normal return
and one for an exceptional return. Recently gcc tries to be more clever,
saving the address of a return label, branching to the cleanup code, and
branching back. This interacts somewhat poorly with -fPIC. (I haven't
isolated the exact gcc patch that started this.)
I have a workaround which itself is probably not correct, but does allow
the bootstrap to finish so I can test other things:
http://gcc.gnu.org/ml/gcc/2001-12/msg01079.html
Jeff