-findirect-dispatch: broken on Linux, working on Mingw?

Marco Trudel mtrudel@gmx.ch
Sat Mar 10 08:42:00 GMT 2007


Andrew Haley wrote:
> Marco Trudel writes:
> > Andrew Haley wrote:
> > > Marco Trudel writes:
> > > > Andrew Haley wrote:
> > > > > Marco Trudel writes:
> > > > > > Andrew Haley wrote:
> > > > > > > Marco Trudel writes:
> > > > > 
> > > > > > > > Is there a better way to solve this problem?
> > > > > > > 
> > > > > 
> > > > > Notice this fragment:
> > > > > 
> > > > > -lgcc -lgcj_bc -lm
> > > > > 
> > > > > shouldn't be there. -lgcj_bc should only be linked when linking
> > > > > dynamically. It should be 
> > > > > 
> > > > > -lgcc -lgcj -lm
> > > > 
> > > > Well then, lets take your suggested line:
> > > > *lib: %{static-libgcj:-non_shared -lgcj 
> > > > -call_shared;:%{s-bc-abi:-lgcj_bc;:-lgcj}} -lm -lpthread -lrt -ldl 
> > > > %(libgcc) %(liborig)
> > > > and change it to:
> > > > *lib: %{static-libgcj:-non_shared -lgcj 
> > > > -call_shared;:%{s-bc-abi:-lgcj;:-lgcj}} -lm -lpthread -lrt -ldl 
> > > > %(libgcc) %(liborig)
> > > 
> > > My suggestion is
> > > 
> > > *lib: -lgcj -lm -lpthread -lrt -ldl %(libgcc) %(liborig)
> > 
> > Sorry, I wasn't sure if you meant this as suggestion or if you meant 
> > that I just should stay with the default. This prints "gcj: unrecognized 
> > option '-s-bc-abi'" as warning but otherwise works.
>> OK, rewrite that to
>> *lib: %{s-bc-abi:} -lgcj -lm -lpthread -lrt -ldl %(libgcc) %(liborig)

Yes, that finally does the trick.
> Now, I'm very confused. I don't know why you are getting all this
> stuff in Windows. It shouldn't be there. The logic (in configure.host)
> that controls this is:
>> case "${host}" in
> *linux*|*-kfreebsd*-gnu)
> use_libgcj_bc=yes
> ;;
> *)
> use_libgcj_bc=no
> ;;
> esac 

In my build dir:
config.log:
USE_LIBGCJ_BC_FALSE='#'
USE_LIBGCJ_BC_TRUE=''
config.status:
s,@USE_LIBGCJ_BC_TRUE@,,;t t
s,@USE_LIBGCJ_BC_FALSE@,#,;t t
4 Makefiles:
USE_LIBGCJ_BC_FALSE = #
USE_LIBGCJ_BC_TRUE =
Are these correct? In config.log for instance, I also see:
USING_BOEHMGC_FALSE = #
USING_BOEHMGC_TRUE =
Since I configure with "--enable-java-gc=boehm", I would assume that no
value means to set it. So USING_BOEHMGC_TRUE and USE_LIBGCJ_BC_TRUE
should be set.
BTW, in my host=Windows target=Linux GCC, I also have a libgcj_bc.a,
libgcj_bc.so.1 and libgcj_bc.so.1.0.0. These shouldn't have been built
either, right?
> Without use_libgcj_bc set to "yes" you should get the simple *lib line
> above. There should be no references to -lgcj_bc.

What about the the host=Linux target=Linux compiler? -findirect-dispatch
doesn't work either. So I end up with a wrong *lib line there too. And I
guess there I really have LIBGCJ_BC.
> So, I don't know where your strage Windows *lib line came from.

And what about my Linux one?
thanks
Marco


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /