config.gcc: Add support for arm*-*-phoenix* targets.
authorJakub Sejdak <jakub.sejdak@phoesys.com>
Thu, 23 Jun 2016 07:28:17 +0000 (07:28 +0000)
committerJakub Sejdak <ksejdak@gcc.gnu.org>
Thu, 23 Jun 2016 07:28:17 +0000 (07:28 +0000)
2016-06-23  Jakub Sejdak  <jakub.sejdak@phoesys.com>

* config.gcc: Add support for arm*-*-phoenix* targets.
* config/arm/t-phoenix: New.
* config/phoenix.h: New.

From-SVN: r237728

gcc/ChangeLog
gcc/config.gcc
gcc/config/arm/t-phoenix [new file with mode: 0644]
gcc/config/phoenix.h [new file with mode: 0644]

index c9d1a16180673b649b7d302f227c63079eeca730..81f1b4d8a55b9891442e1cb09457fbedf1ed9298 100644 (file)
@@ -1,3 +1,9 @@
+2016-06-23  Jakub Sejdak  <jakub.sejdak@phoesys.com>
+
+       * config.gcc: Add support for arm*-*-phoenix* targets.
+       * config/arm/t-phoenix: New.
+       * config/phoenix.h: New.
+
 2016-06-23  Uros Bizjak  <ubizjak@gmail.com>
            H.J. Lu  <hongjiu.lu@intel.com>
 
index 3fa9d5877a15b8dcf219b475eb23deb2b2593e43..1f75f17877334c2bb61cd16b69539ec7514db8ae 100644 (file)
@@ -804,6 +804,11 @@ case ${target} in
       ;;
   esac
   ;;
+*-*-phoenix*)
+  gas=yes
+  gnu_ld=yes
+  default_use_cxa_atexit=yes
+  ;;
 *-*-rtems*)
   case ${enable_threads} in
     "" | yes | rtems) thread_file='rtems' ;;
@@ -1086,6 +1091,12 @@ arm*-*-uclinux*eabi*)            # ARM ucLinux
        # The EABI requires the use of __cxa_atexit.
        default_use_cxa_atexit=yes
        ;;
+arm*-*-phoenix*)
+       tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
+       tm_file="${tm_file} newlib-stdint.h phoenix.h"
+       tm_file="${tm_file} arm/aout.h arm/arm.h"
+       tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
+       ;;
 arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
        case ${target} in
        arm*eb-*-eabi*)
diff --git a/gcc/config/arm/t-phoenix b/gcc/config/arm/t-phoenix
new file mode 100644 (file)
index 0000000..d881884
--- /dev/null
@@ -0,0 +1,29 @@
+# Copyright (C) 2016 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     = marm/mthumb
+MULTILIB_DIRNAMES    = arm thumb
+MULTILIB_EXCEPTIONS  =
+MULTILIB_MATCHES     =
+
+MULTILIB_OPTIONS     += mfloat-abi=hard
+MULTILIB_DIRNAMES    += fpu
+MULTILIB_MATCHES     += mfloat-abi?hard=mhard-float
+
+MULTILIB_OPTIONS     += mno-thumb-interwork/mthumb-interwork
+MULTILIB_DIRNAMES    += normal interwork
diff --git a/gcc/config/phoenix.h b/gcc/config/phoenix.h
new file mode 100644 (file)
index 0000000..9ffb958
--- /dev/null
@@ -0,0 +1,33 @@
+/* Base configuration file for all Phoenix-RTOS targets.
+   Copyright (C) 2016 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/>.  */
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()           \
+    do {                                   \
+      builtin_define_std ("phoenix");      \
+      builtin_define_std ("unix");         \
+      builtin_assert ("system=phoenix");   \
+      builtin_assert ("system=unix");      \
+    } while(0);
+
+#define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
+
+/* This will prevent selecting 'unsigned long int' instead of 'unsigned int' as 'uint32_t' in stdint-newlib.h. */
+#undef STDINT_LONG32
+#define STDINT_LONG32          0