Skip to content
This repository has been archived by the owner on Sep 28, 2019. It is now read-only.

Commit

Permalink
add support for riscv-none-embed-*
Browse files Browse the repository at this point in the history
  • Loading branch information
ilg-ul committed Apr 16, 2019
1 parent 242abca commit 0c7a874
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 2 deletions.
6 changes: 6 additions & 0 deletions config.sub
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,9 @@ case $basic_machine in
| ymp-* \
| z8k-* | z80-*)
;;
# [GNU MCU Eclipse]
riscv-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
Expand Down Expand Up @@ -1419,6 +1422,9 @@ case $os in
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
# [GNU MCU Eclipse]
-embed)
;;
-qnx*)
case $basic_machine in
x86-* | i*86-*)
Expand Down
13 changes: 11 additions & 2 deletions gcc/config.gcc
Original file line number Diff line number Diff line change
Expand Up @@ -2071,8 +2071,17 @@ riscv*-*-linux*)
# automatically detect that GAS supports it, yet we require it.
gcc_cv_initfini_array=yes
;;
riscv*-*-elf* | riscv*-*-rtems*)
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
# [GNU MCU Eclipse]
riscv*-*-elf* | riscv*-*-rtems* | riscv-none-embed)
# [GNU MCU Eclipse]
case ${target} in
riscv-none-embed)
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf-embed.h"
;;
*)
tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
;;
esac
case ${target} in
*-*-rtems*)
tm_file="${tm_file} rtems.h riscv/rtems.h"
Expand Down
39 changes: 39 additions & 0 deletions gcc/config/riscv/elf-embed.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* Target macros for riscv*-elf targets.
Copyright (C) 1994-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.
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 LINK_SPEC "\
-melf" XLEN_SPEC "lriscv \
%{mno-relax:--no-relax} \
%{shared}"

/* Link against Newlib libraries, because the ELF backend assumes Newlib.
Handle the circular dependence between libc and libgloss. */
#undef LIB_SPEC
// GNU MCU Eclipse
// #define LIB_SPEC "--start-group -lc %{!specs=nosys.specs:-lgloss} --end-group"
// The sequence is copied from arm-none-eabi, might not be exactly right.
#define LIB_SPEC "--start-group -lgcc -lg -lc --end-group"

#undef STARTFILE_SPEC
#define STARTFILE_SPEC "crt0%O%s crtbegin%O%s"

#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend%O%s"

#define NO_IMPLICIT_EXTERN_C 1

0 comments on commit 0c7a874

Please sign in to comment.