3/26/02 status of libjava *-*-freebsd* ports (on mainline)
Loren James Rittle
rittle@latour.rsch.comm.mot.com
Tue Mar 26 03:35:00 GMT 2002
Over the past days, I have posted about an issue where gcjh crashes on
alpha*-*-freebsd* during bootstrap with a floating point exception
while emitting the actual FP value for MIN_VALUE to
java/lang/Double.h. Thank you, in particular, Tom Tromey for all the
recent input on this issue (both public and private e-mail). Here is
the conclusion based on that discussion and additional research. The
system-documented mechanism to avoid an FP trap, fpsetmask(3), doesn't
appear to work on FreeBSD/alpha and has been reported as a libc bug
(PR alpha/36327 on www.freebsd.org GNATS). In either case, it is
unclear that a libc printf() routine should ever so internally trap.
Thus, I conclude no reasonable libjava patch is possible as the
moment. (I will retain an unpublishable hack in my local tree to
allow full bootstrap; the situation will be documented in the
per-system section of install.texti.)
The source of most remaining test suite failures on *-*-freebsd* are
related to simple EH situations (i.e. not related to throwing from
within a signal handler). The number of failures appears constant
with or without an unposted patch I have which enables shared libgcc
for *-*-freebsd*. It shot up from around 30 to over 100 within the
last few months. I may have "upgraded" from FSF binutils 2.11.X to
2.12.X during the time of breakage. Here is a short report of the
situation I am seeing in case it "rings any bells" before I get to
fully debugging it:
The shared EH frame walking code appears to be seeing a "semi-random"
non-zero personality function instead of __gcj_personality_v0 (yet
appears to be same across the built test cases). Most likely a
coincident (?), but the address of the bad personality function
pointer is seen to be within the valid range of libgcj.so as loaded.
From looking closely, the bulk of the current EH failures are not
related to the mismatch between exception model and the setting for
java-signal.h (few test cases actually test and fail for that reason).
Thanks to Bryce McKinlay's observations on my EH query and that entire
thread, I do now understand a bit more about exactly how my port is
broken. I consider this very important to fix but I think nailing why
the simple EH cases are now broken is even more important.
Regards,
Loren
More information about the Java
mailing list