Add RTEMS support
authorSebastian Huber <sebastian.huber@embedded-brains.de>
Thu, 27 Jul 2017 16:41:27 +0000 (16:41 +0000)
committerPalmer Dabbelt <palmer@gcc.gnu.org>
Thu, 27 Jul 2017 16:41:27 +0000 (16:41 +0000)
gcc/ChangeLog

2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>

* config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
* config/riscv/rtems.h: New file.

From-SVN: r250632

gcc/ChangeLog
gcc/config.gcc
gcc/config/riscv/rtems.h [new file with mode: 0644]

index 0b37bae243e14a4e6684cac4f7fd3128f9f98906..d8069d3ac683fc733ec0a277dece22a9abefac3e 100644 (file)
@@ -1,3 +1,8 @@
+2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+
+       * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
+       * config/riscv/rtems.h: New file.
+
 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
            Sudakshina Das  <sudi.das@arm.com>
 
index 2ae0218b5fc2fcf3fa144f0a47decf2da7be0294..0224339cfb57fef67f75fb454a186160fccf1955 100644 (file)
@@ -2040,7 +2040,7 @@ riscv*-*-linux*)
        # automatically detect that GAS supports it, yet we require it.
        gcc_cv_initfini_array=yes
        ;;
-riscv*-*-elf*)
+riscv*-*-elf* | riscv*-*-rtems*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
        case "x${enable_multilib}" in
        xno) ;;
@@ -2053,6 +2053,11 @@ riscv*-*-elf*)
        # Force .init_array support.  The configure script cannot always
        # automatically detect that GAS supports it, yet we require it.
        gcc_cv_initfini_array=yes
+       case ${target} in
+       riscv*-*-rtems*)
+         tm_file="${tm_file} rtems.h riscv/rtems.h"
+         ;;
+       esac
        ;;
 mips*-*-netbsd*)                       # NetBSD/mips, either endian.
        target_cpu_default="MASK_ABICALLS"
diff --git a/gcc/config/riscv/rtems.h b/gcc/config/riscv/rtems.h
new file mode 100644 (file)
index 0000000..221e2f6
--- /dev/null
@@ -0,0 +1,31 @@
+/* Definitions for RISC-V RTEMS systems with ELF format.
+   Copyright (C) 2017 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.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()               \
+    do {                                       \
+       builtin_define ("__rtems__");           \
+       builtin_define ("__USE_INIT_FINI__");   \
+       builtin_assert ("system=rtems");        \
+    } while (0)