Patchwork [4.7] Make ARM -mhard-float and -msoft-float into proper -mfloat-abi= aliases

login
register
mail settings
Submitter Joseph S. Myers
Date March 2, 2011, 2 a.m.
Message ID <Pine.LNX.4.64.1103020159280.23754@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/85017/
State New
Headers show

Comments

Joseph S. Myers - March 2, 2011, 2 a.m.
This patch, for 4.7 and relative to a tree with
<http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01709.html> applied,
converts the ARM -mhard-float and -msoft-float options, documented as
aliases of -mfloat-abi=hard and -mfloat-abi=soft, into .opt file
aliases, so simplifying arm_handle_option.  Being .opt aliases means
that specs need only handle the -mfloat-abi forms and that multilib
configuration must only use those forms, so this patch makes the
associated changes in those areas.  The patch arose out of eliminating
global state from target option handlers, but was done as a separate
patch as those changes (moving -march, -mcpu and -mtune handling to
use the Enum machinery) will be quite complicated and it seems best to
separate the two sets of largely independent changes.

Tested building cc1 and xgcc for crosses to: arm-eabi
arm-linux-gnueabi arm-netbsdelf arm-rtems arm-wince-pe arm-freebsd8.
Will commit to trunk for 4.7 in the absence of target maintainer
objections.

2011-03-01  Joseph Myers  <joseph@codesourcery.com>

	* config/arm/arm.opt (mhard-float, msoft-float): Use Alias.
	* config/arm/arm.c (arm_handle_option): Don't handle -mhard-float
	or -msoft-float here.
	* config/arm/arm.h (CPP_SPEC): Handle -mfloat-abi=*, not
	-msoft-float and -mhard-float.
	(OPTION_DEFAULT_SPECS): Don't handle -mhard-float and
	-msoft-float.
	* config/arm/coff.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
	msoft-float.
	* config/arm/elf.h (ASM_SPEC): Don't handle -mhard-float and
	-msoft-float.
	(MULTILIB_DEFAULTS): Use mfloat-abi=soft, not msoft-float.
	* config/arm/linux-elf.h (MULTILIB_DEFAULTS): Use mfloat-abi=hard,
	not mhard-float.
	(LIBGCC_SPEC): Don't handle -msoft-float.
	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Don't handle
	-mhard-float.
	* config/arm/pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
	msoft-float.
	* config/arm/rtems-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Handle
	-mfloat-abi=*, not -msoft-float and -mhard-float.
	* config/arm/semi.h((ASM_SPEC): Don't handle -mhard-float and
	-msoft-float.
	* config/arm/t-arm-elf (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS):
	Use mfloat-abi=hard and mfloat-abi=soft in comments, not
	mhard-float and msoft-float.
	* config/arm/t-linux (MULTILIB_OPTIONS): Use mfloat-abi=hard and
	mfloat-abi=soft in comments, not mhard-float and msoft-float.
	* config/arm/t-pe (MULTILIB_OPTIONS): Use mfloat-abi=hard, not
	mhard-float.
	* config/arm/t-rtems (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
	mfloat-abi=soft and mfloat-abi=hard, not msoft-float and
	mhard-float.
	* config/arm/t-strongarm-elf (MULTILIB_OPTIONS): Use
	mfloat-abi=hard and mfloat-abi=soft, not mhard-float and
	msoft-float.
	* config/arm/t-wince-pe (MULTILIB_OPTIONS): Use mfloat-abi=hard,
	not mhard-float.
	* config/arm/wince-pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft,
	not msoft-float.
Richard Earnshaw - March 2, 2011, 9:36 a.m.
On Wed, 2011-03-02 at 02:00 +0000, Joseph S. Myers wrote:
> This patch, for 4.7 and relative to a tree with
> <http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01709.html> applied,
> converts the ARM -mhard-float and -msoft-float options, documented as
> aliases of -mfloat-abi=hard and -mfloat-abi=soft, into .opt file
> aliases, so simplifying arm_handle_option.  Being .opt aliases means
> that specs need only handle the -mfloat-abi forms and that multilib
> configuration must only use those forms, so this patch makes the
> associated changes in those areas.  The patch arose out of eliminating
> global state from target option handlers, but was done as a separate
> patch as those changes (moving -march, -mcpu and -mtune handling to
> use the Enum machinery) will be quite complicated and it seems best to
> separate the two sets of largely independent changes.
> 
> Tested building cc1 and xgcc for crosses to: arm-eabi
> arm-linux-gnueabi arm-netbsdelf arm-rtems arm-wince-pe arm-freebsd8.
> Will commit to trunk for 4.7 in the absence of target maintainer
> objections.
> 

This is OK.

Could you remove the documentation entries for the hard/soft-float
aliases please?  They're really only there for legacy reasons.

R.

> 2011-03-01  Joseph Myers  <joseph@codesourcery.com>
> 
> 	* config/arm/arm.opt (mhard-float, msoft-float): Use Alias.
> 	* config/arm/arm.c (arm_handle_option): Don't handle -mhard-float
> 	or -msoft-float here.
> 	* config/arm/arm.h (CPP_SPEC): Handle -mfloat-abi=*, not
> 	-msoft-float and -mhard-float.
> 	(OPTION_DEFAULT_SPECS): Don't handle -mhard-float and
> 	-msoft-float.
> 	* config/arm/coff.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
> 	msoft-float.
> 	* config/arm/elf.h (ASM_SPEC): Don't handle -mhard-float and
> 	-msoft-float.
> 	(MULTILIB_DEFAULTS): Use mfloat-abi=soft, not msoft-float.
> 	* config/arm/linux-elf.h (MULTILIB_DEFAULTS): Use mfloat-abi=hard,
> 	not mhard-float.
> 	(LIBGCC_SPEC): Don't handle -msoft-float.
> 	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Don't handle
> 	-mhard-float.
> 	* config/arm/pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft, not
> 	msoft-float.
> 	* config/arm/rtems-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Handle
> 	-mfloat-abi=*, not -msoft-float and -mhard-float.
> 	* config/arm/semi.h((ASM_SPEC): Don't handle -mhard-float and
> 	-msoft-float.
> 	* config/arm/t-arm-elf (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS):
> 	Use mfloat-abi=hard and mfloat-abi=soft in comments, not
> 	mhard-float and msoft-float.
> 	* config/arm/t-linux (MULTILIB_OPTIONS): Use mfloat-abi=hard and
> 	mfloat-abi=soft in comments, not mhard-float and msoft-float.
> 	* config/arm/t-pe (MULTILIB_OPTIONS): Use mfloat-abi=hard, not
> 	mhard-float.
> 	* config/arm/t-rtems (MULTILIB_OPTIONS, MULTILIB_EXCEPTIONS): Use
> 	mfloat-abi=soft and mfloat-abi=hard, not msoft-float and
> 	mhard-float.
> 	* config/arm/t-strongarm-elf (MULTILIB_OPTIONS): Use
> 	mfloat-abi=hard and mfloat-abi=soft, not mhard-float and
> 	msoft-float.
> 	* config/arm/t-wince-pe (MULTILIB_OPTIONS): Use mfloat-abi=hard,
> 	not mhard-float.
> 	* config/arm/wince-pe.h (MULTILIB_DEFAULTS): Use mfloat-abi=soft,
> 	not msoft-float.
> 
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.c gcc-mainline/gcc/config/arm/arm.c
> --- gcc-mainline-1/gcc/config/arm/arm.c	2011-02-23 13:55:18.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/arm.c	2011-03-01 15:26:24.000000000 -0800
> @@ -1355,14 +1355,6 @@ arm_handle_option (struct gcc_options *o
>        arm_selected_cpu = arm_find_cpu(arg, all_cores, "-mcpu");
>        return true;
>  
> -    case OPT_mhard_float:
> -      target_float_abi_name = "hard";
> -      return true;
> -
> -    case OPT_msoft_float:
> -      target_float_abi_name = "soft";
> -      return true;
> -
>      case OPT_mtune_:
>        arm_selected_tune = arm_find_cpu(arg, all_cores, "-mtune");
>        return true;
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.h gcc-mainline/gcc/config/arm/arm.h
> --- gcc-mainline-1/gcc/config/arm/arm.h	2011-02-02 13:22:56.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/arm.h	2011-03-01 15:42:16.000000000 -0800
> @@ -1,6 +1,6 @@
>  /* Definitions of target machine for GNU compiler, for ARM.
>     Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
> -   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
> +   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
>     Free Software Foundation, Inc.
>     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
>     and Martin Simmons (@harleqn.co.uk).
> @@ -174,8 +174,8 @@ extern void (*arm_lang_output_object_att
>  
>  #undef  CPP_SPEC
>  #define CPP_SPEC "%(subtarget_cpp_spec)					\
> -%{msoft-float:%{mhard-float:						\
> -	%e-msoft-float and -mhard_float may not be used together}}	\
> +%{mfloat-abi=soft:%{mfloat-abi=hard:					\
> +	%e-mfloat-abi=soft and -mfloat-abi=hard may not be used together}} \
>  %{mbig-endian:%{mlittle-endian:						\
>  	%e-mbig-endian and -mlittle-endian may not be used together}}"
>  
> @@ -317,16 +317,14 @@ extern void (*arm_lang_output_object_att
>      by --with-arch.
>     --with-tune is ignored if -mtune or -mcpu are specified (but not affected
>       by -march).
> -   --with-float is ignored if -mhard-float, -msoft-float or -mfloat-abi are
> -   specified.
> +   --with-float is ignored if -mfloat-abi is specified.
>     --with-fpu is ignored if -mfpu is specified.
>     --with-abi is ignored is -mabi is specified.  */
>  #define OPTION_DEFAULT_SPECS \
>    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
>    {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
>    {"tune", "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}" }, \
> -  {"float", \
> -    "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}}}" }, \
> +  {"float", "%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}" }, \
>    {"fpu", "%{!mfpu=*:-mfpu=%(VALUE)}"}, \
>    {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, \
>    {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"},
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.opt gcc-mainline/gcc/config/arm/arm.opt
> --- gcc-mainline-1/gcc/config/arm/arm.opt	2009-07-02 08:25:53.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/arm.opt	2011-03-01 15:25:51.000000000 -0800
> @@ -94,7 +94,7 @@ Target RejectNegative Joined Var(target_
>  Specify the name of the target floating point hardware/format
>  
>  mhard-float
> -Target RejectNegative
> +Target RejectNegative Alias(mfloat-abi=, hard)
>  Alias for -mfloat-abi=hard
>  
>  mlittle-endian
> @@ -122,7 +122,7 @@ Target Report Mask(SINGLE_PIC_BASE)
>  Do not load the PIC register in function prologues
>  
>  msoft-float
> -Target RejectNegative
> +Target RejectNegative Alias(mfloat-abi=, soft)
>  Alias for -mfloat-abi=soft
>  
>  mstructure-size-boundary=
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/coff.h gcc-mainline/gcc/config/arm/coff.h
> --- gcc-mainline-1/gcc/config/arm/coff.h	2009-07-02 08:25:53.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/coff.h	2011-03-01 15:40:01.000000000 -0800
> @@ -1,7 +1,7 @@
>  /* Definitions of target machine for GNU compiler.
>     For ARM with COFF object format.
>     Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
> -   2007 Free Software Foundation, Inc.
> +   2007, 2009, 2011 Free Software Foundation, Inc.
>     Contributed by Doug Evans (devans@cygnus.com).
>     
>     This file is part of GCC.
> @@ -37,7 +37,7 @@
>  
>  #ifndef MULTILIB_DEFAULTS
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
> +  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
>  #endif
>  
>  /* This is COFF, but prefer stabs.  */
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/elf.h gcc-mainline/gcc/config/arm/elf.h
> --- gcc-mainline-1/gcc/config/arm/elf.h	2009-07-02 08:25:53.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/elf.h	2011-03-01 15:39:33.000000000 -0800
> @@ -1,7 +1,7 @@
>  /* Definitions of target machine for GNU compiler.
>     For ARM with ELF obj format.
>     Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007,
> -   2008 Free Software Foundation, Inc.
> +   2008, 2009, 2011 Free Software Foundation, Inc.
>     Contributed by Philip Blundell <philb@gnu.org> and
>     Catherine Moore <clm@cygnus.com>
>     
> @@ -61,7 +61,6 @@
>  %{mapcs-*:-mapcs-%*} \
>  %(subtarget_asm_float_spec) \
>  %{mthumb-interwork:-mthumb-interwork} \
> -%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
>  %{mfloat-abi=*} %{mfpu=*} \
>  %(subtarget_extra_asm_spec)"
>  #endif
> @@ -119,7 +118,7 @@
>  
>  #ifndef MULTILIB_DEFAULTS
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork", "fno-leading-underscore" }
> +  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
>  #endif
>  
>  #define TARGET_ASM_FILE_START_APP_OFF true
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/linux-elf.h gcc-mainline/gcc/config/arm/linux-elf.h
> --- gcc-mainline-1/gcc/config/arm/linux-elf.h	2011-01-26 16:28:20.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/linux-elf.h	2011-03-01 15:37:25.000000000 -0800
> @@ -51,7 +51,7 @@
>  
>  #undef  MULTILIB_DEFAULTS
>  #define MULTILIB_DEFAULTS \
> -	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
> +	{ "marm", "mlittle-endian", "mfloat-abi=hard", "mno-thumb-interwork" }
>  
>  /* Now we define the strings used to build the spec file.  */
>  #undef  LIB_SPEC
> @@ -60,7 +60,7 @@
>     %{shared:-lc} \
>     %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
>  
> -#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
> +#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
>  
>  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
>  
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/netbsd-elf.h gcc-mainline/gcc/config/arm/netbsd-elf.h
> --- gcc-mainline-1/gcc/config/arm/netbsd-elf.h	2009-12-30 09:05:39.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/netbsd-elf.h	2011-03-01 16:27:05.000000000 -0800
> @@ -1,5 +1,6 @@
>  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
> -   Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009, 2011
> +   Free Software Foundation, Inc.
>     Contributed by Wasabi Systems, Inc.
>  
>     This file is part of GCC.
> @@ -54,11 +55,10 @@
>  #define SUBTARGET_EXTRA_ASM_SPEC	\
>    "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
>  
> -/* Default to full VFP if -mhard-float is specified.  */
> +/* Default to full VFP if -mfloat-abi=hard is specified.  */
>  #undef SUBTARGET_ASM_FLOAT_SPEC
>  #define SUBTARGET_ASM_FLOAT_SPEC	\
> -  "%{mhard-float:{!mfpu=*:-mfpu=vfp}}   \
> -   %{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
> +  "%{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
>  
>  #undef SUBTARGET_EXTRA_SPECS
>  #define SUBTARGET_EXTRA_SPECS				\
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/pe.h gcc-mainline/gcc/config/arm/pe.h
> --- gcc-mainline-1/gcc/config/arm/pe.h	2009-03-28 00:38:45.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/pe.h	2011-03-01 15:35:09.000000000 -0800
> @@ -1,5 +1,5 @@
>  /* Definitions of target machine for GNU compiler, for ARM with PE obj format.
> -   Copyright (C) 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, 2007
> +   Copyright (C) 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2011
>     Free Software Foundation, Inc.
>     Contributed by Doug Evans (dje@cygnus.com).
>     
> @@ -49,7 +49,7 @@
>  
>  #undef  MULTILIB_DEFAULTS
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }  
> +  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }  
>  
>  #undef  WCHAR_TYPE
>  #define WCHAR_TYPE 	"short unsigned int"
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/rtems-elf.h gcc-mainline/gcc/config/arm/rtems-elf.h
> --- gcc-mainline-1/gcc/config/arm/rtems-elf.h	2009-03-28 00:38:45.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/rtems-elf.h	2011-03-01 15:34:36.000000000 -0800
> @@ -1,5 +1,6 @@
>  /* Definitions for RTEMS based ARM systems using ELF
> -   Copyright (C) 2000, 2002, 2005, 2007, 2008 Free Software Foundation, Inc.
> +   Copyright (C) 2000, 2002, 2005, 2007, 2008, 2009, 2011
> +   Free Software Foundation, Inc.
>   
>     This file is part of GCC.
>   
> @@ -36,7 +37,7 @@
>   */
>  #undef SUBTARGET_EXTRA_ASM_SPEC
>  #define SUBTARGET_EXTRA_ASM_SPEC "\
> -  %{!mhard-float: %{!msoft-float:-mfpu=softfpa}}"
> +  %{!mfloat-abi=hard: %{!mfloat-abi=soft:-mfpu=softfpa}}"
>  
>  /*
>   *  The default includes --start-group and --end-group which conflicts
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/semi.h gcc-mainline/gcc/config/arm/semi.h
> --- gcc-mainline-1/gcc/config/arm/semi.h	2009-03-28 00:38:45.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/semi.h	2011-03-01 15:33:18.000000000 -0800
> @@ -1,5 +1,5 @@
>  /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
> -   Copyright (C) 1994, 1995, 1996, 1997, 2001, 2004, 2005, 2007
> +   Copyright (C) 1994, 1995, 1996, 1997, 2001, 2004, 2005, 2007, 2011
>     Free Software Foundation, Inc.
>     Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
>  
> @@ -68,7 +68,6 @@
>  %{mcpu=*:-mcpu=%*} \
>  %{march=*:-march=%*} \
>  %{mapcs-float:-mfloat} \
> -%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
>  %{mfloat-abi=*} %{mfpu=*} \
>  %{mthumb-interwork:-mthumb-interwork} \
>  %(subtarget_extra_asm_spec)"
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-arm-elf gcc-mainline/gcc/config/arm/t-arm-elf
> --- gcc-mainline-1/gcc/config/arm/t-arm-elf	2011-01-04 03:50:58.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/t-arm-elf	2011-03-01 15:27:26.000000000 -0800
> @@ -1,5 +1,5 @@
>  # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
> -# 2008, 2010 Free Software Foundation, Inc.
> +# 2008, 2010, 2011 Free Software Foundation, Inc.
>  #
>  # This file is part of GCC.
>  #
> @@ -67,9 +67,9 @@ MULTILIB_EXCEPTIONS    += *mthumb/*mfloa
>  # MULTILIB_DIRNAMES    += le be
>  # MULTILIB_MATCHES     += mbig-endian=mbe mlittle-endian=mle
>  # 
> -# MULTILIB_OPTIONS    += mhard-float/msoft-float
> +# MULTILIB_OPTIONS    += mfloat-abi=hard/mfloat-abi=soft
>  # MULTILIB_DIRNAMES   += fpu soft
> -# MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
> +# MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
>  # 
>  # MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
>  # MULTILIB_DIRNAMES   += normal interwork
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-linux gcc-mainline/gcc/config/arm/t-linux
> --- gcc-mainline-1/gcc/config/arm/t-linux	2009-04-24 16:20:51.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/t-linux	2011-03-01 15:28:16.000000000 -0800
> @@ -1,5 +1,5 @@
>  # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006,
> -# 2008 Free Software Foundation, Inc.
> +# 2008, 2011 Free Software Foundation, Inc.
>  #
>  # This file is part of GCC.
>  #
> @@ -25,7 +25,7 @@ LIB1ASMSRC = arm/lib1funcs.asm
>  LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
>  	_arm_addsubdf3 _arm_addsubsf3
>  
> -# MULTILIB_OPTIONS = mhard-float/msoft-float
> +# MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=soft
>  # MULTILIB_DIRNAMES = hard-float soft-float
>  
>  # EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-pe gcc-mainline/gcc/config/arm/t-pe
> --- gcc-mainline-1/gcc/config/arm/t-pe	2010-11-29 10:43:41.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/t-pe	2011-03-01 15:28:41.000000000 -0800
> @@ -1,5 +1,5 @@
>  # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2008, 2009,
> -# 2010
> +# 2010, 2011
>  # Free Software Foundation, Inc.
>  #
>  # This file is part of GCC.
> @@ -44,7 +44,7 @@ pe.o: $(srcdir)/config/arm/pe.c $(CONFIG
>  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
>  		$(srcdir)/config/arm/pe.c
>  
> -MULTILIB_OPTIONS = mhard-float mthumb
> +MULTILIB_OPTIONS = mfloat-abi=hard mthumb
>  MULTILIB_DIRNAMES = fpu thumb
>  
>  LIBGCC = stmp-multilib
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-rtems gcc-mainline/gcc/config/arm/t-rtems
> --- gcc-mainline-1/gcc/config/arm/t-rtems	2009-03-28 00:38:45.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/t-rtems	2011-03-01 15:29:09.000000000 -0800
> @@ -5,6 +5,6 @@ MULTILIB_DIRNAMES    = arm thumb
>  MULTILIB_EXCEPTIONS  = 
>  MULTILIB_MATCHES     = marm=mno-thumb
>  
> -MULTILIB_OPTIONS    += msoft-float/mhard-float
> +MULTILIB_OPTIONS    += mfloat-abi=soft/mfloat-abi=hard
>  MULTILIB_DIRNAMES   += soft fpu
> -MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
> +MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-strongarm-elf gcc-mainline/gcc/config/arm/t-strongarm-elf
> --- gcc-mainline-1/gcc/config/arm/t-strongarm-elf	2009-07-02 08:25:53.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/t-strongarm-elf	2011-03-01 15:30:09.000000000 -0800
> @@ -1,4 +1,5 @@
> -# Copyright (C) 2000, 2001, 2006, 2008 Free Software Foundation, Inc.
> +# Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011
> +# Free Software Foundation, Inc.
>  #
>  # This file is part of GCC.
>  #
> @@ -37,7 +38,7 @@ dp-bit.c: $(srcdir)/config/fp-bit.c
>  	echo '#endif' >> dp-bit.c
>  	cat $(srcdir)/config/fp-bit.c >> dp-bit.c
>  
> -MULTILIB_OPTIONS     = mlittle-endian/mbig-endian mhard-float/msoft-float
> +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
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-wince-pe gcc-mainline/gcc/config/arm/t-wince-pe
> --- gcc-mainline-1/gcc/config/arm/t-wince-pe	2010-11-29 10:44:00.000000000 -0800
> +++ gcc-mainline/gcc/config/arm/t-wince-pe	2011-03-01 15:30:27.000000000 -0800
> @@ -1,4 +1,4 @@
> -# Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010
> +# Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010, 2011
>  # Free Software Foundation, Inc.
>  #
>  # This file is part of GCC.
> @@ -43,7 +43,7 @@ pe.o: $(srcdir)/config/arm/pe.c $(CONFIG
>  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
>  		$(srcdir)/config/arm/pe.c
>  
> -MULTILIB_OPTIONS = mhard-float
> +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
> diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/wince-pe.h gcc-mainline/gcc/config/arm/wince-pe.h
> --- gcc-mainline-1/gcc/config/arm/wince-pe.h	2009-03-28 00:38:45.000000000 -0700
> +++ gcc-mainline/gcc/config/arm/wince-pe.h	2011-03-01 15:33:16.000000000 -0800
> @@ -1,5 +1,5 @@
>  /* Definitions of target machine for GNU compiler, for ARM with WINCE-PE obj format.
> -   Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
> +   Copyright (C) 2003, 2004, 2005, 2007, 2011 Free Software Foundation, Inc.
>     Contributed by Nick Clifton <nickc@redhat.com>
>     
>     This file is part of GCC.
> @@ -23,4 +23,4 @@
>  
>  #undef  MULTILIB_DEFAULTS
>  #define MULTILIB_DEFAULTS \
> -  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }  
> +  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }

Patch

diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.c gcc-mainline/gcc/config/arm/arm.c
--- gcc-mainline-1/gcc/config/arm/arm.c	2011-02-23 13:55:18.000000000 -0800
+++ gcc-mainline/gcc/config/arm/arm.c	2011-03-01 15:26:24.000000000 -0800
@@ -1355,14 +1355,6 @@  arm_handle_option (struct gcc_options *o
       arm_selected_cpu = arm_find_cpu(arg, all_cores, "-mcpu");
       return true;
 
-    case OPT_mhard_float:
-      target_float_abi_name = "hard";
-      return true;
-
-    case OPT_msoft_float:
-      target_float_abi_name = "soft";
-      return true;
-
     case OPT_mtune_:
       arm_selected_tune = arm_find_cpu(arg, all_cores, "-mtune");
       return true;
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.h gcc-mainline/gcc/config/arm/arm.h
--- gcc-mainline-1/gcc/config/arm/arm.h	2011-02-02 13:22:56.000000000 -0800
+++ gcc-mainline/gcc/config/arm/arm.h	2011-03-01 15:42:16.000000000 -0800
@@ -1,6 +1,6 @@ 
 /* Definitions of target machine for GNU compiler, for ARM.
    Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
    Free Software Foundation, Inc.
    Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
    and Martin Simmons (@harleqn.co.uk).
@@ -174,8 +174,8 @@  extern void (*arm_lang_output_object_att
 
 #undef  CPP_SPEC
 #define CPP_SPEC "%(subtarget_cpp_spec)					\
-%{msoft-float:%{mhard-float:						\
-	%e-msoft-float and -mhard_float may not be used together}}	\
+%{mfloat-abi=soft:%{mfloat-abi=hard:					\
+	%e-mfloat-abi=soft and -mfloat-abi=hard may not be used together}} \
 %{mbig-endian:%{mlittle-endian:						\
 	%e-mbig-endian and -mlittle-endian may not be used together}}"
 
@@ -317,16 +317,14 @@  extern void (*arm_lang_output_object_att
     by --with-arch.
    --with-tune is ignored if -mtune or -mcpu are specified (but not affected
      by -march).
-   --with-float is ignored if -mhard-float, -msoft-float or -mfloat-abi are
-   specified.
+   --with-float is ignored if -mfloat-abi is specified.
    --with-fpu is ignored if -mfpu is specified.
    --with-abi is ignored is -mabi is specified.  */
 #define OPTION_DEFAULT_SPECS \
   {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" }, \
   {"cpu", "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
   {"tune", "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}" }, \
-  {"float", \
-    "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}}}" }, \
+  {"float", "%{!mfloat-abi=*:-mfloat-abi=%(VALUE)}" }, \
   {"fpu", "%{!mfpu=*:-mfpu=%(VALUE)}"}, \
   {"abi", "%{!mabi=*:-mabi=%(VALUE)}"}, \
   {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"},
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/arm.opt gcc-mainline/gcc/config/arm/arm.opt
--- gcc-mainline-1/gcc/config/arm/arm.opt	2009-07-02 08:25:53.000000000 -0700
+++ gcc-mainline/gcc/config/arm/arm.opt	2011-03-01 15:25:51.000000000 -0800
@@ -94,7 +94,7 @@  Target RejectNegative Joined Var(target_
 Specify the name of the target floating point hardware/format
 
 mhard-float
-Target RejectNegative
+Target RejectNegative Alias(mfloat-abi=, hard)
 Alias for -mfloat-abi=hard
 
 mlittle-endian
@@ -122,7 +122,7 @@  Target Report Mask(SINGLE_PIC_BASE)
 Do not load the PIC register in function prologues
 
 msoft-float
-Target RejectNegative
+Target RejectNegative Alias(mfloat-abi=, soft)
 Alias for -mfloat-abi=soft
 
 mstructure-size-boundary=
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/coff.h gcc-mainline/gcc/config/arm/coff.h
--- gcc-mainline-1/gcc/config/arm/coff.h	2009-07-02 08:25:53.000000000 -0700
+++ gcc-mainline/gcc/config/arm/coff.h	2011-03-01 15:40:01.000000000 -0800
@@ -1,7 +1,7 @@ 
 /* Definitions of target machine for GNU compiler.
    For ARM with COFF object format.
    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
-   2007 Free Software Foundation, Inc.
+   2007, 2009, 2011 Free Software Foundation, Inc.
    Contributed by Doug Evans (devans@cygnus.com).
    
    This file is part of GCC.
@@ -37,7 +37,7 @@ 
 
 #ifndef MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
+  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }
 #endif
 
 /* This is COFF, but prefer stabs.  */
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/elf.h gcc-mainline/gcc/config/arm/elf.h
--- gcc-mainline-1/gcc/config/arm/elf.h	2009-07-02 08:25:53.000000000 -0700
+++ gcc-mainline/gcc/config/arm/elf.h	2011-03-01 15:39:33.000000000 -0800
@@ -1,7 +1,7 @@ 
 /* Definitions of target machine for GNU compiler.
    For ARM with ELF obj format.
    Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2007,
-   2008 Free Software Foundation, Inc.
+   2008, 2009, 2011 Free Software Foundation, Inc.
    Contributed by Philip Blundell <philb@gnu.org> and
    Catherine Moore <clm@cygnus.com>
    
@@ -61,7 +61,6 @@ 
 %{mapcs-*:-mapcs-%*} \
 %(subtarget_asm_float_spec) \
 %{mthumb-interwork:-mthumb-interwork} \
-%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
 %{mfloat-abi=*} %{mfpu=*} \
 %(subtarget_extra_asm_spec)"
 #endif
@@ -119,7 +118,7 @@ 
 
 #ifndef MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork", "fno-leading-underscore" }
+  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
 #endif
 
 #define TARGET_ASM_FILE_START_APP_OFF true
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/linux-elf.h gcc-mainline/gcc/config/arm/linux-elf.h
--- gcc-mainline-1/gcc/config/arm/linux-elf.h	2011-01-26 16:28:20.000000000 -0800
+++ gcc-mainline/gcc/config/arm/linux-elf.h	2011-03-01 15:37:25.000000000 -0800
@@ -51,7 +51,7 @@ 
 
 #undef  MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-	{ "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
+	{ "marm", "mlittle-endian", "mfloat-abi=hard", "mno-thumb-interwork" }
 
 /* Now we define the strings used to build the spec file.  */
 #undef  LIB_SPEC
@@ -60,7 +60,7 @@ 
    %{shared:-lc} \
    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
 
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
 
 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
 
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/netbsd-elf.h gcc-mainline/gcc/config/arm/netbsd-elf.h
--- gcc-mainline-1/gcc/config/arm/netbsd-elf.h	2009-12-30 09:05:39.000000000 -0800
+++ gcc-mainline/gcc/config/arm/netbsd-elf.h	2011-03-01 16:27:05.000000000 -0800
@@ -1,5 +1,6 @@ 
 /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
-   Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009, 2011
+   Free Software Foundation, Inc.
    Contributed by Wasabi Systems, Inc.
 
    This file is part of GCC.
@@ -54,11 +55,10 @@ 
 #define SUBTARGET_EXTRA_ASM_SPEC	\
   "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
 
-/* Default to full VFP if -mhard-float is specified.  */
+/* Default to full VFP if -mfloat-abi=hard is specified.  */
 #undef SUBTARGET_ASM_FLOAT_SPEC
 #define SUBTARGET_ASM_FLOAT_SPEC	\
-  "%{mhard-float:{!mfpu=*:-mfpu=vfp}}   \
-   %{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
+  "%{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
 
 #undef SUBTARGET_EXTRA_SPECS
 #define SUBTARGET_EXTRA_SPECS				\
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/pe.h gcc-mainline/gcc/config/arm/pe.h
--- gcc-mainline-1/gcc/config/arm/pe.h	2009-03-28 00:38:45.000000000 -0700
+++ gcc-mainline/gcc/config/arm/pe.h	2011-03-01 15:35:09.000000000 -0800
@@ -1,5 +1,5 @@ 
 /* Definitions of target machine for GNU compiler, for ARM with PE obj format.
-   Copyright (C) 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, 2007
+   Copyright (C) 1995, 1996, 1999, 2000, 2002, 2003, 2004, 2005, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Doug Evans (dje@cygnus.com).
    
@@ -49,7 +49,7 @@ 
 
 #undef  MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }  
+  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }  
 
 #undef  WCHAR_TYPE
 #define WCHAR_TYPE 	"short unsigned int"
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/rtems-elf.h gcc-mainline/gcc/config/arm/rtems-elf.h
--- gcc-mainline-1/gcc/config/arm/rtems-elf.h	2009-03-28 00:38:45.000000000 -0700
+++ gcc-mainline/gcc/config/arm/rtems-elf.h	2011-03-01 15:34:36.000000000 -0800
@@ -1,5 +1,6 @@ 
 /* Definitions for RTEMS based ARM systems using ELF
-   Copyright (C) 2000, 2002, 2005, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2005, 2007, 2008, 2009, 2011
+   Free Software Foundation, Inc.
  
    This file is part of GCC.
  
@@ -36,7 +37,7 @@ 
  */
 #undef SUBTARGET_EXTRA_ASM_SPEC
 #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{!mhard-float: %{!msoft-float:-mfpu=softfpa}}"
+  %{!mfloat-abi=hard: %{!mfloat-abi=soft:-mfpu=softfpa}}"
 
 /*
  *  The default includes --start-group and --end-group which conflicts
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/semi.h gcc-mainline/gcc/config/arm/semi.h
--- gcc-mainline-1/gcc/config/arm/semi.h	2009-03-28 00:38:45.000000000 -0700
+++ gcc-mainline/gcc/config/arm/semi.h	2011-03-01 15:33:18.000000000 -0800
@@ -1,5 +1,5 @@ 
 /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
-   Copyright (C) 1994, 1995, 1996, 1997, 2001, 2004, 2005, 2007
+   Copyright (C) 1994, 1995, 1996, 1997, 2001, 2004, 2005, 2007, 2011
    Free Software Foundation, Inc.
    Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
 
@@ -68,7 +68,6 @@ 
 %{mcpu=*:-mcpu=%*} \
 %{march=*:-march=%*} \
 %{mapcs-float:-mfloat} \
-%{msoft-float:-mfloat-abi=soft} %{mhard-float:-mfloat-abi=hard} \
 %{mfloat-abi=*} %{mfpu=*} \
 %{mthumb-interwork:-mthumb-interwork} \
 %(subtarget_extra_asm_spec)"
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-arm-elf gcc-mainline/gcc/config/arm/t-arm-elf
--- gcc-mainline-1/gcc/config/arm/t-arm-elf	2011-01-04 03:50:58.000000000 -0800
+++ gcc-mainline/gcc/config/arm/t-arm-elf	2011-03-01 15:27:26.000000000 -0800
@@ -1,5 +1,5 @@ 
 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
-# 2008, 2010 Free Software Foundation, Inc.
+# 2008, 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
@@ -67,9 +67,9 @@  MULTILIB_EXCEPTIONS    += *mthumb/*mfloa
 # MULTILIB_DIRNAMES    += le be
 # MULTILIB_MATCHES     += mbig-endian=mbe mlittle-endian=mle
 # 
-# MULTILIB_OPTIONS    += mhard-float/msoft-float
+# MULTILIB_OPTIONS    += mfloat-abi=hard/mfloat-abi=soft
 # MULTILIB_DIRNAMES   += fpu soft
-# MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
+# MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
 # 
 # MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
 # MULTILIB_DIRNAMES   += normal interwork
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-linux gcc-mainline/gcc/config/arm/t-linux
--- gcc-mainline-1/gcc/config/arm/t-linux	2009-04-24 16:20:51.000000000 -0700
+++ gcc-mainline/gcc/config/arm/t-linux	2011-03-01 15:28:16.000000000 -0800
@@ -1,5 +1,5 @@ 
 # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006,
-# 2008 Free Software Foundation, Inc.
+# 2008, 2011 Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
@@ -25,7 +25,7 @@  LIB1ASMSRC = arm/lib1funcs.asm
 LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
 	_arm_addsubdf3 _arm_addsubsf3
 
-# MULTILIB_OPTIONS = mhard-float/msoft-float
+# MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=soft
 # MULTILIB_DIRNAMES = hard-float soft-float
 
 # EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-pe gcc-mainline/gcc/config/arm/t-pe
--- gcc-mainline-1/gcc/config/arm/t-pe	2010-11-29 10:43:41.000000000 -0800
+++ gcc-mainline/gcc/config/arm/t-pe	2011-03-01 15:28:41.000000000 -0800
@@ -1,5 +1,5 @@ 
 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006, 2008, 2009,
-# 2010
+# 2010, 2011
 # Free Software Foundation, Inc.
 #
 # This file is part of GCC.
@@ -44,7 +44,7 @@  pe.o: $(srcdir)/config/arm/pe.c $(CONFIG
 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
 		$(srcdir)/config/arm/pe.c
 
-MULTILIB_OPTIONS = mhard-float mthumb
+MULTILIB_OPTIONS = mfloat-abi=hard mthumb
 MULTILIB_DIRNAMES = fpu thumb
 
 LIBGCC = stmp-multilib
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-rtems gcc-mainline/gcc/config/arm/t-rtems
--- gcc-mainline-1/gcc/config/arm/t-rtems	2009-03-28 00:38:45.000000000 -0700
+++ gcc-mainline/gcc/config/arm/t-rtems	2011-03-01 15:29:09.000000000 -0800
@@ -5,6 +5,6 @@  MULTILIB_DIRNAMES    = arm thumb
 MULTILIB_EXCEPTIONS  = 
 MULTILIB_MATCHES     = marm=mno-thumb
 
-MULTILIB_OPTIONS    += msoft-float/mhard-float
+MULTILIB_OPTIONS    += mfloat-abi=soft/mfloat-abi=hard
 MULTILIB_DIRNAMES   += soft fpu
-MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
+MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-strongarm-elf gcc-mainline/gcc/config/arm/t-strongarm-elf
--- gcc-mainline-1/gcc/config/arm/t-strongarm-elf	2009-07-02 08:25:53.000000000 -0700
+++ gcc-mainline/gcc/config/arm/t-strongarm-elf	2011-03-01 15:30:09.000000000 -0800
@@ -1,4 +1,5 @@ 
-# Copyright (C) 2000, 2001, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011
+# Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
@@ -37,7 +38,7 @@  dp-bit.c: $(srcdir)/config/fp-bit.c
 	echo '#endif' >> dp-bit.c
 	cat $(srcdir)/config/fp-bit.c >> dp-bit.c
 
-MULTILIB_OPTIONS     = mlittle-endian/mbig-endian mhard-float/msoft-float
+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
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/t-wince-pe gcc-mainline/gcc/config/arm/t-wince-pe
--- gcc-mainline-1/gcc/config/arm/t-wince-pe	2010-11-29 10:44:00.000000000 -0800
+++ gcc-mainline/gcc/config/arm/t-wince-pe	2011-03-01 15:30:27.000000000 -0800
@@ -1,4 +1,4 @@ 
-# Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010
+# Copyright (C) 2003, 2004, 2006, 2008, 2009, 2010, 2011
 # Free Software Foundation, Inc.
 #
 # This file is part of GCC.
@@ -43,7 +43,7 @@  pe.o: $(srcdir)/config/arm/pe.c $(CONFIG
 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
 		$(srcdir)/config/arm/pe.c
 
-MULTILIB_OPTIONS = mhard-float
+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
diff -rupN --exclude=.svn gcc-mainline-1/gcc/config/arm/wince-pe.h gcc-mainline/gcc/config/arm/wince-pe.h
--- gcc-mainline-1/gcc/config/arm/wince-pe.h	2009-03-28 00:38:45.000000000 -0700
+++ gcc-mainline/gcc/config/arm/wince-pe.h	2011-03-01 15:33:16.000000000 -0800
@@ -1,5 +1,5 @@ 
 /* Definitions of target machine for GNU compiler, for ARM with WINCE-PE obj format.
-   Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005, 2007, 2011 Free Software Foundation, Inc.
    Contributed by Nick Clifton <nickc@redhat.com>
    
    This file is part of GCC.
@@ -23,4 +23,4 @@ 
 
 #undef  MULTILIB_DEFAULTS
 #define MULTILIB_DEFAULTS \
-  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }  
+  { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork" }