From 2b26248867ba6aaff513c07954cae6c91f3f2155 Mon Sep 17 00:00:00 2001
From: rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 10 Feb 2004 10:17:47 +0000
Subject: [PATCH] 	* config/mips/mips.h (TARGET_GPWORD): Return false for
 TARGET_NEWABI 	&& TARGET_IRIX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77589 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog          |  5 +++++
 gcc/config/mips/mips.h | 17 +++++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0475bee9baa0..af67fe4b3856 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 f53d04c442b5..90e8954e5698 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)
-- 
GitLab