This patch is the first of a series to remove support for the now
obsolete FPA and Maverick co-processors.
This patch removes those targets and configuration options that were
marked as deprecated in GCC-4.7 and removes the config fragments that
depended on them.
* config.gcc (unsupported): Move obsoleted FPA-based configurations
here from ...
(obsolete): ... here.
(arm*-*-freebsd*): Remove.
(arm*-*-linux*): Only accept EABI variants. Simplify logic.
(arm*-*-uclinux*): Likewise.
(arm*-*-ecos-elf): Remove.
(arm*-*-rtems*): Remove.
(arm*-*-elf): Remove.
(arm*-wince-pe*): Remove.
(arm, --with-fpu): Remove support for fpa and Maverick variants.
* arm/ecos-elf.h: Delete.
* arm/t-strongarm-elf: Delete.
* arm/rtems-elf.h: Delete.
* arm/wince-pe.h: Delete.
* arm/pe.c: Delete.
* arm/pe.h: Delete.
* arm/t-wince-pe: Delete.
Tested by building the following variants:
Deleted builds (confirmed that configuration of gcc fails):
arm-elf
arm-linux
Remaining builds (confirmed that a cc1 is still built):
arm-linux-gnueabi
arm-vxworks
arm-netbsdelf
arm-rtemseabi
arm-symbianelf
R.
Index: config.gcc
===================================================================
--- config.gcc (revision 188463)
+++ config.gcc (working copy)
@@ -245,18 +245,7 @@ md_file=
# Obsolete configurations.
case ${target} in
- # Avoid special cases that are not obsolete
- arm*-*-*eabi* \
- )
- ;;
- arm*-*-ecos-elf \
- | arm*-*-elf \
- | arm*-*-freebsd* \
- | arm*-*-linux* \
- | arm*-*-rtems* \
- | arm*-*-uclinux* \
- | arm*-wince-pe* \
- | score-* \
+ score-* \
)
if test "x$enable_obsolete" != xyes; then
echo "*** Configuration ${target} is obsolete." >&2
@@ -271,7 +260,18 @@ esac
# it would otherwise be caught by a more permissive pattern. The list
# should be in alphabetical order.
case ${target} in
- i[34567]86-go32-* \
+ # Avoid special cases that are not obsolete
+ arm*-*-*eabi* \
+ )
+ ;;
+ arm*-wince-pe* \
+ | arm*-*-ecos-elf \
+ | arm*-*-elf \
+ | arm*-*-freebsd* \
+ | arm*-*-linux* \
+ | arm*-*-rtems* \
+ | arm*-*-uclinux* \
+ | i[34567]86-go32-* \
| i[34567]86-*-go32* \
| m68k-*-uclinuxoldabi* \
| mips64orion*-*-rtems* \
@@ -818,66 +818,44 @@ arm-wrs-vxworks)
extra_options="${extra_options} arm/vxworks.opt"
tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
;;
-arm*-*-freebsd*)
- tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h arm/aout.h
arm/freebsd.h arm/arm.h"
- tmake_file="${tmake_file} arm/t-arm arm/t-strongarm-elf"
- ;;
arm*-*-netbsdelf*)
tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h
arm/arm.h arm/netbsd-elf.h"
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
tmake_file="${tmake_file} arm/t-arm"
;;
-arm*-*-linux*) # ARM GNU/Linux with ELF
+arm*-*-linux-*eabi*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h
glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
case $target in
arm*b-*-linux*)
- tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
- ;;
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
+ ;;
esac
- tmake_file="${tmake_file} arm/t-arm"
+ tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi
arm/t-linux-eabi"
+ tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
+ # Define multilib configuration for arm-linux-androideabi.
case ${target} in
- arm*-*-linux-*eabi)
- tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
- tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
- # Define multilib configuration for arm-linux-androideabi.
- case ${target} in
- *-androideabi)
- tmake_file="$tmake_file arm/t-linux-androideabi"
- ;;
- esac
- # The BPABI long long divmod functions return a 128-bit value in
- # registers r0-r3. Correctly modeling that requires the use of
- # TImode.
- need_64bit_hwint=yes
- # The EABI requires the use of __cxa_atexit.
- default_use_cxa_atexit=yes
- ;;
- *)
- tmake_file="$tmake_file arm/t-linux"
+ *-androideabi)
+ tmake_file="$tmake_file arm/t-linux-androideabi"
;;
esac
+ # The BPABI long long divmod functions return a 128-bit value in
+ # registers r0-r3. Correctly modeling that requires the use of
+ # TImode.
+ need_64bit_hwint=yes
+ # The EABI requires the use of __cxa_atexit.
+ default_use_cxa_atexit=yes
with_tls=${with_tls:-gnu}
- tm_file="$tm_file arm/aout.h arm/arm.h"
;;
-arm*-*-uclinux*) # ARM ucLinux
+arm*-*-uclinux*eabi*) # ARM ucLinux
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h
arm/uclinux-elf.h glibc-stdint.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
- case ${target} in
- arm*-*-uclinux*eabi)
- tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
- tmake_file="$tmake_file arm/t-bpabi"
- # The BPABI long long divmod functions return a 128-bit value in
- # registers r0-r3. Correctly modeling that requires the use of
- # TImode.
- need_64bit_hwint=yes
- # The EABI requires the use of __cxa_atexit.
- default_use_cxa_atexit=yes
- esac
- tm_file="$tm_file arm/aout.h arm/arm.h"
- ;;
-arm*-*-ecos-elf)
- tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h
arm/aout.h arm/arm.h arm/ecos-elf.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
+ tmake_file="arm/t-arm arm/t-arm-elf arm/t-bpabi"
+ tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
+ # The BPABI long long divmod functions return a 128-bit value in
+ # registers r0-r3. Correctly modeling that requires the use of
+ # TImode.
+ need_64bit_hwint=yes
+ # The EABI requires the use of __cxa_atexit.
+ default_use_cxa_atexit=yes
;;
arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtemseabi*)
# The BPABI long long divmod functions return a 128-bit value in
@@ -906,20 +884,6 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*
esac
tm_file="${tm_file} arm/aout.h arm/arm.h"
;;
-arm*-*-rtems*)
- tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h
arm/arm.h arm/rtems-elf.h rtems.h newlib-stdint.h"
- tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
- ;;
-arm*-*-elf)
- tm_file="dbxelf.h elfos.h newlib-stdint.h arm/unknown-elf.h arm/elf.h
arm/aout.h arm/arm.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
- ;;
-arm*-wince-pe*)
- tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h
arm/wince-pe.h"
- tmake_file="arm/t-arm arm/t-wince-pe"
- extra_options="${extra_options} arm/pe.opt"
- extra_objs="pe.o"
- ;;
avr-*-rtems*)
tm_file="elfos.h avr/elf.h avr/avr.h dbxelf.h avr/rtems.h rtems.h
newlib-stdint.h"
tmake_file="avr/t-avr avr/t-multilib t-rtems avr/t-rtems"
@@ -3048,14 +3012,6 @@ case "${target}" in
| fpv4-sp-d16 | neon-vfpv4)
# OK
;;
- fpa | fpe2 | fpe3 | maverick)
- if test "x$enable_obsolete" != xyes; then
- echo "*** Configuration option
--with-fpu=${with_fpu} is obsolete." >&2
- echo "*** Specify --enable-obsolete to build it
anyway." >&2
- echo "*** Support will be REMOVED in the next major
release of GCC." >&2
- exit 1
- fi
- ;;
*)
echo "Unknown fpu used in --with-fpu=$with_fpu" 2>&1
exit 1
Index: config/arm/ecos-elf.h
===================================================================
--- config/arm/ecos-elf.h (revision 188463)
+++ config/arm/ecos-elf.h (working copy)
@@ -1,24 +0,0 @@
-/* Definitions for ecos based ARM systems using ELF
- Copyright (C) 1998, 2001, 2007, 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/>. */
-
-/* Run-time Target Specification. */
-#define HAS_INIT_SECTION
-
-#undef INVOKE_main
-
Index: config/arm/t-strongarm-elf
===================================================================
--- config/arm/t-strongarm-elf (revision 188463)
+++ config/arm/t-strongarm-elf (working copy)
@@ -1,23 +0,0 @@
-# Copyright (C) 2000, 2001, 2006, 2008, 2009, 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/>.
-
-MULTILIB_OPTIONS = mlittle-endian/mbig-endian
mfloat-abi=hard/mfloat-abi=soft
-MULTILIB_DIRNAMES = le be fpu soft
-MULTILIB_EXCEPTIONS =
-MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
Index: config/arm/rtems-elf.h
===================================================================
--- config/arm/rtems-elf.h (revision 188463)
+++ config/arm/rtems-elf.h (working copy)
@@ -1,44 +0,0 @@
-/* Definitions for RTEMS based ARM systems using ELF
- Copyright (C) 2000, 2002, 2005, 2007, 2008, 2009, 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/>. */
-
-/* Run-time Target Specification. */
-
-#define HAS_INIT_SECTION
-
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__rtems__"); \
- builtin_define ("__USE_INIT_FINI__"); \
- builtin_assert ("system=rtems"); \
- } while (0)
-
-/*
- * The default in gcc now is soft-float, but gcc misses it to
- * pass it to the assembler.
- */
-#undef SUBTARGET_EXTRA_ASM_SPEC
-#define SUBTARGET_EXTRA_ASM_SPEC "\
- %{!mfloat-abi=hard: %{!mfpu=vfp: %{!mfloat-abi=soft:-mfpu=softfpa}}}"
-
-/*
- * The default includes --start-group and --end-group which conflicts
- * with how this used to be defined.
- */
-#undef LINK_GCC_C_SEQUENCE_SPEC
Index: config/arm/wince-pe.h
===================================================================
--- config/arm/wince-pe.h (revision 188463)
+++ config/arm/wince-pe.h (working copy)
@@ -1,26 +0,0 @@
-/* Definitions of target machine for GNU compiler, for ARM with WINCE-PE obj
format.
- Copyright (C) 2003, 2004, 2005, 2007, 2011 Free Software Foundation, Inc.
- Contributed by Nick Clifton <ni...@redhat.com>
-
- 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 TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_NOP_FUN_DLLIMPORT)
-
-#undef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS \
- { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
Index: config/arm/t-rtems
===================================================================
--- config/arm/t-rtems (revision 188463)
+++ config/arm/t-rtems (working copy)
@@ -1,45 +0,0 @@
-# Custom rtems multilibs
-
-MULTILIB_OPTIONS = marm/mthumb
-MULTILIB_DIRNAMES = arm thumb
-MULTILIB_EXCEPTIONS =
-MULTILIB_MATCHES = marm=mno-thumb
-
-MULTILIB_OPTIONS += mfloat-abi=hard/mfloat-abi=softfp
-MULTILIB_DIRNAMES += fpu softfp
-MULTILIB_EXCEPTIONS += *mthumb*/*mfloat-abi=hard* *mthumb*/*mfloat-abi=softfp*
-MULTILIB_MATCHES =
-
-MULTILIB_OPTIONS += mfpu=vfp
-MULTILIB_DIRNAMES += vfp
-MULTILIB_EXCEPTIONS += *mfloat-abi=hard*/*mfpu=vfp*
*marm*/*mfloat-abi=softfp*/*mfpu=fpa*
-MULTILIB_EXCLUSIONS += !mthumb/mfloat-abi=softfp/!mfpu=vfp
-
-# default float model is fpa, so don't create a explicit copy of it
-MULTILIB_EXCEPTIONS += *marm*/*mfpa*
-
-# permutations of the options which are useful (+) or make no sense (-),
-# defaults are in brackets:
-# + (arm/soft/fpa)
-# + (arm/soft)/vfp
-# - (arm)/softfp(/fpa)
-# + (arm)/softfp/vfp
-# + (arm)/float-abi=hard(/fpa)
-# - (arm)/float-abi=hard/vfp
-# + thumb/(soft/fpa)
-# + thumb/(soft/)vfp
-# - thumb/softfp/fpa
-# - thumb/softfp/vfp
-# - thumb/float-abi=hard/fpa
-# - thumb/float-abi=hard/vfp
-
-# subdirs to be used for multilibs and their respective options:
-#/thumb/vfp -> thumb/soft/vfp
-#/thumb/fpa -> thumb/soft/fpa
-#/thumb -> thumb/soft/fpa
-#/vfp -> arm/soft/vfp
-#/softfp/vfp -> arm/softfp/cfp
-#/fpu/fpa -> arm/hard/fpa
-#/fpu -> arm/hard/fpa
-#/fpa -> arm/soft/fpa
-#. -> arm/soft/fpa
Index: config/arm/pe.opt
===================================================================
--- config/arm/pe.opt (revision 188463)
+++ config/arm/pe.opt (working copy)
@@ -1,23 +0,0 @@
-; PE-specific options for the ARM port
-
-; Copyright (C) 2005, 2007 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/>.
-
-mnop-fun-dllimport
-Target Report Mask(NOP_FUN_DLLIMPORT)
-Ignore dllimport attribute for functions
Index: config/arm/pe.c
===================================================================
--- config/arm/pe.c (revision 188463)
+++ config/arm/pe.c (working copy)
@@ -1,257 +0,0 @@
-/* Routines for GCC for ARM/pe.
- Copyright (C) 1995, 1996, 2000, 2001, 2002, 2004, 2005, 2007, 2008, 2010
- Free Software Foundation, Inc.
- Contributed by Doug Evans (d...@cygnus.com).
-
- 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/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "rtl.h"
-#include "output.h"
-#include "flags.h"
-#include "tree.h"
-#include "expr.h"
-#include "diagnostic-core.h"
-#include "tm_p.h"
-
-extern int current_function_anonymous_args;
-
-
-/* Return nonzero if DECL is a dllexport'd object. */
-
-tree current_class_type; /* FIXME */
-
-int
-arm_dllexport_p (tree decl)
-{
- tree exp;
-
- if (TREE_CODE (decl) != VAR_DECL
- && TREE_CODE (decl) != FUNCTION_DECL)
- return 0;
- exp = lookup_attribute ("dllexport", DECL_ATTRIBUTES (decl));
- if (exp)
- return 1;
-
- return 0;
-}
-
-/* Return nonzero if DECL is a dllimport'd object. */
-
-int
-arm_dllimport_p (tree decl)
-{
- tree imp;
-
- if (TREE_CODE (decl) == FUNCTION_DECL
- && TARGET_NOP_FUN_DLLIMPORT)
- return 0;
-
- if (TREE_CODE (decl) != VAR_DECL
- && TREE_CODE (decl) != FUNCTION_DECL)
- return 0;
- imp = lookup_attribute ("dllimport", DECL_ATTRIBUTES (decl));
- if (imp)
- return 1;
-
- return 0;
-}
-
-/* Return nonzero if SYMBOL is marked as being dllexport'd. */
-
-int
-arm_dllexport_name_p (const char *symbol)
-{
- return symbol[0] == ARM_PE_FLAG_CHAR && symbol[1] == 'e' && symbol[2] == '.';
-}
-
-/* Return nonzero if SYMBOL is marked as being dllimport'd. */
-
-int
-arm_dllimport_name_p (const char *symbol)
-{
- return symbol[0] == ARM_PE_FLAG_CHAR && symbol[1] == 'i' && symbol[2] == '.';
-}
-
-/* Mark a DECL as being dllexport'd.
- Note that we override the previous setting (e.g.: dllimport). */
-
-void
-arm_mark_dllexport (tree decl)
-{
- const char * oldname;
- char * newname;
- rtx rtlname;
- tree idp;
-
- rtlname = XEXP (DECL_RTL (decl), 0);
- if (GET_CODE (rtlname) == MEM)
- rtlname = XEXP (rtlname, 0);
- gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
- oldname = XSTR (rtlname, 0);
-
- if (arm_dllimport_name_p (oldname))
- oldname += 9;
- else if (arm_dllexport_name_p (oldname))
- return; /* already done */
-
- newname = XALLOCAVEC (char, strlen (oldname) + 4);
- sprintf (newname, "%ce.%s", ARM_PE_FLAG_CHAR, oldname);
-
- /* We pass newname through get_identifier to ensure it has a unique
- address. RTL processing can sometimes peek inside the symbol ref
- and compare the string's addresses to see if two symbols are
- identical. */
- /* ??? At least I think that's why we do this. */
- idp = get_identifier (newname);
-
- XEXP (DECL_RTL (decl), 0) =
- gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
-}
-
-/* Mark a DECL as being dllimport'd. */
-
-void
-arm_mark_dllimport (tree decl)
-{
- const char * oldname;
- char * newname;
- tree idp;
- rtx rtlname, newrtl;
-
- rtlname = XEXP (DECL_RTL (decl), 0);
-
- if (GET_CODE (rtlname) == MEM)
- rtlname = XEXP (rtlname, 0);
- gcc_assert (GET_CODE (rtlname) == SYMBOL_REF);
- oldname = XSTR (rtlname, 0);
-
- gcc_assert (!arm_dllexport_name_p (oldname));
- if (arm_dllimport_name_p (oldname))
- return; /* already done */
-
- /* ??? One can well ask why we're making these checks here,
- and that would be a good question. */
-
- /* Imported variables can't be initialized. */
- if (TREE_CODE (decl) == VAR_DECL
- && !DECL_VIRTUAL_P (decl)
- && DECL_INITIAL (decl))
- {
- error ("initialized variable %q+D is marked dllimport", decl);
- return;
- }
- /* Nor can they be static. */
- if (TREE_CODE (decl) == VAR_DECL
- /* ??? Is this test for vtables needed? */
- && !DECL_VIRTUAL_P (decl)
- && 0 /*???*/)
- {
- error ("static variable %q+D is marked dllimport", decl);
- return;
- }
-
- /* `extern' needn't be specified with dllimport.
- Specify `extern' now and hope for the best. Sigh. */
- if (TREE_CODE (decl) == VAR_DECL
- /* ??? Is this test for vtables needed? */
- && !DECL_VIRTUAL_P (decl))
- {
- DECL_EXTERNAL (decl) = 1;
- TREE_PUBLIC (decl) = 1;
- }
-
- newname = XALLOCAVEC (char, strlen (oldname) + 11);
- sprintf (newname, "%ci.__imp_%s", ARM_PE_FLAG_CHAR, oldname);
-
- /* We pass newname through get_identifier to ensure it has a unique
- address. RTL processing can sometimes peek inside the symbol ref
- and compare the string's addresses to see if two symbols are
- identical. */
- /* ??? At least I think that's why we do this. */
- idp = get_identifier (newname);
-
- newrtl = gen_rtx_MEM (Pmode,
- gen_rtx_SYMBOL_REF (Pmode,
- IDENTIFIER_POINTER (idp)));
- XEXP (DECL_RTL (decl), 0) = newrtl;
-}
-
-void
-arm_pe_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
-{
- /* This bit is copied from arm_encode_section_info. */
- if (optimize > 0 && TREE_CONSTANT (decl))
- SYMBOL_REF_FLAG (XEXP (rtl, 0)) = 1;
-
- /* Mark the decl so we can tell from the rtl whether the object is
- dllexport'd or dllimport'd. */
- if (arm_dllexport_p (decl))
- arm_mark_dllexport (decl);
- else if (arm_dllimport_p (decl))
- arm_mark_dllimport (decl);
- /* It might be that DECL has already been marked as dllimport, but a
- subsequent definition nullified that. The attribute is gone but
- DECL_RTL still has @i.__imp_foo. We need to remove that. */
- else if ((TREE_CODE (decl) == FUNCTION_DECL
- || TREE_CODE (decl) == VAR_DECL)
- && DECL_RTL (decl) != NULL_RTX
- && GET_CODE (DECL_RTL (decl)) == MEM
- && GET_CODE (XEXP (DECL_RTL (decl), 0)) == MEM
- && GET_CODE (XEXP (XEXP (DECL_RTL (decl), 0), 0)) == SYMBOL_REF
- && arm_dllimport_name_p (XSTR (XEXP (XEXP (DECL_RTL (decl), 0), 0),
0)))
- {
- const char *oldname = XSTR (XEXP (XEXP (DECL_RTL (decl), 0), 0), 0);
- tree idp = get_identifier (oldname + 9);
- rtx newrtl = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
-
- XEXP (DECL_RTL (decl), 0) = newrtl;
-
- /* We previously set TREE_PUBLIC and DECL_EXTERNAL.
- ??? We leave these alone for now. */
- }
-}
-
-void
-arm_pe_unique_section (tree decl, int reloc)
-{
- int len;
- const char * name;
- char * string;
- const char * prefix;
-
- name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
- name = arm_strip_name_encoding (name);
-
- /* The object is put in, for example, section .text$foo.
- The linker will then ultimately place them in .text
- (everything from the $ on is stripped). */
- if (TREE_CODE (decl) == FUNCTION_DECL)
- prefix = ".text$";
- else if (decl_readonly_section (decl, reloc))
- prefix = ".rdata$";
- else
- prefix = ".data$";
- len = strlen (name) + strlen (prefix);
- string = XALLOCAVEC (char, len + 1);
- sprintf (string, "%s%s", prefix, name);
-
- DECL_SECTION_NAME (decl) = build_string (len, string);
-}
Index: config/arm/pe.h
===================================================================
--- config/arm/pe.h (revision 188463)
+++ config/arm/pe.h (working copy)
@@ -1,146 +0,0 @@
-/* Definitions of target machine for GNU compiler, for ARM with PE obj format.
- Copyright (C) 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2011
- Free Software Foundation, Inc.
- Contributed by Doug Evans (d...@cygnus.com).
-
- 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/>. */
-
-/* Enable PE specific code. */
-#define ARM_PE 1
-
-#define ARM_PE_FLAG_CHAR '@'
-
-/* Ensure that @x. will be stripped from the function name. */
-#undef SUBTARGET_NAME_ENCODING_LENGTHS
-#define SUBTARGET_NAME_ENCODING_LENGTHS \
- case ARM_PE_FLAG_CHAR: return 3;
-
-#undef USER_LABEL_PREFIX
-#define USER_LABEL_PREFIX "_"
-
-
-/* Run-time Target Specification. */
-
-/* Get tree.c to declare a target-specific specialization of
- merge_decl_attributes. */
-#define TARGET_DLLIMPORT_DECL_ATTRIBUTES 1
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC "-D__pe__"
-
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_NOP_FUN_DLLIMPORT)
-
-#undef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS \
- { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "short unsigned int"
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 16
-
-/* r11 is fixed. */
-#undef SUBTARGET_CONDITIONAL_REGISTER_USAGE
-#define SUBTARGET_CONDITIONAL_REGISTER_USAGE \
- fixed_regs [11] = 1; \
- call_used_regs [11] = 1;
-
-
-/* PE/COFF uses explicit import from shared libraries. */
-#define MULTIPLE_SYMBOL_SPACES 1
-
-#define TARGET_ASM_UNIQUE_SECTION arm_pe_unique_section
-#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
-
-#define SUPPORTS_ONE_ONLY 1
-
-/* Switch into a generic section. */
-#undef TARGET_ASM_NAMED_SECTION
-#define TARGET_ASM_NAMED_SECTION default_pe_asm_named_section
-
-#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
-
-/* Output a reference to a label. */
-#undef ASM_OUTPUT_LABELREF
-#define ASM_OUTPUT_LABELREF(STREAM, NAME) \
- asm_fprintf (STREAM, "%U%s", arm_strip_name_encoding (NAME))
-
-/* Output a function definition label. */
-#undef ASM_DECLARE_FUNCTION_NAME
-#define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) \
- do \
- { \
- if (arm_dllexport_name_p (NAME)) \
- { \
- drectve_section (); \
- fprintf (STREAM, "\t.ascii \" -export:%s\"\n", \
- arm_strip_name_encoding (NAME)); \
- switch_to_section (function_section (DECL)); \
- } \
- ARM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL); \
- if (TARGET_THUMB) \
- fprintf (STREAM, "\t.code 16\n"); \
- ASM_OUTPUT_LABEL (STREAM, NAME); \
- } \
- while (0)
-
-/* Output a common block. */
-#undef ASM_OUTPUT_COMMON
-#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
- do \
- { \
- if (arm_dllexport_name_p (NAME)) \
- { \
- drectve_section (); \
- fprintf ((STREAM), "\t.ascii \" -export:%s\"\n",\
- arm_strip_name_encoding (NAME)); \
- } \
- if (! arm_dllimport_name_p (NAME)) \
- { \
- fprintf ((STREAM), "\t.comm\t"); \
- assemble_name ((STREAM), (NAME)); \
- asm_fprintf ((STREAM), ", %d\t%@ %d\n", \
- (int)(ROUNDED), (int)(SIZE)); \
- } \
- } \
- while (0)
-
-/* Output the label for an initialized variable. */
-#undef ASM_DECLARE_OBJECT_NAME
-#define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL) \
- do \
- { \
- if (arm_dllexport_name_p (NAME)) \
- { \
- section *save_section = in_section; \
- drectve_section (); \
- fprintf (STREAM, "\t.ascii \" -export:%s\"\n",\
- arm_strip_name_encoding (NAME)); \
- switch_to_section (save_section); \
- } \
- ASM_OUTPUT_LABEL ((STREAM), (NAME)); \
- } \
- while (0)
-
-/* Support the ctors/dtors and other sections. */
-
-#define DRECTVE_SECTION_ASM_OP "\t.section .drectve"
-
-#define drectve_section() \
- (fprintf (asm_out_file, "%s\n", DRECTVE_SECTION_ASM_OP), \
- in_section = NULL)
Index: config/arm/freebsd.h
===================================================================
--- config/arm/freebsd.h (revision 188463)
+++ config/arm/freebsd.h (working copy)
@@ -1,64 +0,0 @@
-/* Definitions for StrongARM running FreeBSD using the ELF format
- Copyright (C) 2001, 2004, 2007, 2010, 2011 Free Software Foundation, Inc.
- Contributed by David E. O'Brien <obr...@freebsd.org> and BSDi.
-
- 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 SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
- { "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
-
-#undef LINK_SPEC
-#define LINK_SPEC " \
- %{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
- %{v:-V} \
- %{assert*} %{R*} %{rpath*} %{defsym*}
\
- %{shared:-Bshareable %{h*} %{soname*}} \
- %{!shared: \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- -dynamic-linker %(fbsd_dynamic_linker) } \
- %{static:-Bstatic}}
\
- %{symbolic:-Bsymbolic}"
-
-
-/************************[ Target stuff ]***********************************/
-
-/* Define the actual types of some ANSI-mandated types.
- Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c,
- c-common.c, and config/<arch>/<arch>.h. */
-
-/* arm.h gets this wrong for FreeBSD. We use the GCC defaults instead. */
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-/* We use the GCC defaults here. */
-#undef WCHAR_TYPE
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
-
-#undef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
Index: config/arm/t-wince-pe
===================================================================
--- config/arm/t-wince-pe (revision 188463)
+++ config/arm/t-wince-pe (working copy)
@@ -1,31 +0,0 @@
-# Copyright (C) 2003, 2004, 2006, 2008, 2009, 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/>.
-
-pe.o: $(srcdir)/config/arm/pe.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) output.h flags.h $(TREE_H) expr.h $(TM_P_H)
- $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
- $(srcdir)/config/arm/pe.c
-
-MULTILIB_OPTIONS = mfloat-abi=hard
-MULTILIB_DIRNAMES = fpu
-# Note - Thumb multilib omitted because Thumb support for
-# arm-wince-pe target does not appear to be working in binutils
-# yet...
-# MULTILIB_OPTIONS += thumb
-# MULTILIB_DIRNAMES += thumb