[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc-bugs
Subject:    [Bug target/24334] [4.0/4.1/4.2 regression] IRIX 6.5 bootstrap failure with SGI 7.4.3m ld: GOT overf
From:       "ro at techfak dot uni-bielefeld dot de" <gcc-bugzilla () gcc ! gnu ! org>
Date:       2006-01-31 22:15:03
Message-ID: 20060131221503.7633.qmail () sourceware ! org
[Download RAW message or body]



------- Comment #7 from ro at techfak dot uni-bielefeld dot de  2006-01-31 22:15 -------
Subject: Re:  [4.0/4.1/4.2 regression] IRIX 6.5 bootstrap failure with SGI
7.4.3m ld: GOT overflow

steven at gcc dot gnu dot org writes:

> Leaving "critical" bugs as UNCONFIRMED isn't going to help us keep the bug
> database maintainable...  So moving to WAITING pending further analysis by
> Rainer or others.
> 
> However, it may well be a linker bug, as suggested in comment #1.  Test results
> for GCC 4.1 were reported for mips-sgi-irix6.5 with GNU as/ld in November 2005
> (see http://gcc.gnu.org/ml/gcc-testresults/2005-11/msg00898.html).

I'm not sure about this being a linker bug.  But I've now tracked this down
as follows: if I use GCC 3.4.5 using GNU as 2.15 and SGI ld as the
bootstrap compiler, I get the GOT overflow described in this PR.  If
instead I use GCC 3.4.5 with SGI as and ld (no longer supported in GCC
4.x), the bootstrap finishes successfully, although in both cases the newly
bootstrapped compiler is configured to use GNU as 2.15.

I have no good idea how to debug this further, but I suspect that some
feature supported by GNU as doesn't really work together with the native
ld.  Comparing gcc/auto-host.h from the GCC 3.4.5 bootstraps with as
vs. gas, I get the following differences:

--- 6.5-as/gcc/auto-host.h      Thu Jan 12 17:43:23 2006
+++ 6.5-gas/gcc/auto-host.h     Wed Jan 11 16:55:02 2006
@@ -81,19 +81,19 @@

 /* Define if your assembler supports dwarf2 .file/.loc directives, and
    preserves file table indices exactly as given. */
-/* #undef HAVE_AS_DWARF2_DEBUG_LINE */
+#define HAVE_AS_DWARF2_DEBUG_LINE 1

 /* Define if your assembler supports explicit relocations. */
 /* #undef HAVE_AS_EXPLICIT_RELOCS */

 /* Define if your assembler supports the --gdwarf2 option. */
-/* #undef HAVE_AS_GDWARF2_DEBUG_FLAG */
+#define HAVE_AS_GDWARF2_DEBUG_FLAG 1

 /* Define true if the assembler supports '.long foo@GOTOFF'. */
 /* #undef HAVE_AS_GOTOFF_IN_DATA */

 /* Define if your assembler supports the --gstabs option. */
-/* #undef HAVE_AS_GSTABS_DEBUG_FLAG */
+#define HAVE_AS_GSTABS_DEBUG_FLAG 1

 /* Define if your assembler supports the Sun syntax for cmov. */
 /* #undef HAVE_AS_IX86_CMOV_SUN_SYNTAX */
@@ -102,7 +102,7 @@
 /* #undef HAVE_AS_JSRDIRECT_RELOCS */

 /* Define if your assembler supports .sleb128 and .uleb128. */
-/* #undef HAVE_AS_LEB128 */
+#define HAVE_AS_LEB128 1

 /* Define if your assembler supports ltoffx and ldxmov relocations. */
 /* #undef HAVE_AS_LTOFFX_LDXMOV_RELOCS */
@@ -254,7 +254,7 @@
 /* #undef HAVE_FWRITE_UNLOCKED */

 /* Define if your assembler supports .balign and .p2align. */
-/* #undef HAVE_GAS_BALIGN_AND_P2ALIGN */
+#define HAVE_GAS_BALIGN_AND_P2ALIGN 1

 /* Define if your assembler uses the new HImode fild and fist notation. */
 /* #undef HAVE_GAS_FILDS_FISTS */
@@ -264,21 +264,21 @@

 /* Define if your assembler supports specifying the maximum number of bytes to
    skip when using the GAS .p2align command. */
-/* #undef HAVE_GAS_MAX_SKIP_P2ALIGN */
+#define HAVE_GAS_MAX_SKIP_P2ALIGN 1

 /* Define if your assembler supports .nsubspa comdat option. */
 /* #undef HAVE_GAS_NSUBSPA_COMDAT */

 /* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.
    */
-#define HAVE_GAS_SHF_MERGE 0
+#define HAVE_GAS_SHF_MERGE 1

 /* Define if your assembler supports .subsection and .subsection -1 starts
    emitting at the beginning of your section. */
-/* #undef HAVE_GAS_SUBSECTION_ORDERING */
+#define HAVE_GAS_SUBSECTION_ORDERING 1

 /* Define if your assembler supports .weak. */
-/* #undef HAVE_GAS_WEAK */
+#define HAVE_GAS_WEAK 1

 /* Define to 1 if you have the `getrlimit' function. */
 #define HAVE_GETRLIMIT 1
@@ -542,7 +542,7 @@
 #define TIME_WITH_SYS_TIME 1

 /* Define if your assembler mis-optimizes .eh_frame data. */
-/* #undef USE_AS_TRADITIONAL_FORMAT */
+#define USE_AS_TRADITIONAL_FORMAT 1

 /* Define to be the last portion of registry key on windows hosts. */
 /* #undef WIN32_REGISTRY_KEY */

I don't have a good idea which of those causes the problem (and don't have
too much time to try and track this down, now that I've got a workaround).

        Rainer


-- 


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

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic