This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libgcj/38804] libgcj multilib fails if not able to exec "non" native programs



------- Comment #6 from rob1weld at aol dot com  2009-01-13 07:16 -------
(In reply to comment #5)
> # Even if the default multilib is not a cross compilation,
> # it may be that some of the other multilibs are.
> if test $cross_compiling = no && test $multilib = yes \
>    && test "x${with_multisubdir}" != x ; then
>    cross_compiling=maybe
> fi
> 
Yes, it's a little screwy.

If 64 bit code can not be executed on a 32 bit platform then you MUST be 
'cross compiling'. I think the term it is looking for is 'building multilib'.


Other circumstances include "co-processing". You want to compile for your
favorite hardware, Xbox or PSP, and you execute a portion of gcc's build
on the device, both for speed and accuracy of the values determined by the
configure scripts. The 'hardware' can also be "fake" like Qemu.


There is also the situation where you have the hardware you are compiling
for and could execute the program and libraries on the device. This helps
to get the real values for fixing scripts used to cross compile.

The gdb program can help run "make -i check" on your hardware remotely.


Maybe the Docs need this explanation:

What if you have a 486 and want to build 32/64 bit execs/libs for a 686.
That is cross compiling and multilib, regardless of boot mode. Up in family
or "cross" family is cross compiling.

What if you have a 686 and want to build 32/64 bit execs/libs for a 686.
That is building multilib, regardless of boot mode. Same family, no cross.

What if you have a 686 and want to build 32/64 bit execs/libs for a 486.
That is building multilib, regardless of boot mode. Down in family is not
cross compiling.


Building any of the above combinations with either only 32 bit _or_ only
64 bit execs/libs means you are not building multilib.

Building for a higher number in the family or "cross" to a different (and
non-compatible) family is cross compiling.


A quick mention for completeness that cross platform (or ABI) compiling is
not "cross compiling" in the usual sense though the same techniques can be
used to get gcc to run under Cygwin (a Linux Simulation for Windows (and
others)) or Wine (a Windows Simulation for Linux (and others)) by using
bootstrapping and cross compiling.

I don't know why this 32/64 bit issue comes up so often. We've had 64 bit
OSes for a few years now. It must be the VM that is new and confusing ;(o


Also, the dozen occurrences of the 'ac_link' variable is redundant.

Rob


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38804


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]