This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]