From 3eab78f4e61cc95bb25cab00010d52680ba578f1 Mon Sep 17 00:00:00 2001 From: Chao-ying Fu Date: Tue, 24 Apr 2012 18:23:12 +0000 Subject: [PATCH] config.gcc (mips64*-*-linux*): Append mips/linux-common.h to tm_file. 2012-04-24 Chao-ying Fu * config.gcc (mips64*-*-linux*): Append mips/linux-common.h to tm_file. (mips*-*-linux*): Append mips/linux-common.h to tm_file. * config/mips/gnu-user.h (SUBTARGET_CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC directly. (GNU_USER_TARGET_LINK_SPEC): New define. (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC. (LIB_SPEC): Use GNU_USER_TARGET_LIB_SPEC directly. (GNU_USER_TARGET_MATHFILE_SPEC): New define. (ENDFILE_SPEC): Use GNU_USER_TARGET_MATHFILE_SPEC and GNU_USER_TARGET_ENDFILE_SPEC. * config/mips/gnu-user64.h (LIB_SPEC): Remove. (GNU_USER_TARGET_LINK_SPEC): New define. (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC. * config/mips/linux-common.h: New file. From-SVN: r186777 --- gcc/ChangeLog | 17 +++++++++++++ gcc/config.gcc | 3 ++- gcc/config/mips/gnu-user.h | 21 +++++++-------- gcc/config/mips/gnu-user64.h | 13 +++------- gcc/config/mips/linux-common.h | 58 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 gcc/config/mips/linux-common.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5eb9411..96e0fb9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2012-04-24 Chao-ying Fu + + * config.gcc (mips64*-*-linux*): Append mips/linux-common.h to tm_file. + (mips*-*-linux*): Append mips/linux-common.h to tm_file. + * config/mips/gnu-user.h + (SUBTARGET_CC1_SPEC): Use GNU_USER_TARGET_CC1_SPEC directly. + (GNU_USER_TARGET_LINK_SPEC): New define. + (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC. + (LIB_SPEC): Use GNU_USER_TARGET_LIB_SPEC directly. + (GNU_USER_TARGET_MATHFILE_SPEC): New define. + (ENDFILE_SPEC): Use GNU_USER_TARGET_MATHFILE_SPEC and + GNU_USER_TARGET_ENDFILE_SPEC. + * config/mips/gnu-user64.h (LIB_SPEC): Remove. + (GNU_USER_TARGET_LINK_SPEC): New define. + (LINK_SPEC): Use GNU_USER_TARGET_LINK_SPEC. + * config/mips/linux-common.h: New file. + 2012-04-24 Bill Schmidt PR target/47197 diff --git a/gcc/config.gcc b/gcc/config.gcc index 63d6612..6e4666e 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1712,7 +1712,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/gnu-user.h mips/gnu-user64.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 mips/linux-common.h" tmake_file="${tmake_file} mips/t-linux64" tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" case ${target} in @@ -1738,6 +1738,7 @@ mips*-*-linux*) # Linux MIPS, either endian. tm_file="${tm_file} mips/gnu-user64.h mips/linux64.h" tmake_file="${tmake_file} mips/t-linux64" fi + tm_file="${tm_file} mips/linux-common.h" case ${target} in mipsisa32r2*) tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33" diff --git a/gcc/config/mips/gnu-user.h b/gcc/config/mips/gnu-user.h index af03c3d..d35ddac 100644 --- a/gcc/config/mips/gnu-user.h +++ b/gcc/config/mips/gnu-user.h @@ -46,7 +46,7 @@ along with GCC; see the file COPYING3. If not see 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}" +#define SUBTARGET_CC1_SPEC GNU_USER_TARGET_CC1_SPEC /* -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. */ @@ -54,8 +54,8 @@ along with GCC; see the file COPYING3. If not see #define MIPS_DEFAULT_GVALUE 0 /* Borrowed from sparc/linux.h */ -#undef LINK_SPEC -#define LINK_SPEC \ +#undef GNU_USER_TARGET_LINK_SPEC +#define GNU_USER_TARGET_LINK_SPEC \ "%(endian_spec) \ %{shared:-shared} \ %{!shared: \ @@ -63,6 +63,8 @@ along with GCC; see the file COPYING3. If not see %{rdynamic:-export-dynamic} \ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ %{static:-static}}" +#undef LINK_SPEC +#define LINK_SPEC GNU_USER_TARGET_LINK_SPEC #undef SUBTARGET_ASM_SPEC #define SUBTARGET_ASM_SPEC \ @@ -90,11 +92,7 @@ along with GCC; see the file COPYING3. If not see #undef ASM_OUTPUT_REG_POP #undef LIB_SPEC -#define LIB_SPEC "\ -%{pthread:-lpthread} \ -%{shared:-lc} \ -%{!shared: \ - %{profile:-lc_p} %{!profile:-lc}}" +#define LIB_SPEC GNU_USER_TARGET_LIB_SPEC #ifdef HAVE_AS_NO_SHARED /* Default to -mno-shared for non-PIC. */ @@ -133,7 +131,10 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); LINUX_DRIVER_SELF_SPECS /* Similar to standard Linux, but adding -ffast-math support. */ +#undef GNU_USER_TARGET_MATHFILE_SPEC +#define GNU_USER_TARGET_MATHFILE_SPEC \ + "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" #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" + GNU_USER_TARGET_MATHFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC diff --git a/gcc/config/mips/gnu-user64.h b/gcc/config/mips/gnu-user64.h index a4e2649..ad59ba4 100644 --- a/gcc/config/mips/gnu-user64.h +++ b/gcc/config/mips/gnu-user64.h @@ -27,15 +27,8 @@ along with GCC; see the file COPYING3. If not see " %{!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 "\ +#undef GNU_USER_TARGET_LINK_SPEC +#define GNU_USER_TARGET_LINK_SPEC "\ %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \ %{shared} \ %(endian_spec) \ @@ -49,6 +42,8 @@ along with GCC; see the file COPYING3. If not see %{mabi=n32:-m" GNU_USER_LINK_EMULATIONN32 "} \ %{mabi=64:-m" GNU_USER_LINK_EMULATION64 "} \ %{mabi=32:-m" GNU_USER_LINK_EMULATION32 "}" +#undef LINK_SPEC +#define LINK_SPEC GNU_USER_TARGET_LINK_SPEC #undef LOCAL_LABEL_PREFIX #define LOCAL_LABEL_PREFIX (TARGET_OLDABI ? "$" : ".") diff --git a/gcc/config/mips/linux-common.h b/gcc/config/mips/linux-common.h new file mode 100644 index 0000000..b811b46 --- /dev/null +++ b/gcc/config/mips/linux-common.h @@ -0,0 +1,58 @@ +/* Definitions for MIPS running Linux-based GNU systems with ELF format. + Copyright (C) 2012 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 +. */ + +#undef TARGET_OS_CPP_BUILTINS +#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"); \ + ANDROID_TARGET_OS_CPP_BUILTINS(); \ + } while (0) + +#undef LINK_SPEC +#define LINK_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC, \ + GNU_USER_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC) + +#undef SUBTARGET_CC1_SPEC +#define SUBTARGET_CC1_SPEC \ + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \ + GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC) + +#undef CC1PLUS_SPEC +#define CC1PLUS_SPEC \ + LINUX_OR_ANDROID_CC ("", ANDROID_CC1PLUS_SPEC) + +#undef LIB_SPEC +#define LIB_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \ + GNU_USER_TARGET_LIB_SPEC " " ANDROID_LIB_SPEC) + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC) + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_MATHFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC, \ + GNU_USER_TARGET_MATHFILE_SPEC " " \ + ANDROID_ENDFILE_SPEC) -- 2.7.4