From: sje Date: Mon, 10 Sep 2012 17:28:20 +0000 (+0000) Subject: 2012-09-10 Steve Ellcey X-Git-Tag: upstream/4.9.2~10728 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=32108f3d15010fe263b4c6662a60f8991bfd086b;p=platform%2Fupstream%2Flinaro-gcc.git 2012-09-10 Steve Ellcey * config.gcc: Add mips*-mti-linux* target Handle with_synci like other options. * config/mips/gnu-user64.h (LINUX64_DRIVER_SELF_SPECS): New. (DRIVER_SELF_SPECS): Define in terms of LINUX64_DRIVER_SELF_SPECS. * config/mips/mips.h (MIPS_ISA_SYNCI_SPEC): New. * config/mips/mti-linux.h: New file. * config/mips/t-mti-linux: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191155 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c550f8b..3abb393 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2012-09-10 Steve Ellcey + + * config.gcc: Add mips*-mti-linux* target + Handle with_synci like other options. + * config/mips/gnu-user64.h (LINUX64_DRIVER_SELF_SPECS): New. + (DRIVER_SELF_SPECS): Define in terms of LINUX64_DRIVER_SELF_SPECS. + * config/mips/mips.h (MIPS_ISA_SYNCI_SPEC): New. + * config/mips/mti-linux.h: New file. + * config/mips/t-mti-linux: New file. + 2012-09-10 Marc Glisse * tree-ssa-forwprop.c (simplify_permutation): Handle CONSTRUCTOR. diff --git a/gcc/config.gcc b/gcc/config.gcc index 6d9c68d..ba366b3 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1696,6 +1696,14 @@ mips*-*-netbsd*) # NetBSD/mips, either endian. tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h" extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ;; +mips*-mti-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 mips/linux-common.h mips/mti-linux.h" + tmake_file="${tmake_file} mips/t-mti-linux" + tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32" + gnu_ld=yes + gas=yes + test x$with_llsc != x || with_llsc=yes + ;; 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 mips/linux-common.h" tmake_file="${tmake_file} mips/t-linux64" @@ -3273,10 +3281,11 @@ case "${target}" in yes) with_synci=synci ;; - "" | no) - # No is the default. + no) with_synci=no-synci ;; + "") + ;; *) echo "Unknown synci type used in --with-synci" 1>&2 exit 1 diff --git a/gcc/config/mips/gnu-user64.h b/gcc/config/mips/gnu-user64.h index ad59ba4..7c2187f 100644 --- a/gcc/config/mips/gnu-user64.h +++ b/gcc/config/mips/gnu-user64.h @@ -20,13 +20,17 @@ along with GCC; see the file COPYING3. If not see /* 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, \ + +#define LINUX64_DRIVER_SELF_SPECS \ LINUX_DRIVER_SELF_SPECS \ " %{!EB:%{!EL:%(endian_spec)}}" \ " %{!mabi=*: -" MULTILIB_ABI_DEFAULT "}" +#undef DRIVER_SELF_SPECS +#define DRIVER_SELF_SPECS \ + BASE_DRIVER_SELF_SPECS, \ + LINUX64_DRIVER_SELF_SPECS + #undef GNU_USER_TARGET_LINK_SPEC #define GNU_USER_TARGET_LINK_SPEC "\ %{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \ diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index 9ce466d..e04f099 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -728,6 +728,11 @@ struct mips_cpu_info { #define MIPS_32BIT_OPTION_SPEC \ "mips1|mips2|mips32*|mgp32" +/* Infer a -msynci setting from a -mips argument, on the assumption that + -msynci is desired where possible. */ +#define MIPS_ISA_SYNCI_SPEC \ + "%{msynci|mno-synci:;:%{mips32r2|mips64r2:-msynci;:-mno-synci}}" + #if MIPS_ABI_DEFAULT == ABI_O64 \ || MIPS_ABI_DEFAULT == ABI_N32 \ || MIPS_ABI_DEFAULT == ABI_64 @@ -762,7 +767,6 @@ struct mips_cpu_info { {"mips-plt", "%{!mplt:%{!mno-plt:-m%(VALUE)}}" }, \ {"synci", "%{!msynci:%{!mno-synci:-m%(VALUE)}}" } - /* A spec that infers the -mdsp setting from an -march argument. */ #define BASE_DRIVER_SELF_SPECS \ "%{!mno-dsp: \ diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h new file mode 100644 index 0000000..36c003c --- /dev/null +++ b/gcc/config/mips/mti-linux.h @@ -0,0 +1,43 @@ +/* Target macros for mips*-mti-linux* targets. + 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 +. */ + +/* This target is a multilib target, specify the sysroot paths. */ +#undef SYSROOT_SUFFIX_SPEC +#define SYSROOT_SUFFIX_SPEC \ + "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{msoft-float:/sof}%{mel|EL:/el}%{mabi=64:/64}%{mabi=n32:/n32}" + +#undef DRIVER_SELF_SPECS +#define DRIVER_SELF_SPECS \ + /* Make sure a -mips option is present. This helps us to pick \ + the right multilib, and also makes the later specs easier \ + to write. */ \ + MIPS_ISA_LEVEL_SPEC, \ + \ + /* Infer the default float setting from -march. */ \ + MIPS_ARCH_FLOAT_SPEC, \ + \ + /* Infer the -msynci setting from -march if not explicitly set. */ \ + MIPS_ISA_SYNCI_SPEC, \ + \ + /* Base SPECs. */ \ + BASE_DRIVER_SELF_SPECS \ + \ + /* Use the standard linux specs for everything else. */ \ + LINUX64_DRIVER_SELF_SPECS diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux new file mode 100644 index 0000000..ba11706 --- /dev/null +++ b/gcc/config/mips/t-mti-linux @@ -0,0 +1,24 @@ +# 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 +# . + +# The default build is mips32r2, hard-float big-endian. Add mips32, +# soft-float, and little-endian variations. + +MULTILIB_OPTIONS = mips32/mips64/mips64r2 msoft-float EL +MULTILIB_DIRNAMES = mips32 mips64 mips64r2 sof el +MULTILIB_MATCHES = EL=mel EB=meb