Patchwork [arm] Remove obsolete FPA support (1/n): obsolete target removal

login
register
mail settings
Submitter Richard Earnshaw
Date June 13, 2012, 12:51 p.m.
Message ID <4FD88CC0.3000403@arm.com>
Download mbox | patch
Permalink /patch/164661/
State New
Headers show

Comments

Richard Earnshaw - June 13, 2012, 12:51 p.m.
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.
Sebastian Huber - June 13, 2012, 1:19 p.m.
On 06/13/2012 02:51 PM, Richard Earnshaw wrote:
> 	(arm*-*-rtems*): Remove.

For RTEMS the intention was to rename arm*-*-rtemseabi* into arm*-*-rtems* and 
provide an arm*-*-rtemself* legacy target.  My personal opinion is to avoid a 
arm*-*-rtemself* legacy target, but it was decided otherwise by the RTEMS 
community.

See also:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53325
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00939.html
Richard Earnshaw - June 13, 2012, 2:33 p.m.
On 13/06/12 14:19, Sebastian Huber wrote:
> On 06/13/2012 02:51 PM, Richard Earnshaw wrote:
>> 	(arm*-*-rtems*): Remove.
> 
> For RTEMS the intention was to rename arm*-*-rtemseabi* into arm*-*-rtems* and 
> provide an arm*-*-rtemself* legacy target.  My personal opinion is to avoid a 
> arm*-*-rtemself* legacy target, but it was decided otherwise by the RTEMS 
> community.
> 
> See also:
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53325
> http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00939.html
> 

I've taken no position on that in this patch.  All that's happened is
that the old rtems (ie pre-eabi) configuration has now gone.

R.
Sebastian Huber - June 20, 2012, 2:41 p.m.
On 06/13/2012 02:51 PM, Richard Earnshaw wrote:
> 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.
[...]

I am not sure, but I think the libgcc/config.host needs some cleanup too?
Richard Earnshaw - June 20, 2012, 5:21 p.m.
On 20/06/12 15:41, Sebastian Huber wrote:
> On 06/13/2012 02:51 PM, Richard Earnshaw wrote:
>> 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.
> [...]
> 
> I am not sure, but I think the libgcc/config.host needs some cleanup too?
> 

Undoubtedly.  But I'm not finished yet...

R.

Patch

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 <nickc@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 (dje@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 (dje@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 <obrien@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