TROUBLE with gcj 4.1.1 for arm-wince-pe
Andrew Haley
aph@redhat.com
Wed Dec 31 16:56:00 GMT 2008
Craig Vanderborgh wrote:
> I am trying to bring up gcj 4.1.1 for arm-wince-pe, using binutils
> 2.18.50. So far C, C++, and the binutils all seem to be working well
> for arm-wince-pe (Windows CE 5 and Windows Mobile 5/6). The problems
> I'm having are with our older libgcj.
>> After taking a close look at libgcj/classpath 4.1.1, I decided to try
> to reuse our older libgcj that's derived from gcc-3.3. This version
> of libgcj has many fixes and enhancements we added, but more
> importantly - its use results in much smaller executables.
>> Porting our old libgcj-3.3 to the new 4.1.1 toolchain was a pretty
> straightforward affair. Most of the compilation problems I had to fix
> were due to illegal access of private class members and so on. After
> a few days of porting work, I had our libgcj-3.3 compiling under
> gcj-4.1.1.
>> Then all hell broke loose. The linked test programs (e.g.
> HelloWorld.java) run, but crash early on in _Jv_CreateJavaVM. An
> examination of the situation shows that Java classes seen from the C++
> code (e.g. in prims.cc, natClassLoader.cc, natClass.cc and so on) are
> really messed up. In one case, with java.lang.reflect.Modifier, I
> observed that invoking the method Modifier.isAbstract(int) from C++
> with:
>> java::lang::reflect::Modifier::isAbstract(foo);
>> results in an ENTIRELY DIFFERENT METHOD being invoked.
>> It's so screwed up that I am completely lost and need some input. Is
> there some *elemental* reason why I can't port libgcj-3.3 to
> gcj-4.1.1?
Yes. We changed the ABI.
> Do I have to change some things in the gcj 4.1.1 compiler
> build to do this? Where should I look?
The C++ header files are the most likely cause of this problem, but
I'm sure there will be many more.
The compiler knows a great deal about the structure of the runtime
library. For what you're doing to work you'd have to find all the
ABI changes and back-port them to the new compiler.
What you're doing is more or less equivalent to ripping the telephone
exchange out of Tokyo, dropping it into New York, and expecting it to
work.
Andrew.
More information about the Java
mailing list