Re: Building 64 bit compiler on Solaris AMD64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Scott L. Burson wrote:
On Wed, Dec 17, 2008 at 3:15 PM, Andrew Haley <aph@xxxxxxxxxx> wrote:
Scott L. Burson wrote:
On Wed, Dec 17, 2008 at 2:30 PM, Andrew Haley <aph@xxxxxxxxxx> wrote:
Scott L. Burson wrote:
No, I'll only get a 64-bit stage 1.
Which is all you need.

--disable-bootstrap and there is no stage 2.
Oh!  Didn't know about that.

But what about the next problem I ran into -- that the compiler built
in this way works only when -m64 is specified, because the libraries
are all 64-bit?
It all depends on how the multilibs are configured.

No, I don't mean that the build process only attempts to build 64-bit
libraries; I mean that even the libraries that the build process
intends to build as 32-bit get built as 64-bit also.  So e.g.
${prefix}/lib/gcc/i386-pc-solaris2.11/4.3.2/crtbegin.o is a 64-bit
object, but it's supposed to be 32-bit.

Please divide your "combined problem" into smaller "easy to handle"
problems via thinking :

- what is your $build system (should it be 32-bit or 64-bit?)
- what would be the $host system (should it be 64-bit?)
- what would be the default $target system (should it be 64-bit?)

and then use the suitable flags and system names in your configure.
Basically telling simple things like :

CC="gcc -m64" GCC_FOR_BUILD="gcc -m64"

would use a 64-bit target GCC for the binaries aimed for the $build
system and for the $host system. But at least in gcc-4.3.2 configuring
GCC for 'x86_64-solaris2.11' (64-bit as default) instead of 'i686-solaris2.11' or something 32-bit, isn't supported :( So one can
get only a 32-bit default GCC whose binaries were produced via 64-bit
'gen*' programs and are 64-bit binaries. Something like a crosscompiler
working on a 64-bit system and producing 32-bit (default) and 64-bit
(with '-m64') binaries there...

So your 'i386-pc-solaris2.11' (why the 'i386' ?) could be the only
possibility for $build', $host and '$target' when configuring like :

--build=$build --host=$host --target=$target

But for the tools used for these 3 target systems you can use all kind
of 'TOOL=', 'TOOL_FOR_BUILD=', 'TOOL_FOR_TARGET=' settings, where 'TOOL'
is 'AR', 'AS', 'CC', 'GCC', 'LD', 'NM', 'RANLIB' etc. These should be
passed to the Makefiles...

The base idea is "imagination"... "If a 'x86_64-linux' system runs 32-
bit binaries, it can imagine being a 32-bit system", and "if a 'i686-solaris2.11' system can run 64-bit binaries, it can imagine being
a 64-bit system".  If dummy computers can have that much imagination,
why not the humans? :)

Aren't there any "Solaris 11/x86_64" alternatives like there are
separate Linuces for both 'x86' and 'x86_64' ?  Or why there isn't
any "64-bit default" GCC target for Solaris 11 ?


-- Scott



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux