PERFORCE change 44315 for review

Juli Mallett jmallett at FreeBSD.org
Thu Dec 25 13:45:08 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=44315

Change 44315 by jmallett at jmallett_oingo on 2003/12/25 13:44:51

	Sync with vendor...

Affected files ...

.. //depot/projects/mips/contrib/gcc/config/mips/5400.md#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/5500.md#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/_tilib.c#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/abi64.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/bsd-4.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/bsd-5.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/crtn.asm#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/dbxmdebug.h#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/dec-bsd.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/dec-osf1.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/ecoff.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/ecoffl.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/elf.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/elf64.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/elfl.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/elfl64.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/elflorion.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/iris3.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/iris4loser.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/iris5.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/iris5gas.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/iris6-o32-as.h#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/iris6-o32-gas.h#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/iris6-o32.h#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/iris6.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/iris6gld.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/isa32-linux.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/isa3264.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/linux.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/little.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/mips-5.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/mips-protos.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/mips.c#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/mips.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/mips.md#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/netbsd.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/news4.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/news5.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/nws3250v4.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/openbsd.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/osfrose.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/r3900.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/rtems.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/rtems64.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/sni-gas.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/sni-svr4.h#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/sr71k.md#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/svr3-4.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/svr3-5.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/svr4-4.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/svr4-5.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/svr4-t.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-bsd#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-bsd-gas#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-ecoff#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/t-elf#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/t-gofast#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-iris5-6#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-iris5-as#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-iris5-gas#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-iris6#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/t-isa3264#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/t-linux#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-mips#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-netbsd#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-r3900#3 edit
.. //depot/projects/mips/contrib/gcc/config/mips/t-rtems#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-sr71k#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/t-svr3#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-svr3-gas#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-svr4#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-svr4-gas#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-ultrix#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/t-vr#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/ultrix.h#3 delete
.. //depot/projects/mips/contrib/gcc/config/mips/vr.h#1 add
.. //depot/projects/mips/contrib/gcc/config/mips/vxworks.h#3 edit

Differences ...

==== //depot/projects/mips/contrib/gcc/config/mips/crtn.asm#3 (text+ko) ====

@@ -1,39 +1,29 @@
 /* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
    Return spill offset of 40 and 20.  Aligned to 16 bytes for n32.  */
 
-	.section .init,"ax", at progbits
 #ifdef	__mips16
-/* The mips16 uses $7 for a return address. We use that here too.  */
-	lw	$7,20($sp)
-	addu	$sp,$sp,32
+#define RA $7
+#else
+#define RA $31
+#endif
 
-	j	$7
-#else
+	.section .init,"ax", at progbits
 #ifdef __mips64
-	ld      $31,40($sp)
+	ld      RA,40($sp)
 	daddu	$sp,$sp,48
 #else
-	lw	$31,20($sp)
+	lw	RA,20($sp)
 	addu	$sp,$sp,32
 #endif
-	j	$31
+	j	RA
 
-#endif
-
 	.section .fini,"ax", at progbits
-#ifdef	__mips16
-/* The mips16 uses $7 for a return address. We use that here too.  */
-	lw	$7,20($sp)
-	addu	$sp,$sp,32
-
-	j	$7
-#else
 #ifdef	__mips64
-	ld	$31,40($sp)
+	ld	RA,40($sp)
 	daddu	$sp,$sp,48
 #else
-	lw	$31,20($sp)
+	lw	RA,20($sp)
 	addu	$sp,$sp,32
 #endif
-	j	$31
-#endif
+	j	RA
+

==== //depot/projects/mips/contrib/gcc/config/mips/elf.h#3 (text+ko) ====

@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler.  MIPS R3000 version with
    GOFAST floating point library.
-   Copyright (C) 1994, 1997, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -20,59 +20,38 @@
 Boston, MA 02111-1307, USA.  */
 
 /* Use ELF.  */
-#define OBJECT_FORMAT_ELF
+#undef  OBJECT_FORMAT_COFF
+#undef  EXTENDED_COFF
 
-/* All ELF targets can support DWARF-2.  */
+/* ??? Move all SDB stuff into separate header file.  */
+#undef  SDB_DEBUGGING_INFO
 
-#ifndef DWARF2_DEBUGGING_INFO
+#define DBX_DEBUGGING_INFO 1
 #define DWARF2_DEBUGGING_INFO 1
-#endif
 
-/* Until we figure out what MIPS ELF targets normally use, just do
-   stabs in ELF.  */
-#ifndef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-#endif
+#undef  PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
-/* Mostly like ECOFF.  */
-#include "gofast.h"
-#include "mips/ecoff.h"
-
-/* We need to use .esize and .etype instead of .size and .type to
-   avoid conflicting with ELF directives.  */
-#undef PUT_SDB_SIZE
-#define PUT_SDB_SIZE(a)					\
-do {							\
-  extern FILE *asm_out_text_file;			\
-  fprintf (asm_out_text_file, "\t.esize\t");		\
-  fprintf (asm_out_text_file, HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT) (a)); \
-  fprintf (asm_out_text_file, ";");		       	\
-} while (0)
-
-#undef PUT_SDB_TYPE
-#define PUT_SDB_TYPE(a)					\
-do {							\
-  extern FILE *asm_out_text_file;			\
-  fprintf (asm_out_text_file, "\t.etype\t0x%x;", (a));	\
-} while (0)
+#undef  SUBTARGET_ASM_DEBUGGING_SPEC
+#define SUBTARGET_ASM_DEBUGGING_SPEC "-g0"
 
 /* Biggest alignment supported by the object file format of this
    machine.  Use this macro to limit the alignment which can be
    specified using the `__attribute__ ((aligned (N)))' construct.  If
    not defined, the default value is `BIGGEST_ALIGNMENT'.  */
 
-#undef MAX_OFILE_ALIGNMENT
+#undef  MAX_OFILE_ALIGNMENT
 #define MAX_OFILE_ALIGNMENT (32768*8)
 
 /* Switch into a generic section.  */
-#undef TARGET_ASM_NAMED_SECTION
+#undef  TARGET_ASM_NAMED_SECTION
 #define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
 
 /* Given that Irix has it's own headers, not having TARGET_GAS here
    seems a mistake.  If we actually need to be prepared for file
    switching, then we need a custom TARGET_ASM_NAMED_SECTION too.  */
 
-#undef TEXT_SECTION
+#undef  TEXT_SECTION
 #define TEXT_SECTION()				\
 do {						\
   if (TARGET_FILE_SWITCHING)			\
@@ -126,7 +105,7 @@
 #ifndef ASM_OUTPUT_ALIGNED_BSS
 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
 do {									\
-  ASM_GLOBALIZE_LABEL (FILE, NAME);					\
+  (*targetm.asm_out.globalize_label) (FILE, NAME);			\
   if (SIZE > 0 && SIZE <= mips_section_threshold)			\
     sbss_section ();							\
   else									\
@@ -145,24 +124,17 @@
 
 /* Write the extra assembler code needed to declare an object properly.  */
 
-#undef ASM_DECLARE_OBJECT_NAME
+#undef  ASM_DECLARE_OBJECT_NAME
 #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL)			\
   do {									\
-    fprintf (FILE, "%s", TYPE_ASM_OP);				\
-    assemble_name (FILE, NAME);						\
-    putc (',', FILE);							\
-    fprintf (FILE, TYPE_OPERAND_FMT, "object");				\
-    putc ('\n', FILE);							\
+    HOST_WIDE_INT size;							\
+    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
     size_directive_output = 0;						\
     if (!flag_inhibit_size_directive && DECL_SIZE (DECL))		\
       {									\
 	size_directive_output = 1;					\
-	fprintf (FILE, "%s", SIZE_ASM_OP);				\
-	assemble_name (FILE, NAME);					\
-	fprintf (FILE, ",");						\
-	fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,				\
-	  int_size_in_bytes (TREE_TYPE (DECL)));			\
-	fprintf (FILE, "\n");						\
+	size = int_size_in_bytes (TREE_TYPE (DECL));			\
+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size);			\
       }									\
     mips_declare_object (FILE, NAME, "", ":\n", 0);			\
   } while (0)
@@ -173,22 +145,20 @@
    size_directive_output was set
    by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */
 
-#undef ASM_FINISH_DECLARE_OBJECT
+#undef  ASM_FINISH_DECLARE_OBJECT
 #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)	 \
 do {									 \
      const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);		 \
+     HOST_WIDE_INT size;						 \
+									 \
      if (!flag_inhibit_size_directive && DECL_SIZE (DECL)		 \
          && ! AT_END && TOP_LEVEL					 \
 	 && DECL_INITIAL (DECL) == error_mark_node			 \
 	 && !size_directive_output)					 \
        {								 \
 	 size_directive_output = 1;					 \
-	 fprintf (FILE, "%s", SIZE_ASM_OP);				 \
-	 assemble_name (FILE, name);					 \
-	 fprintf (FILE, ",");						 \
-	 fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,			 \
-		  int_size_in_bytes (TREE_TYPE (DECL)));		 \
-	 fprintf (FILE, "\n");						 \
+	 size = int_size_in_bytes (TREE_TYPE (DECL));			 \
+	 ASM_OUTPUT_SIZE_DIRECTIVE (FILE, name, size);			 \
        }								 \
    } while (0)
 
@@ -207,7 +177,7 @@
    but until that support is generally available, the 'if' below
    should serve.  */
 
-#undef ASM_WEAKEN_LABEL
+#undef  ASM_WEAKEN_LABEL
 #define ASM_WEAKEN_LABEL(FILE,NAME) ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,0)
 #define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE)	\
  do {						\
@@ -225,20 +195,18 @@
  } while (0)
 
 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
-#undef UNIQUE_SECTION
-#define UNIQUE_SECTION(DECL,RELOC) \
-  mips_unique_section ((DECL), (RELOC))
+
+#define TARGET_ASM_UNIQUE_SECTION  mips_unique_section
 
 /* A list of other sections which the compiler might be "in" at any
    given time.  */
-#undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_sdata, in_sbss, in_rdata
+#undef  EXTRA_SECTIONS
+#define EXTRA_SECTIONS in_sdata, in_sbss
 
-#undef EXTRA_SECTION_FUNCTIONS
+#undef  EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
   SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
-  SECTION_FUNCTION_TEMPLATE(sbss_section, in_sbss, SBSS_SECTION_ASM_OP) \
-  SECTION_FUNCTION_TEMPLATE(rdata_section, in_rdata, RDATA_SECTION_ASM_OP)
+  SECTION_FUNCTION_TEMPLATE(sbss_section, in_sbss, SBSS_SECTION_ASM_OP)
 
 #define SECTION_FUNCTION_TEMPLATE(FN, ENUM, OP)                               \
 void FN ()                                                            \
@@ -262,11 +230,19 @@
 #define FINI_SECTION_ASM_OP     "\t.section\t.fini"
 
 /* Don't set the target flags, this is done by the linker script */
-#undef LIB_SPEC
+#undef  LIB_SPEC
 #define LIB_SPEC ""
 
 #undef  STARTFILE_SPEC
+#if defined(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES) \
+    || (MIPS_ABI_DEFAULT == ABI_MEABI)
+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s"
+#else
 #define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
+#endif
 
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
+
+/* We support #pragma.  */
+#define HANDLE_SYSV_PRAGMA 1

==== //depot/projects/mips/contrib/gcc/config/mips/elf64.h#3 (text+ko) ====

@@ -1,6 +1,7 @@
 /* Definitions of target machine for GNU compiler.  MIPS R4000 version with
    GOFAST floating point library.
-   Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2002
+   Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -19,38 +20,18 @@
 the Free Software Foundation, 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
-#define OBJECT_FORMAT_ELF
+#undef  OBJECT_FORMAT_COFF
+#undef  EXTENDED_COFF
 
-/* Default to -mips3.  */
-#define TARGET_DEFAULT MASK_FLOAT64|MASK_64BIT
-#define MIPS_ISA_DEFAULT 3
+#undef  SDB_DEBUGGING_INFO
+#define DBX_DEBUGGING_INFO 1
+#define DWARF2_DEBUGGING_INFO 1
 
-/* This should change to n32 when it is supported in gas.  */
-#define MIPS_ABI_DEFAULT ABI_O64
+#undef  PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
-/* Until we figure out what MIPS ELF targets normally use, just do
-   stabs in ELF.  */
-#ifndef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-#endif
-
-/* US Software GOFAST library support.  */
-#include "gofast.h"
-#define INIT_SUBTARGET_OPTABS INIT_GOFAST_OPTABS
-
-#include "mips/mips.h"
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dmips -DMIPSEB -DR4000 -D_mips -D_MIPSEB -D_R4000"
-
-/* I would rather put this in CPP_PREDEFINES, but the gcc driver
-   doesn't handle -U options in CPP_PREDEFINES.  */
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "\
-%{!mips1:%{!mips2:-U__mips -D__mips=3 -D__mips64}}"
-
-/* Use memcpy, et. al., rather than bcopy.  */
-#define TARGET_MEM_FUNCTIONS
+#undef  SUBTARGET_ASM_DEBUGGING_SPEC
+#define SUBTARGET_ASM_DEBUGGING_SPEC "-g0"
 
 /* Biggest alignment supported by the object file format of this
    machine.  Use this macro to limit the alignment which can be
@@ -60,24 +41,6 @@
 #undef MAX_OFILE_ALIGNMENT
 #define MAX_OFILE_ALIGNMENT (32768*8)
 
-/* We need to use .esize and .etype instead of .size and .type to
-   avoid conflicting with ELF directives.  */
-#undef PUT_SDB_SIZE
-#define PUT_SDB_SIZE(a)					\
-do {							\
-  extern FILE *asm_out_text_file;			\
-  fprintf (asm_out_text_file, "\t.esize\t");		\
-  fprintf (asm_out_text_file, HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT) (a)); \
-  fprintf (asm_out_text_file, ";");		       	\
-} while (0)
-
-#undef PUT_SDB_TYPE
-#define PUT_SDB_TYPE(a)					\
-do {							\
-  extern FILE *asm_out_text_file;			\
-  fprintf (asm_out_text_file, "\t.etype\t0x%x;", (a));	\
-} while (0)
-
 /* Switch into a generic section.  */
 #undef TARGET_ASM_NAMED_SECTION
 #define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
@@ -124,21 +87,14 @@
 #undef ASM_DECLARE_OBJECT_NAME
 #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL)			\
   do {									\
-    fprintf (FILE, "%s", TYPE_ASM_OP);					\
-    assemble_name (FILE, NAME);						\
-    putc (',', FILE);							\
-    fprintf (FILE, TYPE_OPERAND_FMT, "object");				\
-    putc ('\n', FILE);							\
+    HOST_WIDE_INT size;							\
+    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
     size_directive_output = 0;						\
     if (!flag_inhibit_size_directive && DECL_SIZE (DECL))		\
       {									\
 	size_directive_output = 1;					\
-	fprintf (FILE, "%s", SIZE_ASM_OP);				\
-	assemble_name (FILE, NAME);					\
-	fprintf (FILE, ",");						\
-	fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,				\
-	  int_size_in_bytes (TREE_TYPE (DECL)));			\
-	fprintf (FILE, "\n");						\
+	size = int_size_in_bytes (TREE_TYPE (DECL));			\
+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size);			\
       }									\
     mips_declare_object (FILE, NAME, "", ":\n", 0);			\
   } while (0)
@@ -153,18 +109,15 @@
 #define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)	 \
 do {									 \
      const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);		 \
+     HOST_WIDE_INT size;						 \
      if (!flag_inhibit_size_directive && DECL_SIZE (DECL)		 \
          && ! AT_END && TOP_LEVEL					 \
 	 && DECL_INITIAL (DECL) == error_mark_node			 \
 	 && !size_directive_output)					 \
        {								 \
 	 size_directive_output = 1;					 \
-	 fprintf (FILE, "%s", SIZE_ASM_OP);				 \
-	 assemble_name (FILE, name);					 \
-	 fprintf (FILE, ",");						 \
-	 fprintf (FILE, HOST_WIDE_INT_PRINT_DEC,			 \
-		  int_size_in_bytes (TREE_TYPE (DECL)));		 \
-	 fprintf (FILE, "\n");						 \
+	 size = int_size_in_bytes (TREE_TYPE (DECL));			 \
+	 ASM_OUTPUT_SIZE_DIRECTIVE (FILE, name, size);			 \
        }								 \
    } while (0)
 
@@ -201,82 +154,17 @@
  } while (0)
 
 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
-#undef UNIQUE_SECTION
-#define UNIQUE_SECTION(DECL,RELOC)					   \
-do {									   \
-  int len, size, sec;							   \
-  const char *name, *prefix;						   \
-  char *string;								   \
-  static const char *const prefixes[4][2] = {				   \
-    { ".text.", ".gnu.linkonce.t." },					   \
-    { ".rodata.", ".gnu.linkonce.r." },					   \
-    { ".data.", ".gnu.linkonce.d." },					   \
-    { ".sdata.", ".gnu.linkonce.s." }					   \
-  };									   \
-									   \
-  name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL));		   \
-  size = int_size_in_bytes (TREE_TYPE (decl));				   \
-									   \
-  /* Determine the base section we are interested in:			   \
-     0=text, 1=rodata, 2=data, 3=sdata, [4=bss].  */			   \
-  if (TREE_CODE (DECL) == FUNCTION_DECL)				   \
-    sec = 0;								   \
-  else if (DECL_INITIAL (DECL) == 0					   \
-           || DECL_INITIAL (DECL) == error_mark_node)			   \
-    sec = 2;								   \
-  else if ((TARGET_EMBEDDED_PIC || TARGET_MIPS16)			   \
-      && TREE_CODE (decl) == STRING_CST					   \
-      && !flag_writable_strings)					   \
-    {									   \
-      /* For embedded position independent code, put constant strings	   \
-	 in the text section, because the data section is limited to	   \
-	 64K in size.  For mips16 code, put strings in the text		   \
-	 section so that a PC relative load instruction can be used to	   \
-	 get their address.  */						   \
-      sec = 0;								   \
-    }									   \
-  else if (TARGET_EMBEDDED_DATA)					   \
-    {									   \
-      /* For embedded applications, always put an object in read-only data \
-	 if possible, in order to reduce RAM usage.  */			   \
-									   \
-      if (DECL_READONLY_SECTION (DECL, RELOC))				   \
-	sec = 1;							   \
-      else if (size > 0 && size <= mips_section_threshold)		   \
-	sec = 3;							   \
-      else								   \
-	sec = 2;							   \
-    }									   \
-  else									   \
-    {									   \
-      /* For hosted applications, always put an object in small data if	   \
-	 possible, as this gives the best performance.  */		   \
-									   \
-      if (size > 0 && size <= mips_section_threshold)			   \
-	sec = 3;							   \
-      else if (DECL_READONLY_SECTION (DECL, RELOC))			   \
-	sec = 1;							   \
-      else								   \
-	sec = 2;							   \
-    }									   \
-									   \
-  prefix = prefixes[sec][DECL_ONE_ONLY (DECL)];				   \
-  len = strlen (name) + strlen (prefix);				   \
-  string = alloca (len + 1);						   \
-  sprintf (string, "%s%s", prefix, name);				   \
-									   \
-  DECL_SECTION_NAME (DECL) = build_string (len, string);		   \
-} while (0)
+
+#define TARGET_ASM_UNIQUE_SECTION mips_unique_section
 
 /* A list of other sections which the compiler might be "in" at any
    given time.  */
 #undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_sdata, in_rdata
+#define EXTRA_SECTIONS in_sdata
 
 #undef EXTRA_SECTION_FUNCTIONS
 #define EXTRA_SECTION_FUNCTIONS                                         \
-  SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP) \
-  SECTION_FUNCTION_TEMPLATE(rdata_section, in_rdata, RDATA_SECTION_ASM_OP)
+  SECTION_FUNCTION_TEMPLATE(sdata_section, in_sdata, SDATA_SECTION_ASM_OP)
 
 #define SECTION_FUNCTION_TEMPLATE(FN, ENUM, OP)                               \
 void FN ()                                                            \
@@ -304,7 +192,15 @@
 #define LIB_SPEC ""
 
 #undef  STARTFILE_SPEC
+#if defined(HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES) \
+    || (MIPS_ABI_DEFAULT == ABI_MEABI)
+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s"
+#else
 #define STARTFILE_SPEC "crti%O%s crtbegin%O%s %{!mno-crt0:crt0%O%s}"
+#endif
 
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
+
+/* We support #pragma.  */
+#define HANDLE_SYSV_PRAGMA 1

==== //depot/projects/mips/contrib/gcc/config/mips/iris3.h#3 (text+ko) ====

@@ -21,16 +21,16 @@
 #define SGI_TARGET 1		/* inform other mips files this is SGI */
 
 /* Names to predefine in the preprocessor for this target machine.  */
-
+/* Temporarily #if 0'd until Irix header consolidation.  */
+#if 0
 #define CPP_PREDEFINES	"\
 -Dunix -Dmips -Dsgi -DSVR3 -Dhost_mips -DMIPSEB -DSYSTYPE_SYSV \
 -Asystem=unix -Asystem=svr3 -Acpu=mips -Amachine=mips"
-
-#define STARTFILE_SPEC	"%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
-
 #define SUBTARGET_CPP_SPEC "\
 %{!ansi:-D__EXTENSIONS__} -D_MIPSEB -D_SYSTYPE_SYSV"
+#endif
 
+#define STARTFILE_SPEC	"%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}"
 #define LIB_SPEC	\
 	"%{!p:%{!pg:%{!static:%{!g*:-lc_s}} -lc}}%{p:-lc_p}%{pg:-lc_p} crtn.o%s"
 
@@ -65,8 +65,5 @@
 #define WCHAR_TYPE	"unsigned char"
 #define WCHAR_TYPE_SIZE BITS_PER_UNIT
 
-/* Generate calls to memcpy, etc., not bcopy, etc.  */
-#define TARGET_MEM_FUNCTIONS
-
 /* Plain char is unsigned in the SGI compiler.  */
 #define DEFAULT_SIGNED_CHAR 0

==== //depot/projects/mips/contrib/gcc/config/mips/iris5.h#3 (text+ko) ====

@@ -62,30 +62,46 @@
  (DEFAULT_WORD_SWITCH_TAKES_ARG (STR)			\
   || !strcmp (STR, "rpath"))
 
+#define TARGET_OS_CPP_BUILTINS()			\
+    do {						\
+	builtin_define_std ("host_mips");		\
+	builtin_define_std ("sgi");			\
+	builtin_define_std ("unix");			\
+	builtin_define_std ("SYSTYPE_SVR4");		\
+	builtin_define ("_MODERN_C");			\
+	builtin_define ("_SVR4_SOURCE");		\
+	builtin_define ("__DSO__");			\
+	builtin_define ("_MIPS_SIM=_MIPS_SIM_ABI32");	\
+	builtin_define ("_MIPS_SZPTR=32");		\
+	builtin_assert ("system=unix");			\
+	builtin_assert ("system=svr4");			\
+	builtin_assert ("machine=sgi");			\
+							\
+     if (!TARGET_FLOAT64)                               \
+        builtin_define ("_MIPS_FPSET=16");              \
+     else                                               \
+        builtin_define ("_MIPS_FPSET=32");              \
+							\
+     if (!TARGET_INT64)                                 \
+        builtin_define ("_MIPS_SZINT=32");              \
+     else                                               \
+        builtin_define ("_MIPS_SZINT=64");              \
+							\
+     if (!TARGET_LONG64)				\
+	builtin_define ("_MIPS_SZLONG=32");		\
+     else						\
+	builtin_define ("_MIPS_SZLONG=64");		\
+							\
+     if (!flag_iso)					\
+       {						\
+	 builtin_define ("__EXTENSIONS__");		\
+	 builtin_define ("_SGI_SOURCE");		\
+       }						\
+} while (0);
+
 #undef SUBTARGET_CC1_SPEC
 #define SUBTARGET_CC1_SPEC "%{static: -mno-abicalls}"
 
-/* ??? _MIPS_SIM and _MIPS_SZPTR should eventually depend on options when
-   options for them exist.  */
-
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES \
- "-Dunix -Dmips -Dsgi -Dhost_mips -DMIPSEB -D_MIPSEB -DSYSTYPE_SVR4 \
-  -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ \
-  -D_MIPS_SIM=_MIPS_SIM_ABI32 -D_MIPS_SZPTR=32 \
-  -Asystem=unix -Asystem=svr4 -Acpu=mips -Amachine=sgi"
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "\
-%{!ansi:-D__EXTENSIONS__ -D_SGI_SOURCE -D_LONGLONG} \
-%{!mfp64: -D_MIPS_FPSET=16}%{mfp64: -D_MIPS_FPSET=32} \
-%{mips1: -D_MIPS_ISA=_MIPS_ISA_MIPS1} \
-%{mips2: -D_MIPS_ISA=_MIPS_ISA_MIPS2} \
-%{mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS3} \
-%{!mips1: %{!mips2: %{!mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS1}}} \
-%{!mint64: -D_MIPS_SZINT=32}%{mint64: -D_MIPS_SZINT=64} \
-%{!mlong64: -D_MIPS_SZLONG=32}%{mlong64: -D_MIPS_SZLONG=64}"
-
 #undef LINK_SPEC
 #define LINK_SPEC "\
 %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
@@ -174,7 +190,7 @@
 #define ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, VALUE)	\
   do							\
     {							\
-      ASM_GLOBALIZE_LABEL (FILE, NAME);			\
+      (*targetm.asm_out.globalize_label) (FILE, NAME);  \
       fputs ("\t.weakext\t", FILE);			\
       assemble_name (FILE, NAME);			\
       if (VALUE)					\
@@ -189,5 +205,4 @@
 #define ASM_WEAKEN_LABEL(FILE, NAME) ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, 0)
 
 /* Handle #pragma weak and #pragma pack.  */
-#undef HANDLE_SYSV_PRAGMA
 #define HANDLE_SYSV_PRAGMA 1

==== //depot/projects/mips/contrib/gcc/config/mips/iris5gas.h#3 (text+ko) ====

@@ -1,15 +1,50 @@
 /* Definitions of target machine for GNU compiler.  Irix version 5 with gas.  */
 
 /* Enable debugging.  */
-#define DBX_DEBUGGING_INFO
-#define SDB_DEBUGGING_INFO
-#define MIPS_DEBUGGING_INFO
-#define PREFERRED_DEBUGGING_TYPE SDB_DEBUG
+#define DBX_DEBUGGING_INFO 1
+#define DWARF2_DEBUGGING_INFO 1
+#define SDB_DEBUGGING_INFO 1
+#define MIPS_DEBUGGING_INFO 1
+#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
 /* GNU as does handle DWARF2 directives.  */
 #undef DWARF2_UNWIND_INFO
 #define DWARF2_UNWIND_INFO 1
 
+/* Override mips.h version to match DWARF 2 default.  */
+#undef MDEBUG_ASM_SPEC
+#define MDEBUG_ASM_SPEC "%{gstabs*|gcoff*:-mdebug} \
+%{!gstabs*:%{!gcoff*:-no-mdebug}}"
+
+/* Override iris5.h version to invoke [cd]tors and register eh frame
+   information.  */
+#undef LINK_SPEC
+#define LINK_SPEC "\
+%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} \
+%{bestGnum} %{shared} %{non_shared} \
+%{call_shared} %{no_archive} %{exact_version} \
+%{static: -non_shared} \
+%{!static: \
+  %{!shared:%{!non_shared:%{!call_shared: -call_shared -no_unresolved}}}} \
+%{rpath} -init __do_global_ctors -fini __do_global_dtors \
+%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
+-_SYSTYPE_SVR4"
+
+/* Override iris5.h versions to include crtbegin.o and crtend.o.  */
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+%{!static: \
+  %{!shared:%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s libprof1.a%s}%{!p:crt1.o%s}}}} \
+%{static: \
+  %{pg:gcrt1.o%s} \
+  %{!pg:%{p:/usr/lib/nonshared/mcrt1.o%s libprof1.a%s} \
+  %{!p:/usr/lib/nonshared/crt1.o%s}}} \
+crtbegin.o%s"
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC "crtend.o%s %{!shared:crtn.o%s}"
+
 /* Irix 5 does not have some strange restrictions that Irix 3 had.  */
 #undef SET_FILE_NUMBER
 #define SET_FILE_NUMBER() ++num_source_filenames
@@ -34,3 +69,16 @@
   extern FILE *asm_out_text_file;                     \
   fprintf (asm_out_text_file, "\t.etype\t0x%x;", (a));        \
 } while (0)
+
+/* Switch into a generic section.  */
+#undef TARGET_ASM_NAMED_SECTION
+#define TARGET_ASM_NAMED_SECTION  default_elf_asm_named_section
+
+/* Add -g to mips.h default to avoid confusing gas with local symbols
+   generated from stabs info.  */
+#undef NM_FLAGS
+#define NM_FLAGS "-Bng"
+
+/* Disable SHF_MERGE support.  Even if gas supports it, the IRIX ld does not
+   without a special elspec(5) file.  */
+#undef HAVE_GAS_SHF_MERGE

==== //depot/projects/mips/contrib/gcc/config/mips/iris6.h#3 (text+ko) ====

@@ -1,5 +1,6 @@
 /* Definitions of target machine for GNU compiler.  Iris version 6.
-   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
+   Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -31,7 +32,6 @@
 #endif
 
 #include "mips/iris5.h"
-#include "mips/abi64.h"
 
 /* Irix6 assembler does handle DWARF2 directives.  Override setting in
    irix5.h file.  */
@@ -44,8 +44,6 @@
 
 /* wchar_t is defined differently with and without -mabi=64.  */
 
-#define NO_BUILTIN_WCHAR_TYPE
-
 #undef WCHAR_TYPE
 #define WCHAR_TYPE (Pmode == DImode ? "int" : "long int")
 
@@ -54,8 +52,6 @@
 
 /* Same for wint_t.  */
 
-#define NO_BUILTIN_WINT_TYPE
-
 #undef WINT_TYPE
 #define WINT_TYPE (Pmode == DImode ? "int" : "long int")
 
@@ -72,73 +68,86 @@
    system header files require it.  This is OK, because gcc never warns
    when long long is used in system header files.  Alternatively, we can
    add support for the SGI builtin type __long_long.  */
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES \
- "-Dunix -Dmips -Dsgi -Dhost_mips -DMIPSEB -D_MIPSEB -DSYSTYPE_SVR4 \
-  -D_LONGLONG -D_SVR4_SOURCE -D_MODERN_C -D__DSO__ \
-  -Asystem=unix -Asystem=svr4 -Acpu=mips -Amachine=sgi"
 
-#undef SUBTARGET_CPP_SIZE_SPEC
-#define SUBTARGET_CPP_SIZE_SPEC "\
-%{mabi=32|mabi=n32: -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int \
--D__WCHAR_TYPE__=long\\ int -D__WINT_TYPE__=long\\ int} \
-%{mabi=64: -D__SIZE_TYPE__=long\\ unsigned\\ int -D__PTRDIFF_TYPE__=long\\ int \
--D__WCHAR_TYPE__=int -D__WINT_TYPE__=int} \
-%{!mabi*: -D__SIZE_TYPE__=unsigned\\ int -D__PTRDIFF_TYPE__=int \
--D__WCHAR_TYPE__=long\\ int -D__WINT_TYPE__=long\\ int}"
+/* The GNU C++ standard library requires that __EXTENSIONS__ and
+   _SGI_SOURCE be defined on at least irix6.2 and probably all IRIX 6
+   prior to 6.5.  They normally get defined if !ansi, for g++ we want
+   them regardless.  We don't need this on IRIX 6.5 itself, but it
+   shouldn't hurt other than the namespace pollution.  */
 
-/* We must make -mips3 do what -mlong64 used to do.  */
-/* ??? If no mipsX option given, but a mabi=X option is, then should set
-   _MIPS_ISA based on the mabi=X option.  */
-/* ??? If no mabi=X option give, but a mipsX option is, then should set
-   _MIPS_SIM based on the mipsX option.  */
-/* ??? Same for _MIPS_SZINT.  */
-/* ??? Same for _MIPS_SZPTR.  */
-/* ??? Same for __SIZE_TYPE and __PTRDIFF_TYPE.  */
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "\
-%{!ansi:-D__EXTENSIONS__ -D_SGI_SOURCE} \
-%{mfp32: -D_MIPS_FPSET=16}%{!mfp32: -D_MIPS_FPSET=32} \
-%{mips1: -D_MIPS_ISA=_MIPS_ISA_MIPS1} \
-%{mips2: -D_MIPS_ISA=_MIPS_ISA_MIPS2} \
-%{mips3: -D_MIPS_ISA=_MIPS_ISA_MIPS3} \
-%{mips4: -D_MIPS_ISA=_MIPS_ISA_MIPS4} \
-%{!mips*: -D_MIPS_ISA=_MIPS_ISA_MIPS3} \
-%{mabi=32: -D_MIPS_SIM=_MIPS_SIM_ABI32}	\
-%{mabi=n32: -D_ABIN32=2 -D_MIPS_SIM=_ABIN32} \
-%{mabi=64: -D_ABI64=3 -D_MIPS_SIM=_ABI64} \
-%{!mabi*: -D_ABIN32=2 -D_MIPS_SIM=_ABIN32} \
-%{!mint64: -D_MIPS_SZINT=32}%{mint64: -D_MIPS_SZINT=64} \
-%{mabi=32: -D_MIPS_SZLONG=32} \
-%{mabi=n32: -D_MIPS_SZLONG=32} \
-%{mabi=64: -D_MIPS_SZLONG=64} \
-%{!mabi*: -D_MIPS_SZLONG=32} \
-%{mabi=32: -D_MIPS_SZPTR=32} \
-%{mabi=n32: -D_MIPS_SZPTR=32} \
-%{mabi=64: -D_MIPS_SZPTR=64} \
-%{!mabi*: -D_MIPS_SZPTR=32} \
-%{!mips1:%{!mips2: -D_COMPILER_VERSION=601}}		\
-%{!mips*: -U__mips -D__mips=3} \
-%{mabi=32: -U__mips64} \
-%{mabi=n32: -D__mips64} \
-%{mabi=64: -D__mips64} \
-%{!mabi*: -D__mips64}"
+/* Undefine because this includes iris5.h.  */
+#undef  TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()			\
+    do {						\
+	builtin_define_std ("host_mips");		\
+	builtin_define ("_LONGLONG");			\
+	builtin_define ("_MODERN_C");			\
+	builtin_define ("_SVR4_SOURCE");		\
+	builtin_define_std ("SYSTYPE_SVR4");		\
+	builtin_define ("__DSO__");			\
+	builtin_define_std ("unix");			\
+	builtin_define_std ("sgi");			\
+	builtin_assert ("system=svr4");			\
+	builtin_assert ("system=unix");			\
+	builtin_assert ("machine=sgi");			\
+							\
+     if (mips_abi == ABI_32)				\
+      {							\
+	builtin_define ("_MIPS_SIM=_MIPS_SIM_ABI32");	\
+	builtin_define ("_MIPS_SZLONG=32");		\
+	builtin_define ("_MIPS_SZPTR=32");		\
+      }							\
+     else if (mips_abi == ABI_64)			\
+      {							\
+	builtin_define ("_ABI64=3");			\
+	builtin_define ("_MIPS_SIM=_ABI64");		\
+	builtin_define ("_MIPS_SZLONG=64");		\
+	builtin_define ("_MIPS_SZPTR=64");		\
+      }							\
+     else						\
+      {							\
+	builtin_define ("_ABIN32=2");			\
+	builtin_define ("_MIPS_SIM=_ABIN32");		\
+	builtin_define ("_MIPS_SZLONG=32");		\
+	builtin_define ("_MIPS_SZPTR=32");		\
+      }							\
+							\
+     if (!TARGET_FLOAT64)				\
+	builtin_define ("_MIPS_FPSET=16");		\
+     else						\
+	builtin_define ("_MIPS_FPSET=32");		\
+							\
+     if (!TARGET_INT64)					\
+	builtin_define ("_MIPS_SZINT=32");		\
+     else						\
+	builtin_define ("_MIPS_SZINT=64");		\
+							\
+     if (!ISA_MIPS1 && !ISA_MIPS2)			\
+	builtin_define ("_COMPILER_VERSION=601");	\
+							\
+     /* IRIX 6.5.18 and above provide many ISO C99	\
+	features protected by the __c99 macro.		\
+	libstdc++ v3 needs them as well.  */		\
+     if ((c_language == clk_c && flag_isoc99)		\
+	 || c_language == clk_cplusplus)		\
+	builtin_define ("__c99");			\
+							\
+     if (c_language == clk_cplusplus)			\
+      {							\
+	builtin_define ("__EXTENSIONS__");		\
+	builtin_define ("_SGI_SOURCE");			\
+      }							\
+							\
+     if (!flag_iso)					\
+       {						\
+	 builtin_define ("__EXTENSIONS__");		\
+	 builtin_define ("_SGI_SOURCE");		\
+       }						\
+} while (0)
 
-/* The GNU C++ standard library requires that __EXTENSIONS__ and
-   _SGI_SOURCE be defined on at least irix6.2 and probably all irix6
-   prior to 6.5.  They normally get defined in SUBTARGET_CPP_SPEC if
-   !ansi, for g++ we want them regardless.  We don't need this on
-   irix6.5 itself, but it shouldn't hurt other than the namespace
-   pollution.  */
-#undef CPLUSPLUS_CPP_SPEC
-#define CPLUSPLUS_CPP_SPEC "\
--D__LANGUAGE_C_PLUS_PLUS -D_LANGUAGE_C_PLUS_PLUS \
-%{ansi:-D__EXTENSIONS__ -D_SGI_SOURCE} %(cpp) \
-"
-
 /* Irix 6 uses DWARF-2.  */
-#define DWARF2_DEBUGGING_INFO
-#define MIPS_DEBUGGING_INFO
+#define DWARF2_DEBUGGING_INFO 1
+#define MIPS_DEBUGGING_INFO 1
 #undef PREFERRED_DEBUGGING_TYPE
 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
@@ -235,7 +244,7 @@
    on the mipsX option.  */
 /* If no mips[3,4] option given, give the appropriate default for mabi=X */
 #undef SUBTARGET_ASM_SPEC
-#define SUBTARGET_ASM_SPEC "%{!mabi*:-n32} %{!mips*: %{!mabi*:-mips3} %{mabi=n32:-mips3} %{mabi=64:-mips4}}"
+#define SUBTARGET_ASM_SPEC "%{!mabi*:-n32} %{!mips*: %{!mabi*:-mips3} %{mabi=n32|mabi=64:-mips3}}"
 
 /* Must pass -g0 to the assembler, otherwise it may overwrite our
    debug info with its own debug info.  */
@@ -263,8 +272,14 @@
    do_global_* functions instead of running collect2.  */
 
 #define BSS_SECTION_ASM_OP	"\t.section\t.bss"
-#define CONST_SECTION_ASM_OP_32	"\t.rdata"
-#define CONST_SECTION_ASM_OP_64	"\t.section\t.rodata"
+
+#undef READONLY_DATA_SECTION_ASM_OP
+#define READONLY_DATA_SECTION_ASM_OP_32	"\t.rdata"
+#define READONLY_DATA_SECTION_ASM_OP_64	"\t.section\t.rodata"
+#define READONLY_DATA_SECTION_ASM_OP		\
+  (mips_abi != ABI_32 && mips_abi != ABI_O64	\
+   ? READONLY_DATA_SECTION_ASM_OP_64		\
+   : READONLY_DATA_SECTION_ASM_OP_32)
 
 /* A default list of other sections which we might be "in" at any given
    time.  For targets that use additional sections (e.g. .tdesc) you
@@ -272,14 +287,12 @@
    includes this file.  */
 
 #undef EXTRA_SECTIONS
-#define EXTRA_SECTIONS in_sdata, in_rdata, in_const
+#define EXTRA_SECTIONS in_sdata
 
 /* A default list of extra section function definitions.  For targets
    that use additional sections (e.g. .tdesc) you should override this
    definition in the target-specific file which includes this file.  */

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list