OSDN Git Service

* config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Feb 2004 10:17:47 +0000 (10:17 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 10 Feb 2004 10:17:47 +0000 (10:17 +0000)
&& TARGET_IRIX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77589 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.h

index 0475bee..af67fe4 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-10  Richard Sandiford  <rsandifo@redhat.com>
+
+       * config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI
+       && TARGET_IRIX.
+
 2004-02-09  Ziemowit Laski  <zlaski@apple.com>
 
        * objc/objc-act.c (get_super_receiver): Move '#ifdef OBJCPLUS'
index f53d04c..90e8954 100644 (file)
@@ -290,9 +290,22 @@ extern const struct mips_cpu_info *mips_tune_info;
   (!TARGET_MIPS16 && (!TARGET_ABICALLS || TARGET_EXPLICIT_RELOCS))
 
 /* True if .gpword or .gpdword should be used for switch tables.
-   Not all SGI assemblers support this.  */
+   There are some problems with using these directives with the
+   native IRIX tools:
 
-#define TARGET_GPWORD (TARGET_ABICALLS && (!TARGET_NEWABI || TARGET_GAS))
+      - It has been reported that some versions of the native n32
+       assembler mishandle .gpword, complaining that symbols are
+       global when they are in fact local.
+
+      - The native assemblers don't understand .gpdword.
+
+      - Although GAS does understand .gpdword, the native linker
+       mishandles the relocations GAS generates (R_MIPS_GPREL32
+       followed by R_MIPS_64).
+
+   We therefore disable GP-relative switch tables for n32 and n64
+   on IRIX targets.  */
+#define TARGET_GPWORD (TARGET_ABICALLS && !(TARGET_NEWABI && TARGET_IRIX))
 
                                        /* Generate mips16 code */
 #define TARGET_MIPS16          (target_flags & MASK_MIPS16)