libjava issues with arm-linux-gcj from arm-linux-gcc 3.3.2
David Daney
ddaney@avtrex.com
Fri Aug 19 22:21:00 GMT 2005
Nathan M wrote:
>>I would caution that it is possible that gcj/libgcj will not run very
>>well on your platform. The non-existence of libjava/sysdeps/arm
>>indicates to me that not very much hacking has been done to make
>>arm-linux run very well.
>
>
> Is this issue resolved in 3.4.x and 4.0.1? Or is this issue
> independent of the gcc/gcj version?
>
In the past 3 years or so, I do not recall seeing much if any work being
done on the ARM port. But it could have happened and I missed it. I
really have no knowledge of the state of the ARM port. My ramblings are
based on my experiences with the MIPS port.
Given all of this I think that the use of SIGSEGV for detection of
NullPointerExceptions probably is not implemented. The compiler will be
generating a lot of explicit checks for NULLs. Some of the more
esoteric parts of java.lang.reflect will probably not work nor will the
gij bytecode interpreter.
Other than those things, most other things may work.
>
>>If the state of the mips port in 3.3.x is any indication it might work,
>>but many things that work on x86 were non-functional. I can see that
>>ffi closures are still not implemented, so many things in
>>java.lang.reflect will not work.
>>
>>Many bugs in the java runtime have been fixed since 3.3.x, so as long as
>>you are building your own gcj toolchain, you might want to think about
>>using 3.4.4 or 4.0.1 instead.
>
>
> Ok, so you're suggesting that apps. compiled with arm-linux-gcj may
> suffer in terms of performance as well as the possibility that they
> won't work properly at all. You mention several issues above, are you
> suggesting using 3.4.x or 4.0.1 would avert these? If so, should I
> expect those newer toolchains to work properly with my arm-linux
> headers (which are most likely ancient in comparison)? As long as I
> compile apps. statically with gcj, I assume there wouldn't be any
> dependency conflicts with my target either? If you don't think those
> are issues, I minus well use the latest compiler (4.0.1), right?
The only headers needed to build GCC (including gcj/libgcj) are the C
library headers (and indirectly possibly the kernel headers). So if you
have all of those, you can pretty much build any compiler version you
want to.
We are using 3.4.3, but I have tested 4.0.1 and both seem to be fine on
MIPS. If you are going to use any networking or HTTP connection classes
in your application I would recommend 4.0.1.
David Daney.
More information about the Java
mailing list