aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2004-02-10 10:17:47 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2004-02-10 10:17:47 +0000
commit117c5858b4f31e7e57861b2781b8d39f3ea7f611 (patch)
tree632c6ff7f8718a1b6e83585b3e5e4f7e1de4a8f0 /gcc
parentcf5c0cea7f02d462e8293e888621d65470d188ef (diff)
downloadgcc-117c5858b4f31e7e57861b2781b8d39f3ea7f611.zip
gcc-117c5858b4f31e7e57861b2781b8d39f3ea7f611.tar.gz
gcc-117c5858b4f31e7e57861b2781b8d39f3ea7f611.tar.bz2
mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI && TARGET_IRIX.
* config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI && TARGET_IRIX. From-SVN: r77589
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.h17
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0475bee..af67fe4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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'
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index f53d04c..90e8954 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -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)