From 117c5858b4f31e7e57861b2781b8d39f3ea7f611 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 10 Feb 2004 10:17:47 +0000 Subject: [PATCH] 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 --- 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 + + * config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI + && TARGET_IRIX. + 2004-02-09 Ziemowit Laski * 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)