TROUBLE with gcj 4.1.1 for arm-wince-pe

Craig Vanderborgh craigvanderborgh@gmail.com
Wed Dec 31 16:43:00 GMT 2008


Hello and Happy New Year!

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?  Do I have to change some things in the gcj 4.1.1 compiler
build to do this?  Where should I look?  I am deadly serious about
seeing this effort through to completion, please try to ease the
suffering on this end if you possibly can.

Thanks in advance,
Craig Vanderborgh
Voxware Incorporated



More information about the Java mailing list