gnu-user.h: Copy from linux.h.
authorRobert Millan <rmh@gnu.org>
Tue, 19 Jul 2011 18:00:27 +0000 (18:00 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 19 Jul 2011 18:00:27 +0000 (18:00 +0000)
gcc/
2011-07-19  Robert Millan  <rmh@gnu.org>

* config/mips/gnu-user.h: Copy from linux.h.  Update comments.
(GLIBC_DYNAMIC_LINKER): Remove.

* config/mips/gnu-user64.h: Copy from linux64.h.  Update comments.
(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64)
(GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
(BIONIC_DYNAMIC_LINKERN32, GNU_USER_DYNAMIC_LINKERN32): Remove.
(LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32,
GNU_USER_DYNAMIC_LINKER64 and GNU_USER_LINK_EMULATIONN32.

* config/mips/linux.h: Remove everything except for ...
(GLIBC_DYNAMIC_LINKER): ... this macro.

* config/mips/linux64.h: Remove everything except for ...
(GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64)
(GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
(BIONIC_DYNAMIC_LINKERN32): ... these macros.
(GNU_USER_LINK_EMULATION32, GNU_USER_LINK_EMULATION64)
(GNU_USER_LINK_EMULATIONN32): New macros.

* config.gcc (mips64*-*-linux* | mipsisa64*-*-linux* |
mips-*-linux*): Use the new headers.

From-SVN: r176479

gcc/ChangeLog
gcc/config.gcc
gcc/config/mips/gnu-user.h [new file with mode: 0644]
gcc/config/mips/gnu-user64.h [new file with mode: 0644]
gcc/config/mips/linux.h
gcc/config/mips/linux64.h

index 992486da4e1f9a207170d9e234d460988142ce64..507ba8f222ad8eb77b96e9b52db5828e6fe6ab65 100644 (file)
@@ -1,3 +1,28 @@
+2011-07-19  Robert Millan  <rmh@gnu.org>
+
+       * config/mips/gnu-user.h: Copy from linux.h.  Update comments.
+       (GLIBC_DYNAMIC_LINKER): Remove.
+
+       * config/mips/gnu-user64.h: Copy from linux64.h.  Update comments.
+       (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64)
+       (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
+       (BIONIC_DYNAMIC_LINKERN32, GNU_USER_DYNAMIC_LINKERN32): Remove.
+       (LINK_SPEC): Use GNU_USER_DYNAMIC_LINKER32,
+       GNU_USER_DYNAMIC_LINKER64 and GNU_USER_LINK_EMULATIONN32.
+
+       * config/mips/linux.h: Remove everything except for ...
+       (GLIBC_DYNAMIC_LINKER): ... this macro.
+
+       * config/mips/linux64.h: Remove everything except for ...
+       (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64)
+       (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
+       (BIONIC_DYNAMIC_LINKERN32): ... these macros.
+       (GNU_USER_LINK_EMULATION32, GNU_USER_LINK_EMULATION64)
+       (GNU_USER_LINK_EMULATIONN32): New macros.
+
+       * config.gcc (mips64*-*-linux* | mipsisa64*-*-linux* |
+       mips-*-linux*): Use the new headers.
+
 2011-07-19  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * rtl.h (mem_attrs): Turn offset and size fields into HOST_WIDE_INTs.
index 47073e455f42b3459281700a04ff43f62872f100..9215d0c79e86b41583f060560ccb24a9ed8ac591 100644 (file)
@@ -1820,7 +1820,7 @@ mips*-*-netbsd*)                  # NetBSD/mips, either endian.
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        ;;
 mips64*-*-linux* | mipsisa64*-*-linux*)
-       tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h mips/linux64.h"
+       tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h"
        tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16"
        tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
        case ${target} in
@@ -1842,10 +1842,10 @@ mips64*-*-linux* | mipsisa64*-*-linux*)
        test x$with_llsc != x || with_llsc=yes
        ;;
 mips*-*-linux*)                                # Linux MIPS, either endian.
-        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/linux.h"
+        tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h"
        tmake_file="${tmake_file} mips/t-libgcc-mips16"
        if test x$enable_targets = xall; then
-               tm_file="${tm_file} mips/linux64.h"
+               tm_file="${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h"
                tmake_file="${tmake_file} mips/t-linux64"
                tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
        fi
diff --git a/gcc/config/mips/gnu-user.h b/gcc/config/mips/gnu-user.h
new file mode 100644 (file)
index 0000000..49c459b
--- /dev/null
@@ -0,0 +1,140 @@
+/* Definitions for MIPS systems using GNU userspace.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+   2007, 2008, 2010, 2011 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+#undef ASM_DECLARE_OBJECT_NAME
+#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
+
+/* If we don't set MASK_ABICALLS, we can't default to PIC.  */
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT MASK_ABICALLS
+
+#define TARGET_OS_CPP_BUILTINS()                               \
+  do {                                                         \
+    GNU_USER_TARGET_OS_CPP_BUILTINS();                         \
+    /* The GNU C++ standard library requires this.  */         \
+    if (c_dialect_cxx ())                                      \
+      builtin_define ("_GNU_SOURCE");                          \
+  } while (0)
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+/* A standard GNU/Linux mapping.  On most targets, it is included in
+   CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC
+   and provides this hook instead.  */
+#undef SUBTARGET_CC1_SPEC
+#define SUBTARGET_CC1_SPEC "%{profile:-p}"
+
+/* From iris5.h */
+/* -G is incompatible with -KPIC which is the default, so only allow objects
+   in the small data section if the user explicitly asks for it.  */
+#undef MIPS_DEFAULT_GVALUE
+#define MIPS_DEFAULT_GVALUE 0
+
+/* Borrowed from sparc/linux.h */
+#undef LINK_SPEC
+#define LINK_SPEC \
+ "%(endian_spec) \
+  %{shared:-shared} \
+  %{!shared: \
+    %{!static: \
+      %{rdynamic:-export-dynamic} \
+      -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
+      %{static:-static}}"
+
+#undef SUBTARGET_ASM_SPEC
+#define SUBTARGET_ASM_SPEC \
+  "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}}"
+
+/* The MIPS assembler has different syntax for .set. We set it to
+   .dummy to trap any errors.  */
+#undef SET_ASM_OP
+#define SET_ASM_OP "\t.dummy\t"
+
+#undef ASM_OUTPUT_DEF
+#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)                             \
+ do {                                                                  \
+       fputc ( '\t', FILE);                                            \
+       assemble_name (FILE, LABEL1);                                   \
+       fputs ( " = ", FILE);                                           \
+       assemble_name (FILE, LABEL2);                                   \
+       fputc ( '\n', FILE);                                            \
+ } while (0)
+
+/* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
+   it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
+   presence of $gp-relative calls.  */
+#undef ASM_OUTPUT_REG_PUSH
+#undef ASM_OUTPUT_REG_POP
+
+#undef LIB_SPEC
+#define LIB_SPEC "\
+%{pthread:-lpthread} \
+%{shared:-lc} \
+%{!shared: \
+  %{profile:-lc_p} %{!profile:-lc}}"
+
+#ifdef HAVE_AS_NO_SHARED
+/* Default to -mno-shared for non-PIC.  */
+# define NO_SHARED_SPECS \
+  "%{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
+#else
+# define NO_SHARED_SPECS ""
+#endif
+
+/* -march=native handling only makes sense with compiler running on
+   a MIPS chip.  */
+#if defined(__mips__)
+extern const char *host_detect_local_cpu (int argc, const char **argv);
+# define EXTRA_SPEC_FUNCTIONS \
+  { "local_cpu_detect", host_detect_local_cpu },
+
+# define MARCH_MTUNE_NATIVE_SPECS                              \
+  " %{march=native:%<march=native %:local_cpu_detect(arch)}"   \
+  " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
+#else
+# define MARCH_MTUNE_NATIVE_SPECS ""
+#endif
+
+#define LINUX_DRIVER_SELF_SPECS \
+  NO_SHARED_SPECS                                                      \
+  MARCH_MTUNE_NATIVE_SPECS,                                            \
+  /* -mplt has no effect without -mno-shared.  Simplify later          \
+     specs handling by removing a redundant option.  */                        \
+  "%{!mno-shared:%<mplt}",                                             \
+  /* -mplt likewise has no effect for -mabi=64 without -msym32.  */    \
+  "%{mabi=64:%{!msym32:%<mplt}}"
+
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+  BASE_DRIVER_SELF_SPECS, \
+  LINUX_DRIVER_SELF_SPECS
+
+/* Similar to standard Linux, but adding -ffast-math support.  */
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC \
+  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
diff --git a/gcc/config/mips/gnu-user64.h b/gcc/config/mips/gnu-user64.h
new file mode 100644 (file)
index 0000000..91b021d
--- /dev/null
@@ -0,0 +1,60 @@
+/* Definitions for MIPS systems using GNU userspace and n32/64 abi.
+   Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Force the default endianness and ABI flags onto the command line
+   in order to make the other specs easier to write.  */
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS \
+  BASE_DRIVER_SELF_SPECS, \
+  LINUX_DRIVER_SELF_SPECS \
+  " %{!EB:%{!EL:%(endian_spec)}}" \
+  " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}"
+
+#undef LIB_SPEC
+#define LIB_SPEC "\
+%{pthread:-lpthread} \
+%{shared:-lc} \
+%{!shared: \
+  %{profile:-lc_p} %{!profile:-lc}}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
+%{shared} \
+ %(endian_spec) \
+  %{!shared: \
+    %{!static: \
+      %{rdynamic:-export-dynamic} \
+      %{mabi=n32: -dynamic-linker " GNU_USER_DYNAMIC_LINKERN32 "} \
+      %{mabi=64: -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "} \
+      %{mabi=32: -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
+    %{static:-static}} \
+%{mabi=n32:-m" GNU_USER_LINK_EMULATIONN32 "} \
+%{mabi=64:-m" GNU_USER_LINK_EMULATION64 "} \
+%{mabi=32:-m" GNU_USER_LINK_EMULATION32 "}"
+
+#undef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX (TARGET_OLDABI ? "$" : ".")
+
+/* GNU/Linux doesn't use the same floating-point format that IRIX uses
+   for long double.  There's no need to override this here, since
+   ieee_quad_format is the default, but let's put this here to make
+   sure nobody thinks we just forgot to set it to something else.  */
+#define MIPS_TFMODE_FORMAT mips_quad_format
index 544a99f2d0b465a38a9322babcdeaa1feec0098d..bce9c1793f22b7945cdae5137a44acca677f65d2 100644 (file)
@@ -18,125 +18,4 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
-
-#undef ASM_DECLARE_OBJECT_NAME
-#define ASM_DECLARE_OBJECT_NAME mips_declare_object_name
-
-/* If we don't set MASK_ABICALLS, we can't default to PIC.  */
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT MASK_ABICALLS
-
-#define TARGET_OS_CPP_BUILTINS()                               \
-  do {                                                         \
-    GNU_USER_TARGET_OS_CPP_BUILTINS();                         \
-    /* The GNU C++ standard library requires this.  */         \
-    if (c_dialect_cxx ())                                      \
-      builtin_define ("_GNU_SOURCE");                          \
-  } while (0)
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-
-/* A standard GNU/Linux mapping.  On most targets, it is included in
-   CC1_SPEC itself by config/linux.h, but mips.h overrides CC1_SPEC
-   and provides this hook instead.  */
-#undef SUBTARGET_CC1_SPEC
-#define SUBTARGET_CC1_SPEC "%{profile:-p}"
-
-/* From iris5.h */
-/* -G is incompatible with -KPIC which is the default, so only allow objects
-   in the small data section if the user explicitly asks for it.  */
-#undef MIPS_DEFAULT_GVALUE
-#define MIPS_DEFAULT_GVALUE 0
-
 #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-
-/* Borrowed from sparc/linux.h */
-#undef LINK_SPEC
-#define LINK_SPEC \
- "%(endian_spec) \
-  %{shared:-shared} \
-  %{!shared: \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
-      %{static:-static}}"
-
-#undef SUBTARGET_ASM_SPEC
-#define SUBTARGET_ASM_SPEC \
-  "%{!mno-abicalls:%{mplt:-call_nonpic;:-KPIC}}"
-
-/* The MIPS assembler has different syntax for .set. We set it to
-   .dummy to trap any errors.  */
-#undef SET_ASM_OP
-#define SET_ASM_OP "\t.dummy\t"
-
-#undef ASM_OUTPUT_DEF
-#define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)                             \
- do {                                                                  \
-       fputc ( '\t', FILE);                                            \
-       assemble_name (FILE, LABEL1);                                   \
-       fputs ( " = ", FILE);                                           \
-       assemble_name (FILE, LABEL2);                                   \
-       fputc ( '\n', FILE);                                            \
- } while (0)
-
-/* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
-   it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
-   presence of $gp-relative calls.  */
-#undef ASM_OUTPUT_REG_PUSH
-#undef ASM_OUTPUT_REG_POP
-
-#undef LIB_SPEC
-#define LIB_SPEC "\
-%{pthread:-lpthread} \
-%{shared:-lc} \
-%{!shared: \
-  %{profile:-lc_p} %{!profile:-lc}}"
-
-#ifdef HAVE_AS_NO_SHARED
-/* Default to -mno-shared for non-PIC.  */
-# define NO_SHARED_SPECS \
-  "%{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
-#else
-# define NO_SHARED_SPECS ""
-#endif
-
-/* -march=native handling only makes sense with compiler running on
-   a MIPS chip.  */
-#if defined(__mips__)
-extern const char *host_detect_local_cpu (int argc, const char **argv);
-# define EXTRA_SPEC_FUNCTIONS \
-  { "local_cpu_detect", host_detect_local_cpu },
-
-# define MARCH_MTUNE_NATIVE_SPECS                              \
-  " %{march=native:%<march=native %:local_cpu_detect(arch)}"   \
-  " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
-#else
-# define MARCH_MTUNE_NATIVE_SPECS ""
-#endif
-
-#define LINUX_DRIVER_SELF_SPECS \
-  NO_SHARED_SPECS                                                      \
-  MARCH_MTUNE_NATIVE_SPECS,                                            \
-  /* -mplt has no effect without -mno-shared.  Simplify later          \
-     specs handling by removing a redundant option.  */                        \
-  "%{!mno-shared:%<mplt}",                                             \
-  /* -mplt likewise has no effect for -mabi=64 without -msym32.  */    \
-  "%{mabi=64:%{!msym32:%<mplt}}"
-
-#undef DRIVER_SELF_SPECS
-#define DRIVER_SELF_SPECS \
-  BASE_DRIVER_SELF_SPECS, \
-  LINUX_DRIVER_SELF_SPECS
-
-/* Similar to standard Linux, but adding -ffast-math support.  */
-#undef  ENDFILE_SPEC
-#define ENDFILE_SPEC \
-  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
-   %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
index cfdae5a1e61a2be0dd9016b041a28cb1a19b8161..6e92719881bcd81b81ac504a5fa449a69a151cff 100644 (file)
@@ -19,21 +19,9 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* Force the default endianness and ABI flags onto the command line
-   in order to make the other specs easier to write.  */
-#undef DRIVER_SELF_SPECS
-#define DRIVER_SELF_SPECS \
-  BASE_DRIVER_SELF_SPECS, \
-  LINUX_DRIVER_SELF_SPECS \
-  " %{!EB:%{!EL:%(endian_spec)}}" \
-  " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}"
-
-#undef LIB_SPEC
-#define LIB_SPEC "\
-%{pthread:-lpthread} \
-%{shared:-lc} \
-%{!shared: \
-  %{profile:-lc_p} %{!profile:-lc}}"
+#define GNU_USER_LINK_EMULATION32 "elf32%{EB:b}%{EL:l}tsmip"
+#define GNU_USER_LINK_EMULATION64 "elf64%{EB:b}%{EL:l}tsmip"
+#define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
 
 #define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
 #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
@@ -43,28 +31,3 @@ along with GCC; see the file COPYING3.  If not see
 #define GNU_USER_DYNAMIC_LINKERN32 \
   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
                         BIONIC_DYNAMIC_LINKERN32)
-
-#undef LINK_SPEC
-#define LINK_SPEC "\
-%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
-%{shared} \
- %(endian_spec) \
-  %{!shared: \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      %{mabi=n32: -dynamic-linker " GNU_USER_DYNAMIC_LINKERN32 "} \
-      %{mabi=64: -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "} \
-      %{mabi=32: -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
-    %{static:-static}} \
-%{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \
-%{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \
-%{mabi=32:-melf32%{EB:b}%{EL:l}tsmip}"
-
-#undef LOCAL_LABEL_PREFIX
-#define LOCAL_LABEL_PREFIX (TARGET_OLDABI ? "$" : ".")
-
-/* GNU/Linux doesn't use the same floating-point format that IRIX uses
-   for long double.  There's no need to override this here, since
-   ieee_quad_format is the default, but let's put this here to make
-   sure nobody thinks we just forgot to set it to something else.  */
-#define MIPS_TFMODE_FORMAT mips_quad_format