It appears to work for me: I can generate a simple no-op executable and link it with multilib. I don't know anything about RTEMS, so I'm just going to trust it'll actually work :). We're not going to have bandwidth to test this, but if you're interested there's some support for running the GCC test suite in our super-repo
https://github.com/riscv/riscv-gnu-toolchain I committed the patch as https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=250632 Thanks a bunch! On Thu, 27 Jul 2017 07:12:42 PDT (-0700), kito.ch...@gmail.com wrote: > Hi Sebastian: > LGTM, I've test riscv32-rtems-gcc is buildable. > > Thanks for you patch :) > > Hi Palmer: > Could you help to commit this patch ? > > Thanks. > > On Thu, Jul 27, 2017 at 7:05 PM, Sebastian Huber > <sebastian.hu...@embedded-brains.de> wrote: >> gcc/ >> * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*). >> * config/riscv/rtems.h: New file. >> --- >> gcc/config.gcc | 7 ++++++- >> gcc/config/riscv/rtems.h | 31 +++++++++++++++++++++++++++++++ >> 2 files changed, 37 insertions(+), 1 deletion(-) >> create mode 100644 gcc/config/riscv/rtems.h >> >> diff --git a/gcc/config.gcc b/gcc/config.gcc >> index aab7f65c1df..f28164646c3 100644 >> --- a/gcc/config.gcc >> +++ b/gcc/config.gcc >> @@ -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 >> index 00000000000..221e2f69815 >> --- /dev/null >> +++ b/gcc/config/riscv/rtems.h >> @@ -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) >> -- >> 2.12.3 >>