* TROUBLE with gcj 4.1.1 for arm-wince-pe
@ 2008-12-31 16:43 Craig Vanderborgh
2008-12-31 16:56 ` Andrew Haley
0 siblings, 1 reply; 2+ messages in thread
From: Craig Vanderborgh @ 2008-12-31 16:43 UTC (permalink / raw)
To: java
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: TROUBLE with gcj 4.1.1 for arm-wince-pe
2008-12-31 16:43 TROUBLE with gcj 4.1.1 for arm-wince-pe Craig Vanderborgh
@ 2008-12-31 16:56 ` Andrew Haley
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Haley @ 2008-12-31 16:56 UTC (permalink / raw)
To: Craig Vanderborgh; +Cc: java
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.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-12-31 16:56 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-12-31 16:43 TROUBLE with gcj 4.1.1 for arm-wince-pe Craig Vanderborgh
2008-12-31 16:56 ` Andrew Haley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).