riscv: tool chain 19.05

issue #3273
This commit is contained in:
Sebastian Sumpf 2019-05-06 18:18:21 +02:00 committed by Christian Helmuth
parent f369da741d
commit 36f90e57f3
7 changed files with 85 additions and 20 deletions

View File

@ -1 +1 @@
a27882f8ecc8e71e9e0c1f6d74c6bea0253b335c
62d3090d2ac134787457839ec55cf45512817fe2

View File

@ -12,6 +12,8 @@ PATCHES := $(addprefix ${DIR(binutils)}/patches/, \
$(shell cat $(REP_DIR)/${DIR(binutils)}/patches/series))
PATCH_OPT := -p1 -d ${DIR(binutils)}
HASH_INPUT += $(REP_DIR)/${DIR(binutils)}/patches/series
AUTOCONF := autoconf
$(call check_tool,$(AUTOCONF))

View File

@ -1 +1 @@
8c08fffc2bffe76384cab49019d889ff4d3e086c
b6533ff19936e6aceac99a98b8a29779e5f8a393

View File

@ -0,0 +1,21 @@
commit 55b4054cf95835fef2896e884cfc0069a0a14401
Author: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
Date: Thu Apr 25 11:02:51 2019 +0200
riscv: always enable shared library support
diff --git a/ld/emulparams/elf32lriscv-defs.sh b/ld/emulparams/elf32lriscv-defs.sh
index 5ac3b602..32b50682 100644
--- a/ld/emulparams/elf32lriscv-defs.sh
+++ b/ld/emulparams/elf32lriscv-defs.sh
@@ -26,6 +26,10 @@ case "$target" in
;;
esac
+# always enable shared library support
+GENERATE_SHLIB_SCRIPT=yes
+GENERATE_PIE_SCRIPT=yes
+
TEXT_START_ADDR=0x10000
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"

View File

@ -1 +1,2 @@
arm.patch
riscv.patch

View File

@ -1,18 +1,9 @@
config.patch
From: Sebastian Sumpf <sebastian.sumpf@genode-labs.com>
---
gcc/config.gcc | 2 +-
gcc/config/arm/arm.h | 4 ++--
gcc/config/arm/unknown-elf.h | 16 ++++++++++++++++
gcc/config/i386/x86-64.h | 23 +++++++++++++++++++++--
libgcc/config.host | 16 ++++++++++++----
5 files changed, 52 insertions(+), 9 deletions(-)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 7af8e02..3c87dfb 100644
index 7af8e028..3c87dfb0 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1184,7 +1184,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
@ -25,7 +16,7 @@ index 7af8e02..3c87dfb 100644
;;
arm*-*-fuchsia*)
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index 2809112..2476cb3 100644
index 942bb4ca..c36b8eea 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -668,11 +668,11 @@ extern int arm_arch_cmse;
@ -43,7 +34,7 @@ index 2809112..2476cb3 100644
/* AAPCS requires that structure alignment is affected by bitfields. */
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index 12dd093..ec0a72e 100644
index 12dd0931..ec0a72e7 100644
--- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h
@@ -94,3 +94,19 @@
@ -67,7 +58,7 @@ index 12dd093..ec0a72e 100644
+/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57699 */
+#define NO_IMPLICIT_EXTERN_C
diff --git a/gcc/config/i386/x86-64.h b/gcc/config/i386/x86-64.h
index e2a8306..1c5e2e1 100644
index e2a8306c..1c5e2e15 100644
--- a/gcc/config/i386/x86-64.h
+++ b/gcc/config/i386/x86-64.h
@@ -37,10 +37,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@ -106,8 +97,60 @@ index e2a8306..1c5e2e1 100644
+/* Don't assume anything about the header files. */
+/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57699 */
+#define NO_IMPLICIT_EXTERN_C
diff --git a/gcc/config/riscv/elf.h b/gcc/config/riscv/elf.h
index a8357bb6..cd33bb28 100644
--- a/gcc/config/riscv/elf.h
+++ b/gcc/config/riscv/elf.h
@@ -17,10 +17,12 @@ 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/>. */
+#ifndef LINK_SPEC
#define LINK_SPEC "\
-melf" XLEN_SPEC "lriscv \
%{mno-relax:--no-relax} \
%{shared}"
+#endif
/* Link against Newlib libraries, because the ELF backend assumes Newlib.
Handle the circular dependence between libc and libgloss. */
diff --git a/gcc/config/riscv/riscv.h b/gcc/config/riscv/riscv.h
index 62279ff2..fdf77645 100644
--- a/gcc/config/riscv/riscv.h
+++ b/gcc/config/riscv/riscv.h
@@ -819,10 +819,10 @@ while (0)
#define ASM_COMMENT_START "#"
#undef SIZE_TYPE
-#define SIZE_TYPE (POINTER_SIZE == 64 ? "long unsigned int" : "unsigned int")
+#define SIZE_TYPE (POINTER_SIZE == 64 ? "long unsigned int" : "long unsigned int")
#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE (POINTER_SIZE == 64 ? "long int" : "int")
+#define PTRDIFF_TYPE (POINTER_SIZE == 64 ? "long int" : "long int")
/* The maximum number of bytes copied by one iteration of a movmemsi loop. */
@@ -902,4 +902,17 @@ extern unsigned riscv_stack_boundary;
#define SWSP_REACH (4LL << C_SxSP_BITS)
#define SDSP_REACH (8LL << C_SxSP_BITS)
+ /* genode.h */
+
+/*
+ * The 'LINK_SPEC' define comprises the rules of how the GCC frontend invokes
+ * the linker
+ */
+#undef LINK_SPEC
+#define LINK_SPEC " \
+-melf" XLEN_SPEC "lriscv \
+ %{mno-relax:--no-relax} \
+ %(shared:-shared) \
+ %{!static:--eh-frame-hdr}"
+
#endif /* ! GCC_RISCV_H */
diff --git a/libgcc/config.host b/libgcc/config.host
index 11b4aca..5e9cfa8 100644
index 11b4acaf..5e9cfa86 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -312,7 +312,7 @@ case ${host} in

View File

@ -194,7 +194,7 @@ TARGET_NAME_x86 = x86_64-pc-elf
TARGET_NAME_arm = arm-none-eabi
TARGET_NAME_riscv = riscv64-unknown-elf
GCC_CONFIG_riscv = --with-arch=rv64imac
GCC_CONFIG_riscv = --with-arch=rv64imac --with-abi=lp64
ifneq ($(VERBOSE),)
CONFIG_QUIET = --quiet
@ -210,13 +210,11 @@ BINUTILS_BOOTSTRAP_CONFIG += $(COMMON_BOOTSTRAP_CONFIG)
ifeq ($(PLATFORM),riscv)
LANGUAGES = c,c++
GDB_INSTALLED_BINARIES =
LIB_GCC = cd $(INSTALL_LOCATION)/lib/gcc/riscv64-unknown-elf/$(GCC_VERSION)/rv64imac/lp64 && \
$(SUDO) ln -sf ../../include include
INSTALL_ADA =
else
LANGUAGES = c,c++,ada
GDB_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gdb
LIB_GCC =
INSTALL_ADA = $(SUDO) cp $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/gnatmake $(INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gnatmake
endif
@ -331,7 +329,7 @@ BINUTILS_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-o
GCC_BINARIES = $(BUILD_LOCATION)/$(PLATFORM)/gcc/gcc/g++-cross
GCC_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-g++
GDB_BINARIES = $(BUILD_LOCATION)/$(PLATFORM)/gdb/gdb/gdb
GDB_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gdb
build_all: $(GCC_INSTALLED_BINARIES) $(GDB_INSTALLED_BINARIES)