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

Reply via email to