Patchwork ARM RTEMS changes for GCC 4.6

login
register
mail settings
Submitter Sebastian Huber
Date Feb. 22, 2013, 3:40 p.m.
Message ID <1361547650-18036-1-git-send-email-sebastian.huber@embedded-brains.de>
Download mbox | patch
Permalink /patch/222549/
State New
Headers show

Comments

Sebastian Huber - Feb. 22, 2013, 3:40 p.m.
2013-02-22  Sebastian Huber <sebastian.huber@embedded-brains.de>

        * config.gcc (arm*-*-rtemself*): New.
        (arm*-*-rtems*): Removed.
        (arm*-*-eabi* | arm*-*-symbianelf*): Add (arm*-*-rtems*).
        * config/arm/rtems-eabi.h: New file.
        * config/arm/t-rtems-eabi: New file.
---
 gcc/config.gcc              |   16 ++++++++++------
 gcc/config/arm/rtems-eabi.h |   29 +++++++++++++++++++++++++++++
 gcc/config/arm/t-rtems-eabi |    8 ++++++++
 3 files changed, 47 insertions(+), 6 deletions(-)
 create mode 100644 gcc/config/arm/rtems-eabi.h
 create mode 100644 gcc/config/arm/t-rtems-eabi
Richard Earnshaw - Feb. 22, 2013, 4:08 p.m.
I have no objections to this if the release managers agree.

R.

On 22/02/13 15:40, Sebastian Huber wrote:
> 2013-02-22  Sebastian Huber <sebastian.huber@embedded-brains.de>
>
>          * config.gcc (arm*-*-rtemself*): New.
>          (arm*-*-rtems*): Removed.
>          (arm*-*-eabi* | arm*-*-symbianelf*): Add (arm*-*-rtems*).
>          * config/arm/rtems-eabi.h: New file.
>          * config/arm/t-rtems-eabi: New file.
> ---
>   gcc/config.gcc              |   16 ++++++++++------
>   gcc/config/arm/rtems-eabi.h |   29 +++++++++++++++++++++++++++++
>   gcc/config/arm/t-rtems-eabi |    8 ++++++++
>   3 files changed, 47 insertions(+), 6 deletions(-)
>   create mode 100644 gcc/config/arm/rtems-eabi.h
>   create mode 100644 gcc/config/arm/t-rtems-eabi
>
> diff --git a/gcc/config.gcc b/gcc/config.gcc
> index fdbe321..35d502b 100644
> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -870,7 +870,12 @@ arm*-*-ecos-elf)
>   	tmake_file="arm/t-arm arm/t-arm-elf"
>   	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
>   	;;
> -arm*-*-eabi* | arm*-*-symbianelf* )
> +arm*-*-rtemself*)
> +	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"
> +	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
> +	;;
> +arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
>   	# The BPABI long long divmod functions return a 128-bit value in
>   	# registers r0-r3.  Correctly modeling that requires the use of
>   	# TImode.
> @@ -885,6 +890,10 @@ arm*-*-eabi* | arm*-*-symbianelf* )
>   	  tmake_file="${tmake_file} arm/t-bpabi"
>   	  use_gcc_stdint=wrap
>   	  ;;
> +	arm*-*-rtems*)
> +	  tm_file="${tm_file} rtems.h arm/rtems-eabi.h newlib-stdint.h"
> +	  tmake_file="${tmake_file} arm/t-bpabi t-rtems arm/t-rtems-eabi"
> +	  ;;
>   	arm*-*-symbianelf*)
>   	  tm_file="${tm_file} arm/symbian.h"
>   	  # We do not include t-bpabi for Symbian OS because the system
> @@ -895,11 +904,6 @@ arm*-*-eabi* | arm*-*-symbianelf* )
>   	tm_file="${tm_file} arm/aout.h arm/arm.h"
>   	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
>   	;;
> -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"
> -	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
> -	;;
>   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"
> diff --git a/gcc/config/arm/rtems-eabi.h b/gcc/config/arm/rtems-eabi.h
> new file mode 100644
> index 0000000..ced98a9
> --- /dev/null
> +++ b/gcc/config/arm/rtems-eabi.h
> @@ -0,0 +1,29 @@
> +/* Definitions for RTEMS based ARM systems using EABI.
> +   Copyright (C) 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/>.  */
> +
> +#define HAS_INIT_SECTION
> +
> +#undef TARGET_OS_CPP_BUILTINS
> +#define TARGET_OS_CPP_BUILTINS()		\
> +    do {					\
> +	builtin_define ("__rtems__");		\
> +	builtin_define ("__USE_INIT_FINI__");	\
> +	builtin_assert ("system=rtems");	\
> +	TARGET_BPABI_CPP_BUILTINS();    	\
> +    } while (0)
> diff --git a/gcc/config/arm/t-rtems-eabi b/gcc/config/arm/t-rtems-eabi
> new file mode 100644
> index 0000000..f0e714a
> --- /dev/null
> +++ b/gcc/config/arm/t-rtems-eabi
> @@ -0,0 +1,8 @@
> +# Custom RTEMS EABI multilibs
> +
> +MULTILIB_OPTIONS    = mthumb march=armv6-m/march=armv7/march=armv7-m
> +MULTILIB_DIRNAMES   = thumb armv6-m armv7 armv7-m
> +MULTILIB_EXCEPTIONS = march=armv6-m march=armv7 march=armv7-m
> +MULTILIB_MATCHES    =
> +MULTILIB_EXCLUSIONS =
> +MULTILIB_OSDIRNAMES =
>

Patch

diff --git a/gcc/config.gcc b/gcc/config.gcc
index fdbe321..35d502b 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -870,7 +870,12 @@  arm*-*-ecos-elf)
 	tmake_file="arm/t-arm arm/t-arm-elf"
 	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
 	;;
-arm*-*-eabi* | arm*-*-symbianelf* )
+arm*-*-rtemself*)
+	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"
+	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
+	;;
+arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
 	# The BPABI long long divmod functions return a 128-bit value in
 	# registers r0-r3.  Correctly modeling that requires the use of
 	# TImode.
@@ -885,6 +890,10 @@  arm*-*-eabi* | arm*-*-symbianelf* )
 	  tmake_file="${tmake_file} arm/t-bpabi"
 	  use_gcc_stdint=wrap
 	  ;;
+	arm*-*-rtems*)
+	  tm_file="${tm_file} rtems.h arm/rtems-eabi.h newlib-stdint.h"
+	  tmake_file="${tmake_file} arm/t-bpabi t-rtems arm/t-rtems-eabi"
+	  ;;
 	arm*-*-symbianelf*)
 	  tm_file="${tm_file} arm/symbian.h"
 	  # We do not include t-bpabi for Symbian OS because the system
@@ -895,11 +904,6 @@  arm*-*-eabi* | arm*-*-symbianelf* )
 	tm_file="${tm_file} arm/aout.h arm/arm.h"
 	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
 	;;
-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"
-	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
-	;;
 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"
diff --git a/gcc/config/arm/rtems-eabi.h b/gcc/config/arm/rtems-eabi.h
new file mode 100644
index 0000000..ced98a9
--- /dev/null
+++ b/gcc/config/arm/rtems-eabi.h
@@ -0,0 +1,29 @@ 
+/* Definitions for RTEMS based ARM systems using EABI.
+   Copyright (C) 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/>.  */
+
+#define HAS_INIT_SECTION
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()		\
+    do {					\
+	builtin_define ("__rtems__");		\
+	builtin_define ("__USE_INIT_FINI__");	\
+	builtin_assert ("system=rtems");	\
+	TARGET_BPABI_CPP_BUILTINS();    	\
+    } while (0)
diff --git a/gcc/config/arm/t-rtems-eabi b/gcc/config/arm/t-rtems-eabi
new file mode 100644
index 0000000..f0e714a
--- /dev/null
+++ b/gcc/config/arm/t-rtems-eabi
@@ -0,0 +1,8 @@ 
+# Custom RTEMS EABI multilibs
+
+MULTILIB_OPTIONS    = mthumb march=armv6-m/march=armv7/march=armv7-m
+MULTILIB_DIRNAMES   = thumb armv6-m armv7 armv7-m
+MULTILIB_EXCEPTIONS = march=armv6-m march=armv7 march=armv7-m
+MULTILIB_MATCHES    =
+MULTILIB_EXCLUSIONS =
+MULTILIB_OSDIRNAMES =