Re: Mixing BC and CNI in the same executable

Stephen Kell <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
> It's a combination of bugs.  Firstly, there's a bug in libgcj when a
> needed class is not found in an executable: it causes a crash when
> trying to report the problem.  Fixed thusly:

Thanks very much for this! My program does indeed now run as it's
supposed to (i.e. back to coding...).

> Thirdly, you aren't linking in inner classes.  This works for me:
> 
>  gcj -fno-eliminate-unused-debug-symbols
> -fno-eliminate-unused-debug-types -findirect-dispatch
> -fno-indirect-classes -fpic -g3
> --classpath=./java:./antlr-runtime-3.1.3.jar:: -Wall   -Wl,-R.
> cake.o main.o  parser/parser.a antlr-runtime.jar.so
> stringtemplate.jar.so  -lstdc++ -o "cake" -Wl,-Map,map
> java/cake/TreewalkError.o java/cake/InternalError.o
> java/cake/CloneableTree.o
> java/cake/SemanticError.o ./parser/cake/cakeJavaParser\$DFA*.o ./parser/cake/cakeJavaLexer\$DFA*.o ./parser/cake/cakeJavaParser\$*_return.o 
> 
> It would be better to compile from .java -> .o, and then you would not
> have to worry about all the inner classes.

Aha... I had been stuffing all the .o files (including inner classes)
into parser.a, hoping it would be sufficient to link with that, but
clearly this was a bad plan. (I guess only symbols with link-time
references get linked... meanwhile --whole-archive fails because of
multiple definitions of others.)

Thanks again,
Stephen.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.