[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: config.guess: x86_64-pc-solaris2.11 is not properly recognized
From: |
Dmitry V. Levin |
Subject: |
Re: config.guess: x86_64-pc-solaris2.11 is not properly recognized |
Date: |
Mon, 13 Dec 2021 04:21:43 +0300 |
On Tue, Nov 30, 2021 at 09:18:10PM +0100, Andreas F. Borchert wrote:
> Hi,
>
> config.guess guesses Solaris 11 to run on a 32-bit platform
> despite Solaris 11 no longer supporting any 32-bit platform.
>
> See the following code at lines 434 to 445:
>
> | SUN_ARCH=i386
> | # If there is a compiler, see if it is configured for 64-bit objects.
> | # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
> | # This test works for both compilers.
> | if test "$CC_FOR_BUILD" != no_compiler_found; then
> | if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
> | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
> | grep IS_64BIT_ARCH >/dev/null
> | then
> | SUN_ARCH=x86_64
> | fi
> | fi
>
> If "cc" is installed, i.e. the Oracle Studio compiler, this one
> is chosen for $CC_FOR_BUILD. This compiler, the gcc provided
> by Oracle and also gcc bootstrapped from sources on that platform
> with a default configuration will by default generate 32-bit
> binaries -- even on a 64-bit platform. And __amd64 will not
> be defined for compilations targeting a 32-bit platform. This
> is different from the corresponding behaviour on GNU/Linux systems
> where the local platform is targeted by default.
>
> Thus, as long as you do not add "-m64" or if you have a custom-built
> gcc which defaults to 64 bit, you will get 32-bit binaries on Solaris
> despite living on a 64-bit platform.
>
> You can either omit this test for Solaris 11 (as this operating system
> will not run on any 32-bit platform) or adapt the test by adding the
> "-m64" flag. This this will work properly for Solaris 10 as well (the
> last Solaris release that supported x86 32-bit platforms).
>
> Here is a patch that simply adds the "-m64" flag:
>
> -------------------------------------------------------------------------------
> *** config.guess Tue Nov 30 20:42:03 2021
> --- config.guess-fixed Tue Nov 30 20:44:54 2021
> ***************
> *** 438,442 ****
> if test "$CC_FOR_BUILD" != no_compiler_found; then
> if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
> ! (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
> grep IS_64BIT_ARCH >/dev/null
> then
> --- 438,442 ----
> if test "$CC_FOR_BUILD" != no_compiler_found; then
> if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
> ! (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
> grep IS_64BIT_ARCH >/dev/null
> then
> -------------------------------------------------------------------------------
I've applied this, although it looks really strange and I cannot tell
whether it breaks something in Solaris land or not, let's see if somebody
starts complaining.
> This is related to following discussion:
> https://github.com/latex3/luaotfload/issues/203
>
> BTW, I wonder why config.guess does not distinguish between
> SPARCv8 (32-bit platform) and SPARCv9 and other SPARC-based
> 64-bit platforms. config.guess always generates
> "sparc-sun-solaris2.x" for these cases.
>
> And I also wonder why config.sub supports "solaris3" alias
> "sunos6". This is pure fantasy. There will be no "solaris3"
> as we are already arrived at Solaris 11. (There was a jump
> from Solaris 2.6 to Solaris 7 where "uname -r" just moved from
> 5.6 to 5.7. We are now at 5.11 and nobody expects a move towards
> 6.x and, even if this would happen, this would not be named
> Solaris 3.
It seems to be made long before my tenure,
cannot shed any light on these issues, sorry.
--
ldv
- Re: config.guess: x86_64-pc-solaris2.11 is not properly recognized,
Dmitry V. Levin <=