From 58f2088d3e1870115585c2186402860271f9b84c Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Sun, 9 Apr 2017 21:02:34 +0200 Subject: [PATCH] gcc: update to version 6.3.0 Issue #2372 --- repos/base/mk/generic.mk | 5 +- repos/base/mk/global.mk | 46 +++--- repos/base/mk/spec/arm.mk | 3 +- repos/base/run/ada.run | 36 +++++ repos/base/src/test/ada/README | 7 - repos/base/src/test/ada/adainclude/system.ads | 2 + repos/base/src/test/ada/adalib/system.ali | 0 repos/base/src/test/ada/target.mk | 1 - repos/libports/lib/mk/icu.mk | 3 + repos/libports/lib/symbols/libc | 4 +- repos/libports/ports/libc.hash | 2 +- .../libports/src/lib/libc/patches/types.patch | 32 ++++ repos/ports/ports/gcc.hash | 2 +- repos/ports/ports/gcc.port | 4 +- repos/ports/src/lib/libc_noux/plugin.cc | 2 +- .../ports/src/noux-pkg/gcc/patches/arm.patch | 31 +++- .../src/noux-pkg/gcc/patches/config.patch | 117 +++++++-------- .../gcc/patches/gnu_inline_mismatch.patch | 33 ----- .../gcc/patches/go_libbacktrace.patch | 4 +- .../gcc/patches/host_target_combination.patch | 4 +- .../src/noux-pkg/gcc/patches/libgcc_s.patch | 28 ++-- .../gcc/patches/libstdcxx_without_libc.patch | 33 +++-- .../gcc/patches/libsupcxx_demangle.patch | 62 +++++--- .../ports/src/noux-pkg/gcc/patches/misc.patch | 4 +- .../noux-pkg/gcc/patches/no_short_enums.patch | 4 +- .../src/noux-pkg/gcc/patches/noux_build.patch | 76 +++++----- .../src/noux-pkg/gcc/patches/prefer_pic.patch | 2 +- repos/ports/src/noux-pkg/gcc/patches/series | 3 - .../gcc/patches/target_libbacktrace.patch | 4 +- repos/ports/src/noux-pkg/gcc/target.inc | 2 +- repos/ports/src/noux-pkg/gcc_x86/target.mk | 2 + tool/autopilot.list | 1 + tool/builddir/build.mk | 2 +- tool/tool_chain | 139 +++++++++++++----- 34 files changed, 417 insertions(+), 283 deletions(-) create mode 100644 repos/base/run/ada.run create mode 100644 repos/base/src/test/ada/adainclude/system.ads create mode 100644 repos/base/src/test/ada/adalib/system.ali create mode 100644 repos/libports/src/lib/libc/patches/types.patch delete mode 100644 repos/ports/src/noux-pkg/gcc/patches/gnu_inline_mismatch.patch diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk index fac328d59..f90b59fe8 100644 --- a/repos/base/mk/generic.mk +++ b/repos/base/mk/generic.mk @@ -67,9 +67,12 @@ endif # # Compiling Ada source codes # +# The mandatory runtime directories 'adainclude' and 'adalib' are expected in +# the program directory. +# %.o: %.adb $(MSG_COMP)$@ - $(VERBOSE)gnatmake -q -c $(CC_ADA_OPT) $(INCLUDES) $< + $(VERBOSE)$(GNATMAKE) -q -c --GCC=$(CC) --RTS=$(PRG_DIR) $< -cargs $(CC_ADA_OPT) $(INCLUDES) # # Compiling Rust sources diff --git a/repos/base/mk/global.mk b/repos/base/mk/global.mk index 3ce8cff20..24cdd718c 100644 --- a/repos/base/mk/global.mk +++ b/repos/base/mk/global.mk @@ -11,17 +11,18 @@ # # Set undefined CUSTOM_ tools to their default values # -CUSTOM_CC ?= $(CROSS_DEV_PREFIX)gcc -CUSTOM_CXX ?= $(CROSS_DEV_PREFIX)g++ -CUSTOM_CXX_LIB ?= $(CUSTOM_CXX) -CUSTOM_LD ?= $(CROSS_DEV_PREFIX)ld -CUSTOM_AS ?= $(CROSS_DEV_PREFIX)as -CUSTOM_AR ?= $(CROSS_DEV_PREFIX)ar -CUSTOM_NM ?= $(CROSS_DEV_PREFIX)nm -CUSTOM_OBJCOPY ?= $(CROSS_DEV_PREFIX)objcopy -CUSTOM_RANLIB ?= $(CROSS_DEV_PREFIX)ranlib -CUSTOM_STRIP ?= $(CROSS_DEV_PREFIX)strip -CUSTOM_HOST_CC ?= gcc +CUSTOM_CC ?= $(CROSS_DEV_PREFIX)gcc +CUSTOM_CXX ?= $(CROSS_DEV_PREFIX)g++ +CUSTOM_CXX_LIB ?= $(CUSTOM_CXX) +CUSTOM_LD ?= $(CROSS_DEV_PREFIX)ld +CUSTOM_AS ?= $(CROSS_DEV_PREFIX)as +CUSTOM_AR ?= $(CROSS_DEV_PREFIX)ar +CUSTOM_NM ?= $(CROSS_DEV_PREFIX)nm +CUSTOM_OBJCOPY ?= $(CROSS_DEV_PREFIX)objcopy +CUSTOM_RANLIB ?= $(CROSS_DEV_PREFIX)ranlib +CUSTOM_STRIP ?= $(CROSS_DEV_PREFIX)strip +CUSTOM_GNATMAKE ?= $(CROSS_DEV_PREFIX)gnatmake +CUSTOM_HOST_CC ?= gcc # # GNU utilities @@ -37,16 +38,17 @@ ECHO ?= echo -e # # Build tools # -CC = $(CUSTOM_CC) -CXX = $(CUSTOM_CXX) -LD = $(CUSTOM_LD) -AS = $(CUSTOM_AS) -AR = $(CUSTOM_AR) -NM = $(CUSTOM_NM) -OBJCOPY = $(CUSTOM_OBJCOPY) -RANLIB = $(CUSTOM_RANLIB) -STRIP = $(CUSTOM_STRIP) -HOST_CC = $(CUSTOM_HOST_CC) +CC = $(CUSTOM_CC) +CXX = $(CUSTOM_CXX) +LD = $(CUSTOM_LD) +AS = $(CUSTOM_AS) +AR = $(CUSTOM_AR) +NM = $(CUSTOM_NM) +OBJCOPY = $(CUSTOM_OBJCOPY) +RANLIB = $(CUSTOM_RANLIB) +STRIP = $(CUSTOM_STRIP) +GNATMAKE = $(CUSTOM_GNATMAKE) +HOST_CC = $(CUSTOM_HOST_CC) # # Compiler and Linker options @@ -121,7 +123,7 @@ CC_OPT += $(CC_OPT_PIC) # CC_CXX_OPT += $(CC_OPT) CC_C_OPT += $(CC_OPT) -CC_ADA_OPT += $(CC_OLEVEL) $(CC_WARN) +CC_ADA_OPT += $(CC_OPT) # # Rust-specific arguments diff --git a/repos/base/mk/spec/arm.mk b/repos/base/mk/spec/arm.mk index bb7602b61..c2d42ead8 100644 --- a/repos/base/mk/spec/arm.mk +++ b/repos/base/mk/spec/arm.mk @@ -9,6 +9,7 @@ SPECS += 32bit # Prevent compiler message # "note: the mangling of 'va_list' has changed in GCC 4.4" # -CC_OPT += -Wno-psabi +CC_C_OPT += -Wno-psabi +CC_CXX_OPT += -Wno-psabi include $(BASE_DIR)/mk/spec/32bit.mk diff --git a/repos/base/run/ada.run b/repos/base/run/ada.run new file mode 100644 index 000000000..7181d7d6a --- /dev/null +++ b/repos/base/run/ada.run @@ -0,0 +1,36 @@ +build "core init test/ada" + +create_boot_directory + +install_config { + + + + + + + + + + + + + + + +} + +build_boot_image "core ld.lib.so init test-ada" + +append qemu_args "-nographic -m 64" + +run_genode_until {child "test-ada" exited with exit value 0.*} 10 + +grep_output {init -> test-ada} +unify_output {0x[0-9a-f]+} "UNIFIED" + +compare_output_to { + [init -> test-ada] Warning: using legacy main function, please convert to 'Component::construct' + [init -> test-ada] add called with a=13, b=14, result at address UNIFIED + [init -> test-ada] print_int called with argument 27 +} diff --git a/repos/base/src/test/ada/README b/repos/base/src/test/ada/README index 452206bbe..8a14e3f8d 100644 --- a/repos/base/src/test/ada/README +++ b/repos/base/src/test/ada/README @@ -9,12 +9,5 @@ this example calls the Ada main procedure. The test further exercises the call of C functions from Ada code. So the integration of Ada and C code is almost seamless. -For building the Ada test program, you must have installed the GNU GNAT Ada -compiler. Right now, we are using the host version of this compiler, which -is save as long as we do not use advanced Ada features such as exceptions. -To enable building the test program, add 'gnat' to the 'SPECS' declaration -of your '/etc/specs.conf'. Otherwise, the Genode build system -will skip the target. - Please note that the current version of this program does not use 'gnatbind'. Therefore, package elaboration is not executed. diff --git a/repos/base/src/test/ada/adainclude/system.ads b/repos/base/src/test/ada/adainclude/system.ads new file mode 100644 index 000000000..c63b1b0c0 --- /dev/null +++ b/repos/base/src/test/ada/adainclude/system.ads @@ -0,0 +1,2 @@ +Package System is +end System; diff --git a/repos/base/src/test/ada/adalib/system.ali b/repos/base/src/test/ada/adalib/system.ali new file mode 100644 index 000000000..e69de29bb diff --git a/repos/base/src/test/ada/target.mk b/repos/base/src/test/ada/target.mk index 7ea2e80f2..7650fcbe7 100644 --- a/repos/base/src/test/ada/target.mk +++ b/repos/base/src/test/ada/target.mk @@ -1,5 +1,4 @@ TARGET = test-ada -REQUIRES = gnat SRC_ADA = main.adb SRC_CC = add.cc startup.cc LIBS = base diff --git a/repos/libports/lib/mk/icu.mk b/repos/libports/lib/mk/icu.mk index 0f9efae52..5487d8d26 100644 --- a/repos/libports/lib/mk/icu.mk +++ b/repos/libports/lib/mk/icu.mk @@ -85,6 +85,9 @@ binary_$(ICU_DAT).o : $(ICU_DAT) CC_OPT += -DU_COMMON_IMPLEMENTATION -DU_I18N_IMPLEMENTATION +# prevent redefinition of the 'uintptr_t' type +CC_OPT += -D__intptr_t_defined + CC_WARN += -Wno-deprecated-declarations LIBS = stdcxx pthread diff --git a/repos/libports/lib/symbols/libc b/repos/libports/lib/symbols/libc index a9f977b9d..e03ca3fce 100644 --- a/repos/libports/lib/symbols/libc +++ b/repos/libports/lib/symbols/libc @@ -960,7 +960,7 @@ _ZN4Libc6Plugin11getaddrinfoEPKcS2_PK8addrinfoPPS3_ T _ZN4Libc6Plugin11getpeernameEPNS_15File_descriptorEP8sockaddrPj T _ZN4Libc6Plugin11getsocknameEPNS_15File_descriptorEP8sockaddrPj T _ZN4Libc6Plugin12freeaddrinfoEP8addrinfo T -_ZN4Libc6Plugin13getdirentriesEPNS_15File_descriptorEPcjPx T +_ZN4Libc6Plugin13getdirentriesEPNS_15File_descriptorEPcmPx T _ZN4Libc6Plugin13getdirentriesEPNS_15File_descriptorEPcmPl T _ZN4Libc6Plugin13supports_mmapEv T _ZN4Libc6Plugin13supports_openEPKci T @@ -982,7 +982,7 @@ _ZN4Libc6Plugin21supports_freeaddrinfoEP8addrinfo T _ZN4Libc6Plugin3dupEPNS_15File_descriptorE T _ZN4Libc6Plugin4bindEPNS_15File_descriptorEPK8sockaddrj T _ZN4Libc6Plugin4dup2EPNS_15File_descriptorES2_ T -_ZN4Libc6Plugin4mmapEPvjiiPNS_15File_descriptorEx T +_ZN4Libc6Plugin4mmapEPvmiiPNS_15File_descriptorEx T _ZN4Libc6Plugin4mmapEPvmiiPNS_15File_descriptorEl T _ZN4Libc6Plugin4openEPKci T _ZN4Libc6Plugin4pipeEPPNS_15File_descriptorE T diff --git a/repos/libports/ports/libc.hash b/repos/libports/ports/libc.hash index a6317b96c..2e435f815 100644 --- a/repos/libports/ports/libc.hash +++ b/repos/libports/ports/libc.hash @@ -1 +1 @@ -4a2b060f31752d9adcdc7ecb7e3c425a14cfd072 +0885f819fb527fb3930cf56b7bc118f364c6f074 diff --git a/repos/libports/src/lib/libc/patches/types.patch b/repos/libports/src/lib/libc/patches/types.patch new file mode 100644 index 000000000..4df54ec1a --- /dev/null +++ b/repos/libports/src/lib/libc/patches/types.patch @@ -0,0 +1,32 @@ ++++ src/lib/libc/sys/i386/include/_types.h +@@ -89,11 +89,11 @@ typedef __int8_t __int_least8_t; + typedef __int16_t __int_least16_t; + typedef __int32_t __int_least32_t; + typedef __int64_t __int_least64_t; +-typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ ++typedef __PTRDIFF_TYPE__ __ptrdiff_t; /* ptr1 - ptr2 */ + typedef __int32_t __register_t; + typedef __int32_t __segsz_t; /* segment size (in pages) */ +-typedef __uint32_t __size_t; /* sizeof() */ +-typedef __int32_t __ssize_t; /* byte count or error */ ++typedef __SIZE_TYPE__ __size_t; /* sizeof() */ ++typedef __PTRDIFF_TYPE__ __ssize_t; /* byte count or error */ + typedef __int32_t __time_t; /* time()... */ + typedef __uint32_t __uintfptr_t; + typedef __uint64_t __uintmax_t; ++++ src/lib/libc/sys/arm/include/_types.h +@@ -82,11 +82,11 @@ + typedef __int16_t __int_least16_t; + typedef __int32_t __int_least32_t; + typedef __int64_t __int_least64_t; +-typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ ++typedef __PTRDIFF_TYPE__ __ptrdiff_t; /* ptr1 - ptr2 */ + typedef __int32_t __register_t; + typedef __int32_t __segsz_t; /* segment size (in pages) */ +-typedef __uint32_t __size_t; /* sizeof() */ +-typedef __int32_t __ssize_t; /* byte count or error */ ++typedef __SIZE_TYPE__ __size_t; /* sizeof() */ ++typedef __PTRDIFF_TYPE__ __ssize_t; /* byte count or error */ + typedef __int64_t __time_t; /* time()... */ + typedef __uint32_t __uintfptr_t; + typedef __uint64_t __uintmax_t; diff --git a/repos/ports/ports/gcc.hash b/repos/ports/ports/gcc.hash index b98a7431d..86412e798 100644 --- a/repos/ports/ports/gcc.hash +++ b/repos/ports/ports/gcc.hash @@ -1 +1 @@ -252baf48de6641bad2af9ea82c716a4e50c1e74d +8943c53d0247a0a69fb62be66a224348170af9be diff --git a/repos/ports/ports/gcc.port b/repos/ports/ports/gcc.port index 6f2ac76ba..616a2bc93 100644 --- a/repos/ports/ports/gcc.port +++ b/repos/ports/ports/gcc.port @@ -1,9 +1,9 @@ LICENSE := GPLv3 -VERSION := 4.9.2 +VERSION := 6.3.0 DOWNLOADS := gcc.archive URL(gcc) := ftp://ftp.fu-berlin.de/gnu/gcc/gcc-$(VERSION)/gcc-$(VERSION).tar.bz2 -SHA(gcc) := 79dbcb09f44232822460d80b033c962c0237c6d8 +SHA(gcc) := 928ab552666ee08eed645ff20ceb49d139205dea SIG(gcc) := ${URL(gcc)}.sig KEY(gcc) := GNU DIR(gcc) := src/noux-pkg/gcc diff --git a/repos/ports/src/lib/libc_noux/plugin.cc b/repos/ports/src/lib/libc_noux/plugin.cc index 9acac3adc..6dc832680 100644 --- a/repos/ports/src/lib/libc_noux/plugin.cc +++ b/repos/ports/src/lib/libc_noux/plugin.cc @@ -695,7 +695,7 @@ extern "C" void sync(void) } -extern "C" int kill(int pid, int sig) +extern "C" int kill(__pid_t pid, int sig) { if (verbose_signals) log(__func__, ": pid=", pid, ", sig=", sig); diff --git a/repos/ports/src/noux-pkg/gcc/patches/arm.patch b/repos/ports/src/noux-pkg/gcc/patches/arm.patch index d26188ad2..d3372fe9b 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/arm.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/arm.patch @@ -4,14 +4,24 @@ From: Christian Prochaska --- - gcc/config/arm/arm.h | 1 - - 1 file changed, 1 deletion(-) + gcc/config/arm/arm.h | 3 +-- + libgcc/config/arm/unwind-arm.h | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h -index c60d9a4..fefa7d4 100644 +index ad123dd..31ccb95 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h -@@ -2381,7 +2381,6 @@ extern const char *arm_rewrite_mcpu (int argc, const char **argv); +@@ -865,7 +865,7 @@ extern int arm_arch_crc; + #define EH_RETURN_STACKADJ_RTX gen_rtx_REG (SImode, ARM_EH_STACKADJ_REGNUM) + + #ifndef ARM_TARGET2_DWARF_FORMAT +-#define ARM_TARGET2_DWARF_FORMAT DW_EH_PE_pcrel ++#define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect) + #endif + + /* ttype entries (the only interesting data references used) +@@ -2250,7 +2250,6 @@ extern const char *arm_rewrite_mcpu (int argc, const char **argv); #if defined(__arm__) extern const char *host_detect_local_cpu (int argc, const char **argv); # define EXTRA_SPEC_FUNCTIONS \ @@ -19,3 +29,16 @@ index c60d9a4..fefa7d4 100644 BIG_LITTLE_CPU_SPEC_FUNCTIONS # define MCPU_MTUNE_NATIVE_SPECS \ +diff --git a/libgcc/config/arm/unwind-arm.h b/libgcc/config/arm/unwind-arm.h +index d67383f..9812a47 100644 +--- a/libgcc/config/arm/unwind-arm.h ++++ b/libgcc/config/arm/unwind-arm.h +@@ -49,7 +49,7 @@ extern "C" { + return 0; + + #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \ +- || defined(__FreeBSD__) ++ || defined(__FreeBSD__) || 1 + /* Pc-relative indirect. */ + #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect) + tmp += ptr; diff --git a/repos/ports/src/noux-pkg/gcc/patches/config.patch b/repos/ports/src/noux-pkg/gcc/patches/config.patch index ee05544db..6023b7636 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/config.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/config.patch @@ -1,8 +1,20 @@ +config.patch + +From: Christian Prochaska + + +--- + gcc/config.gcc | 2 +- + gcc/config/arm/unknown-elf.h | 16 ++++++++++++++++ + gcc/config/i386/x86-64.h | 23 +++++++++++++++++++++-- + libgcc/config.host | 12 ++++++++++-- + 4 files changed, 48 insertions(+), 5 deletions(-) + diff --git a/gcc/config.gcc b/gcc/config.gcc -index b7ebc07..5acf469 100644 +index 1d5b23f..1840148 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc -@@ -1060,7 +1060,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) +@@ -1119,7 +1119,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) case ${target} in arm*-*-eabi*) tm_file="$tm_file newlib-stdint.h" @@ -11,29 +23,27 @@ index b7ebc07..5acf469 100644 use_gcc_stdint=wrap ;; arm*-*-rtems*) -@@ -1969,7 +1969,7 @@ riscv*-*-linux*) # Linux RISC-V - ;; - riscv*-*-elf*) # Linux RISC-V - tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h" -- tmake_file="${tmake_file} riscv/t-elf" -+ tmake_file="${tmake_file} riscv/t-elf t-slibgcc" - gnu_ld=yes - gas=yes - gcc_cv_initfini_array=yes -@@ -2915,7 +2915,7 @@ i[34567]86-*-linux* | x86_64-*-linux*) - tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386" - ;; - i[34567]86-*-* | x86_64-*-*) -- tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386" -+ tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386 t-slibgcc" - ;; - powerpc*-*-* | rs6000-*-*) - tm_file="${tm_file} rs6000/option-defaults.h" +--- a/gcc/config/arm/arm.h ++++ b/gcc/config/arm/arm.h +@@ -671,11 +671,11 @@ + #define MAX_FIXED_MODE_SIZE 64 + + #ifndef SIZE_TYPE +-#define SIZE_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "long unsigned int") ++#define SIZE_TYPE (TARGET_AAPCS_BASED ? "long unsigned int" : "long unsigned int") + #endif + + #ifndef PTRDIFF_TYPE +-#define PTRDIFF_TYPE (TARGET_AAPCS_BASED ? "int" : "long int") ++#define PTRDIFF_TYPE (TARGET_AAPCS_BASED ? "long int" : "long int") + #endif + + /* 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 ec6f9a4..579172d 100644 +index fafe057..8bd23e0 100644 --- a/gcc/config/arm/unknown-elf.h +++ b/gcc/config/arm/unknown-elf.h -@@ -94,3 +94,19 @@ +@@ -98,3 +98,19 @@ which will depend on abort, which is defined in libc. */ #undef LINK_GCC_C_SEQUENCE_SPEC #define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L --end-group" @@ -54,9 +64,22 @@ index ec6f9a4..579172d 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 16fc685..85b07bb 100644 +index 204f128..8f590fe 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 + #define MCOUNT_NAME "mcount" + + #undef SIZE_TYPE +-#define SIZE_TYPE (TARGET_LP64 ? "long unsigned int" : "unsigned int") ++#define SIZE_TYPE (TARGET_LP64 ? "long unsigned int" : "long unsigned int") + + #undef PTRDIFF_TYPE +-#define PTRDIFF_TYPE (TARGET_LP64 ? "long int" : "int") ++#define PTRDIFF_TYPE (TARGET_LP64 ? "long int" : "long int") + + #undef WCHAR_TYPE + #define WCHAR_TYPE "int" @@ -106,3 +106,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #undef TARGET_SECTION_TYPE_FLAGS @@ -80,34 +103,11 @@ index 16fc685..85b07bb 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/riscv.h b/gcc/config/riscv/riscv.h -index 4533cff..1f78497 100644 ---- a/gcc/config/riscv/riscv.h -+++ b/gcc/config/riscv/riscv.h -@@ -171,14 +171,11 @@ along with GCC; see the file COPYING3. If not see - %(subtarget_asm_spec)" - - /* Extra switches sometimes passed to the linker. */ -- --#ifndef LINK_SPEC -+#undef LINK_SPEC - #define LINK_SPEC "\ --%{!T:-dT riscv.ld} \ --%{m64:-melf64lriscv} \ --%{m32:-melf32lriscv} \ --%{shared}" --#endif /* LINK_SPEC defined */ -+-melf64lriscv \ -+%{shared:-shared} \ -+%{!static:--eh-frame-hdr}" - - /* This macro defines names of additional specifications to put in the specs - that can be used in various specifications like CC1_SPEC. Its definition diff --git a/libgcc/config.host b/libgcc/config.host -index 8a30368..83b5dba 100644 +index 124f2ce..7b25b79 100644 --- a/libgcc/config.host +++ b/libgcc/config.host -@@ -300,7 +300,7 @@ case ${host} in +@@ -309,7 +309,7 @@ case ${host} in tmake_file=t-vxworks ;; *-*-elf) @@ -116,7 +116,7 @@ index 8a30368..83b5dba 100644 ;; esac -@@ -387,8 +387,12 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) +@@ -414,8 +414,12 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) tm_file="$tm_file arm/bpabi-lib.h" case ${host} in arm*-*-eabi* | arm*-*-rtems*) @@ -124,31 +124,20 @@ index 8a30368..83b5dba 100644 + # The 't-eh-dw2-dip' tmake file is needed to let the tool chain use 'unwind-dw2-fde-dip.c', + # needed for the exception handling on Genode in the presence of shared libraries. + tmake_file="${tmake_file} t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver" - tmake_file="${tmake_file} arm/t-bpabi" + tmake_file="${tmake_file} arm/t-bpabi t-crtfm" - extra_parts="crtbegin.o crtend.o crti.o crtn.o" + extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" ;; arm*-*-symbianelf*) tmake_file="${tmake_file} arm/t-symbian t-slibgcc-nolc-override" -@@ -546,6 +550,10 @@ i[34567]86-*-elf*) +@@ -585,6 +589,10 @@ i[34567]86-*-elf*) tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" ;; - x86_64-*-elf*) + x86_64-*-elf* | x86_64-*-rtems*) + # The 't-slibgcc' tmake file is needed to have libgcc_eh.a built. + # The 't-eh-dw2-dip' tmake file is needed to let the tool chain use 'unwind-dw2-fde-dip.c', + # needed for the exception handling on Genode in the presence of shared libraries. + tmake_file="$tmake_file t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver" tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" ;; - i[34567]86-*-freebsd*) -@@ -1014,8 +1022,8 @@ riscv*-*-linux*) - extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o crtendS.o crtbeginT.o" - ;; - riscv*-*-*) -- tmake_file="${tmake_file} riscv/t-fpbit riscv/t-dpbit riscv/t-elf" -- extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o" -+ tmake_file="${tmake_file} riscv/t-fpbit riscv/t-dpbit riscv/t-elf t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver" -+ extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" - ;; - rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*) - md_unwind_header=rs6000/aix-unwind.h + i[34567]86-*-dragonfly*) diff --git a/repos/ports/src/noux-pkg/gcc/patches/gnu_inline_mismatch.patch b/repos/ports/src/noux-pkg/gcc/patches/gnu_inline_mismatch.patch deleted file mode 100644 index 2452bdd31..000000000 --- a/repos/ports/src/noux-pkg/gcc/patches/gnu_inline_mismatch.patch +++ /dev/null @@ -1,33 +0,0 @@ -Required for building with newer gcc - -See https://gcc.gnu.org/ml/gcc-patches/2015-08/msg00375.html - --- -diff --git a/gcc/cp/cfns.gperf b/gcc/cp/cfns.gperf -index 68acd3d..953262f 100644 ---- a/gcc/cp/cfns.gperf -+++ b/gcc/cp/cfns.gperf -@@ -22,6 +22,9 @@ __inline - static unsigned int hash (const char *, unsigned int); - #ifdef __GNUC__ - __inline -+#ifdef __GNUC_STDC_INLINE__ -+__attribute__ ((__gnu_inline__)) -+#endif - #endif - const char * libc_name_p (const char *, unsigned int); - %} -diff --git a/gcc/cp/cfns.h b/gcc/cp/cfns.h -index 1c6665d..6d00c0e 100644 ---- a/gcc/cp/cfns.h -+++ b/gcc/cp/cfns.h -@@ -53,6 +53,9 @@ __inline - static unsigned int hash (const char *, unsigned int); - #ifdef __GNUC__ - __inline -+#ifdef __GNUC_STDC_INLINE__ -+__attribute__ ((__gnu_inline__)) -+#endif - #endif - const char * libc_name_p (const char *, unsigned int); - /* maximum key range = 391, duplicates = 0 */ diff --git a/repos/ports/src/noux-pkg/gcc/patches/go_libbacktrace.patch b/repos/ports/src/noux-pkg/gcc/patches/go_libbacktrace.patch index f59d70058..67ac36972 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/go_libbacktrace.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/go_libbacktrace.patch @@ -8,7 +8,7 @@ Remove the dependency on libbacktrace, which needs a libc. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/go/config-lang.in b/gcc/go/config-lang.in -index c33e218..ca2b3b1 100644 +index 8e27ade..b326557 100644 --- a/gcc/go/config-lang.in +++ b/gcc/go/config-lang.in @@ -28,7 +28,7 @@ language="go" @@ -17,6 +17,6 @@ index c33e218..ca2b3b1 100644 -target_libs="target-libgo target-libffi target-libbacktrace" +target_libs="target-libgo target-libffi" + lang_dirs="gotools" # The Go frontend is written in C++, so we need to build the C++ - # compiler during stage 1. diff --git a/repos/ports/src/noux-pkg/gcc/patches/host_target_combination.patch b/repos/ports/src/noux-pkg/gcc/patches/host_target_combination.patch index b3d97fa25..66676f9cb 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/host_target_combination.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/host_target_combination.patch @@ -14,10 +14,10 @@ compiler as much as possible. 1 file changed, 1 deletion(-) diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4 -index 15d876e..e026e9a 100644 +index ece1256..a73ce57 100644 --- a/libstdc++-v3/crossconfig.m4 +++ b/libstdc++-v3/crossconfig.m4 -@@ -278,7 +278,6 @@ case "${host}" in +@@ -271,7 +271,6 @@ case "${host}" in AC_DEFINE(HAVE_TANHF) ;; *) diff --git a/repos/ports/src/noux-pkg/gcc/patches/libgcc_s.patch b/repos/ports/src/noux-pkg/gcc/patches/libgcc_s.patch index 07dd93b16..c7b4dfb0e 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/libgcc_s.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/libgcc_s.patch @@ -4,30 +4,34 @@ From: Christian Prochaska --- - libgcc/Makefile.in | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) + libgcc/Makefile.in | 6 ++++++ + 1 file changed, 6 insertions(+) diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in -index e86e98d..ca2275d 100644 +index f09b39b..cabc562 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in -@@ -907,7 +907,7 @@ libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT) +@@ -913,7 +913,11 @@ all: libunwind.a endif ifeq ($(enable_shared),yes) --all: libgcc_eh.a libgcc_s$(SHLIB_EXT) ++ifeq ($(GENODE),yes) +all: libgcc_eh.a ++else + all: libgcc_eh.a libgcc_s$(SHLIB_EXT) ++endif ifneq ($(LIBUNWIND),) all: libunwind$(SHLIB_EXT) - endif -@@ -1090,10 +1090,6 @@ install-shared: + libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT) +@@ -1115,9 +1119,11 @@ install-shared: chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a -- $(subst @multilib_dir@,$(MULTIDIR),$(subst \ -- @shlib_base_name@,libgcc_s,$(subst \ -- @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL)))) -- ++ifneq ($(GENODE),yes) + $(subst @multilib_dir@,$(MULTIDIR),$(subst \ + @shlib_base_name@,libgcc_s,$(subst \ + @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL)))) ++endif + install-leaf: $(install-shared) $(install-libunwind) $(mkinstalldirs) $(DESTDIR)$(inst_libdir) - diff --git a/repos/ports/src/noux-pkg/gcc/patches/libstdcxx_without_libc.patch b/repos/ports/src/noux-pkg/gcc/patches/libstdcxx_without_libc.patch index 079de5ea0..3cb58a826 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/libstdcxx_without_libc.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/libstdcxx_without_libc.patch @@ -4,41 +4,42 @@ From: Christian Prochaska --- - libstdc++-v3/configure.ac | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) + libstdc++-v3/configure.ac | 6 ++++++ + 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac -index 3e8b9c5..1543c25 100644 +index fdc4622..ed8a338 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac -@@ -89,9 +89,9 @@ CXXFLAGS="$save_CXXFLAGS" +@@ -89,9 +89,11 @@ CXXFLAGS="$save_CXXFLAGS" GLIBCXX_CONFIGURE # Libtool setup. --if test "x${with_newlib}" != "xyes"; then -- AC_LIBTOOL_DLOPEN --fi -+#if test "x${with_newlib}" != "xyes"; then -+# AC_LIBTOOL_DLOPEN -+#fi ++if test "$is_hosted" = yes; then + if test "x${with_newlib}" != "xyes"; then + AC_LIBTOOL_DLOPEN + fi ++fi AM_PROG_LIBTOOL ACX_LT_HOST_FLAGS AC_SUBST(enable_shared) -@@ -205,7 +205,7 @@ AC_CHECK_HEADERS(fenv.h complex.h) +@@ -209,7 +211,9 @@ AC_CHECK_HEADERS(fenv.h complex.h) GLIBCXX_CHECK_C99_TR1 # For the EOF, SEEK_CUR, and SEEK_END integer constants. --GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS -+#GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS ++if test "$is_hosted" = yes; then + GLIBCXX_COMPUTE_STDIO_INTEGER_CONSTANTS ++fi # For gettimeofday support. GLIBCXX_CHECK_GETTIMEOFDAY -@@ -358,7 +358,7 @@ GCC_CHECK_UNWIND_GETIPINFO +@@ -362,7 +366,9 @@ GCC_CHECK_UNWIND_GETIPINFO GCC_LINUX_FUTEX([AC_DEFINE(HAVE_LINUX_FUTEX, 1, [Define if futex syscall is available.])]) --GCC_HEADER_STDINT(include/gstdint.h) -+#GCC_HEADER_STDINT(include/gstdint.h) ++if test "$is_hosted" = yes; then + GCC_HEADER_STDINT(include/gstdint.h) ++fi GLIBCXX_ENABLE_SYMVERS([yes]) AC_SUBST(libtool_VERSION) diff --git a/repos/ports/src/noux-pkg/gcc/patches/libsupcxx_demangle.patch b/repos/ports/src/noux-pkg/gcc/patches/libsupcxx_demangle.patch index 7cd22882c..a59670c9c 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/libsupcxx_demangle.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/libsupcxx_demangle.patch @@ -6,14 +6,14 @@ From: Christian Prochaska --- include/libiberty.h | 4 ++++ libiberty/cp-demangle.c | 4 +++- - libstdc++-v3/libsupc++/Makefile.in | 10 +++++----- - 3 files changed, 12 insertions(+), 6 deletions(-) + libstdc++-v3/libsupc++/Makefile.in | 19 ++++++++++++++++++- + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/include/libiberty.h b/include/libiberty.h -index 78c42eb..4fcf284 100644 +index a9c885f..a1479af 100644 --- a/include/libiberty.h +++ b/include/libiberty.h -@@ -47,7 +47,11 @@ extern "C" { +@@ -46,7 +46,11 @@ extern "C" { /* Get a definition for va_list. */ #include @@ -26,10 +26,10 @@ index 78c42eb..4fcf284 100644 /* If the OS supports it, ensure that the supplied stream is setup to avoid any multi-threaded locking. Otherwise leave the FILE pointer diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c -index 3d5d33e..e5f542f 100644 +index 78e5978..d9da7a4 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c -@@ -103,7 +103,9 @@ +@@ -107,7 +107,9 @@ #include "config.h" #endif @@ -39,7 +39,7 @@ index 3d5d33e..e5f542f 100644 #ifdef HAVE_STDLIB_H #include -@@ -5875,7 +5877,7 @@ d_demangle (const char *mangled, int options, size_t *palc) +@@ -6187,7 +6189,7 @@ d_demangle (const char *mangled, int options, size_t *palc) return dgs.buf; } @@ -49,38 +49,52 @@ index 3d5d33e..e5f542f 100644 extern char *__cxa_demangle (const char *, char *, size_t *, int *); diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in -index 88b237e..f861d29 100644 +index f3648ac..169b927 100644 --- a/libstdc++-v3/libsupc++/Makefile.in +++ b/libstdc++-v3/libsupc++/Makefile.in -@@ -104,7 +104,7 @@ am__objects_1 = array_type_info.lo atexit_arm.lo atexit_thread.lo \ - new_opv.lo new_opvnt.lo pbase_type_info.lo pmem_type_info.lo \ - pointer_type_info.lo pure.lo si_class_type_info.lo tinfo.lo \ - tinfo2.lo vec.lo vmi_class_type_info.lo vterminate.lo --@GLIBCXX_HOSTED_TRUE@am__objects_2 = cp-demangle.lo +@@ -128,7 +128,11 @@ am__objects_1 = array_type_info.lo atexit_arm.lo atexit_thread.lo \ + pbase_type_info.lo pmem_type_info.lo pointer_type_info.lo \ + pure.lo si_class_type_info.lo tinfo.lo tinfo2.lo vec.lo \ + vmi_class_type_info.lo vterminate.lo ++ifeq ($(GENODE),yes) +am__objects_2 = cp-demangle.lo - @ENABLE_VTABLE_VERIFY_TRUE@am__objects_3 = vtv_stubs.lo ++else + @GLIBCXX_HOSTED_TRUE@am__objects_2 = cp-demangle.lo ++endif + @ENABLE_VTABLE_VERIFY_TRUE@@VTV_CYGMIN_FALSE@am__objects_3 = \ + @ENABLE_VTABLE_VERIFY_TRUE@@VTV_CYGMIN_FALSE@ vtv_stubs.lo am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2) \ - $(am__objects_3) -@@ -367,8 +367,8 @@ bits_HEADERS = \ +@@ -398,8 +402,14 @@ bits_HEADERS = \ exception_defines.h exception_ptr.h hash_bytes.h nested_exception.h headers = $(std_HEADERS) $(bits_HEADERS) --@GLIBCXX_HOSTED_TRUE@c_sources = \ --@GLIBCXX_HOSTED_TRUE@ cp-demangle.c ++ ++ifeq ($(GENODE),yes) +c_sources = \ -+ cp-demangle.c ++ cp-demangle.c ++else + @GLIBCXX_HOSTED_TRUE@c_sources = \ +-@GLIBCXX_HOSTED_TRUE@ cp-demangle.c ++@GLIBCXX_HOSTED_TRUE@ cp-demangle.c ++endif sources = \ array_type_info.cc \ -@@ -801,9 +801,9 @@ cp-demangle.c: +@@ -840,10 +850,17 @@ uninstall-am: uninstall-bitsHEADERS uninstall-stdHEADERS \ + cp-demangle.c: rm -f $@ $(LN_S) $(toplevel_srcdir)/libiberty/cp-demangle.c $@ - cp-demangle.lo: cp-demangle.c -- $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< ++ifeq ($(GENODE),yes) ++cp-demangle.lo: cp-demangle.c + $(LTCOMPILE) -DGENODE -Wno-error -c $< - cp-demangle.o: cp-demangle.c -- $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< ++cp-demangle.o: cp-demangle.c + $(C_COMPILE) -DGENODE -Wno-error -c $< ++else + cp-demangle.lo: cp-demangle.c + $(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< + cp-demangle.o: cp-demangle.c + $(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $< ++endif # Use special rules for the C++11 sources so that the proper flags are passed. bad_array_length.lo: bad_array_length.cc diff --git a/repos/ports/src/noux-pkg/gcc/patches/misc.patch b/repos/ports/src/noux-pkg/gcc/patches/misc.patch index be73e0ea5..c144cecfd 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/misc.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/misc.patch @@ -9,7 +9,7 @@ Changes lacking documentation 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libgcc/config/t-libunwind-elf b/libgcc/config/t-libunwind-elf -index beacf04..4556eb1 100644 +index cfde66e..aacf57c 100644 --- a/libgcc/config/t-libunwind-elf +++ b/libgcc/config/t-libunwind-elf @@ -32,7 +32,7 @@ SHLIBUNWIND_SONAME = @shlib_base_name@.so.$(SHLIBUNWIND_SOVERSION) @@ -22,7 +22,7 @@ index beacf04..4556eb1 100644 if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ mv -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) \ diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc -index 1696fe8..0beb525 100644 +index 8c5f890..f2285a3 100644 --- a/libgcc/config/t-slibgcc +++ b/libgcc/config/t-slibgcc @@ -26,7 +26,7 @@ SHLIB_MAP = @shlib_map_file@ diff --git a/repos/ports/src/noux-pkg/gcc/patches/no_short_enums.patch b/repos/ports/src/noux-pkg/gcc/patches/no_short_enums.patch index 89324a412..64a7b7e21 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/no_short_enums.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/no_short_enums.patch @@ -8,10 +8,10 @@ Ensure -fno-short-enums as default. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c -index 439a4de..948a369 100644 +index f0fde72..4442c66 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c -@@ -28348,7 +28348,7 @@ arm_promote_function_mode (const_tree type ATTRIBUTE_UNUSED, +@@ -26418,7 +26418,7 @@ arm_promote_function_mode (const_tree type ATTRIBUTE_UNUSED, static bool arm_default_short_enums (void) { diff --git a/repos/ports/src/noux-pkg/gcc/patches/noux_build.patch b/repos/ports/src/noux-pkg/gcc/patches/noux_build.patch index cb44537c9..7a7bc779e 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/noux_build.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/noux_build.patch @@ -1,24 +1,23 @@ -build.patch +noux_build.patch From: Christian Prochaska --- Makefile.def | 1 + - Makefile.tpl | 6 ++++++ + Makefile.tpl | 7 +++++++ fixincludes/Makefile.in | 5 +++-- gcc/Makefile.in | 6 +++--- gcc/config.host | 2 +- gcc/configure.ac | 4 ++-- gcc/gengtype-lex.c | 1 - - libgcc/Makefile.in | 2 +- - 8 files changed, 17 insertions(+), 10 deletions(-) + 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/Makefile.def b/Makefile.def -index 90d9653..642f637 100644 +index ea8453e..201480f 100644 --- a/Makefile.def +++ b/Makefile.def -@@ -263,6 +263,7 @@ flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; }; +@@ -288,6 +288,7 @@ flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= LD_FOR_TARGET ; }; flags_to_pass = { flag= LIPO_FOR_TARGET ; }; flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; }; @@ -27,7 +26,7 @@ index 90d9653..642f637 100644 flags_to_pass = { flag= LIBCXXFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= NM_FOR_TARGET ; }; diff --git a/Makefile.tpl b/Makefile.tpl -index e81c095..92c10b8 100644 +index 6b2eb6a..a89f815 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -156,6 +156,8 @@ BUILD_EXPORTS = \ @@ -39,7 +38,15 @@ index e81c095..92c10b8 100644 GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \ GOC="$(GOC_FOR_BUILD)"; export GOC; \ -@@ -194,6 +196,8 @@ HOST_EXPORTS = \ +@@ -172,6 +174,7 @@ BUILD_EXPORTS = \ + # built for the build system to override those in BASE_FLAGS_TO_PASS. + EXTRA_BUILD_FLAGS = \ + CFLAGS="$(CFLAGS_FOR_BUILD)" \ ++ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)" + + # This is the list of directories to built for the host system. +@@ -194,6 +197,8 @@ HOST_EXPORTS = \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ @@ -48,7 +55,7 @@ index e81c095..92c10b8 100644 GCJ="$(GCJ)"; export GCJ; \ GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ GOC="$(GOC)"; export GOC; \ -@@ -278,6 +282,7 @@ BASE_TARGET_EXPORTS = \ +@@ -281,6 +286,7 @@ BASE_TARGET_EXPORTS = \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ @@ -56,16 +63,16 @@ index e81c095..92c10b8 100644 CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ -@@ -644,6 +649,7 @@ EXTRA_TARGET_FLAGS = \ - 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ +@@ -660,6 +666,7 @@ EXTRA_TARGET_FLAGS = \ + -B$$r/$$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \ + $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ + 'CPPFLAGS=$$(CPPFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ diff --git a/fixincludes/Makefile.in b/fixincludes/Makefile.in -index ce850ff..437d3f4 100644 +index 5dc1b23..57e6afa 100644 --- a/fixincludes/Makefile.in +++ b/fixincludes/Makefile.in @@ -28,6 +28,7 @@ STAMP = echo timestamp > @@ -91,19 +98,19 @@ index ce850ff..437d3f4 100644 $(AF): $(FIXOBJ) $(LIBIBERTY) diff --git a/gcc/Makefile.in b/gcc/Makefile.in -index 2a4475b..98c6235 100644 +index 13d0d1b..88f3ef5 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -748,7 +748,7 @@ BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS) - # Native linker and preprocessor flags. For x-fragment overrides. - BUILD_LDFLAGS=@BUILD_LDFLAGS@ +@@ -779,7 +779,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@ + BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@ + BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG) BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \ - -I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS) + -I$(srcdir)/../include @INCINTL@ $(CPPINC) $(INCLUDES) $(CPPFLAGS_FOR_BUILD) # Actual name to use when installing a native compiler. GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)') -@@ -1019,8 +1019,8 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) +@@ -1031,8 +1031,8 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY) # How to link with both our special library facilities # and the system's installed libraries. @@ -111,27 +118,27 @@ index 2a4475b..98c6235 100644 - $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS) +LIBS = libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \ + $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS) @LIBS@ - BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \ + BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \ $(ZLIB) # Any system libraries needed just for GNAT. diff --git a/gcc/config.host b/gcc/config.host -index 1196ec5..414d5ff 100644 +index 44f2f56..961dc0f 100644 --- a/gcc/config.host +++ b/gcc/config.host -@@ -99,7 +99,7 @@ case ${host} in - esac - - case ${host} in -- arm*-*-linux*) +@@ -107,7 +107,7 @@ case ${host} in + ;; + esac + ;; +- arm*-*-freebsd* | arm*-*-linux*) + arm*-*-*) case ${target} in arm*-*-*) host_extra_gcc_objs="driver-arm.o" diff --git a/gcc/configure.ac b/gcc/configure.ac -index 3ee1d67..004a185 100644 +index 4c65d44..8a9a93c 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac -@@ -1521,8 +1521,8 @@ else +@@ -1688,8 +1688,8 @@ else # system.h from including gmp.h. CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ @@ -143,7 +150,7 @@ index 3ee1d67..004a185 100644 --enable-languages=${enable_languages-all} \ --target=$target_alias --host=$build_alias --build=$build_alias diff --git a/gcc/gengtype-lex.c b/gcc/gengtype-lex.c -index 244dd0d..ee29879 100644 +index dcf6983..7a96f93 100644 --- a/gcc/gengtype-lex.c +++ b/gcc/gengtype-lex.c @@ -1,4 +1,3 @@ @@ -151,16 +158,3 @@ index 244dd0d..ee29879 100644 #line 2 "gengtype-lex.c" #line 4 "gengtype-lex.c" -diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in -index db9b1b2..594fc6d 100644 ---- a/libgcc/Makefile.in -+++ b/libgcc/Makefile.in -@@ -225,7 +225,7 @@ endif - LIBGCC2_DEBUG_CFLAGS = -g - LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ - $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ -- -fbuilding-libgcc -fno-stack-protector \ -+ -fno-stack-protector \ - $(INHIBIT_LIBC_CFLAGS) - - # Additional options to use when compiling libgcc2.a. diff --git a/repos/ports/src/noux-pkg/gcc/patches/prefer_pic.patch b/repos/ports/src/noux-pkg/gcc/patches/prefer_pic.patch index 69c99631d..899ccd8a0 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/prefer_pic.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/prefer_pic.patch @@ -13,7 +13,7 @@ nothing rather than '-prefer-pic'. 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac -index 1de0f6c..3e8b9c5 100644 +index 9e19e99..fdc4622 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -115,16 +115,16 @@ fi diff --git a/repos/ports/src/noux-pkg/gcc/patches/series b/repos/ports/src/noux-pkg/gcc/patches/series index bf1065675..a90be6fa6 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/series +++ b/repos/ports/src/noux-pkg/gcc/patches/series @@ -1,5 +1,3 @@ -riscv_files.patch -riscv.patch config.patch misc.patch no_short_enums.patch @@ -10,6 +8,5 @@ libsupcxx_demangle.patch libgcc_s.patch go_libbacktrace.patch target_libbacktrace.patch -gnu_inline_mismatch.patch noux_build.patch arm.patch diff --git a/repos/ports/src/noux-pkg/gcc/patches/target_libbacktrace.patch b/repos/ports/src/noux-pkg/gcc/patches/target_libbacktrace.patch index af4e47ca1..49bd049e7 100644 --- a/repos/ports/src/noux-pkg/gcc/patches/target_libbacktrace.patch +++ b/repos/ports/src/noux-pkg/gcc/patches/target_libbacktrace.patch @@ -8,10 +8,10 @@ Don't build libbacktrace, which needs a libc. 1 file changed, 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 27ee905..8174460 100644 +index 74bf58a..dbfaf4d 100644 --- a/configure.ac +++ b/configure.ac -@@ -152,7 +152,6 @@ libgcj="target-libffi \ +@@ -151,7 +151,6 @@ libgcj="target-libffi \ # the host libraries and the host tools (which may be a cross compiler) # Note that libiberty is not a target library. target_libraries="target-libgcc \ diff --git a/repos/ports/src/noux-pkg/gcc/target.inc b/repos/ports/src/noux-pkg/gcc/target.inc index 8ba3251f9..abe35b3ff 100644 --- a/repos/ports/src/noux-pkg/gcc/target.inc +++ b/repos/ports/src/noux-pkg/gcc/target.inc @@ -31,7 +31,7 @@ ENV += CFLAGS_FOR_TARGET='-I$(BASE_DIR)/../../tool -DUSE_PT_GNU_EH_FRAME -Dinhib # libsupc++ ENV += CXXFLAGS_FOR_TARGET='-fPIC' -MAKE_ENV += MULTILIB_OPTIONS="m64/m32" MULTILIB_DIRNAMES="64 32" +MAKE_ENV += GENODE="yes" # # We link libraries to the final binaries using the 'LIBS' variable. But diff --git a/repos/ports/src/noux-pkg/gcc_x86/target.mk b/repos/ports/src/noux-pkg/gcc_x86/target.mk index 9cf9019ae..7e40e997b 100644 --- a/repos/ports/src/noux-pkg/gcc_x86/target.mk +++ b/repos/ports/src/noux-pkg/gcc_x86/target.mk @@ -4,4 +4,6 @@ GCC_TARGET = x86_64-pc-elf # cross-compiling does not work yet REQUIRES = x86 +MAKE_ENV += MULTILIB_OPTIONS="m64/m32" MULTILIB_DIRNAMES="64 32" + include $(PRG_DIR)/../gcc/target.inc diff --git a/tool/autopilot.list b/tool/autopilot.list index 62f45ea84..9ad00d15a 100644 --- a/tool/autopilot.list +++ b/tool/autopilot.list @@ -91,3 +91,4 @@ input_filter init nic_dump slab +ada diff --git a/tool/builddir/build.mk b/tool/builddir/build.mk index 50591b357..3a89fede1 100644 --- a/tool/builddir/build.mk +++ b/tool/builddir/build.mk @@ -122,7 +122,7 @@ endif # Empty DST_DIRS is interpreted as a tool-chain agnostic target, e.g., clean. # ifneq ($(DST_DIRS),) -REQUIRED_GCC_VERSION ?= 4.9.2 +REQUIRED_GCC_VERSION ?= 6.3.0 GCC_VERSION := $(filter $(REQUIRED_GCC_VERSION) ,$(shell $(CUSTOM_CXX) --version)) ifneq ($(GCC_VERSION), $(REQUIRED_GCC_VERSION)) $(error "$(CUSTOM_CXX) version $(REQUIRED_GCC_VERSION) is required") diff --git a/tool/tool_chain b/tool/tool_chain index 8374ebf7a..dc5ebed91 100755 --- a/tool/tool_chain +++ b/tool/tool_chain @@ -13,11 +13,14 @@ help: $(ECHO) "and will be created at '$(LOCAL_INSTALL_LOCATION)'." $(ECHO) $(ECHO) "--- available commands ---" - $(ECHO) "x86 - create tool chain for x86" - $(ECHO) "arm - create tool chain for arm" - $(ECHO) "riscv - create tool chain for riscv" - $(ECHO) "clean - clean everything except downloaded archives" - $(ECHO) "cleanall - clean everything including downloaded archives" + $(ECHO) "x86 - create tool chain for x86" + $(ECHO) "arm - create tool chain for arm" + $(ECHO) "riscv - create tool chain for riscv" + $(ECHO) "clean - clean everything except downloaded archives" + $(ECHO) "cleanall - clean everything including downloaded archives" + $(ECHO) + $(ECHO) "--- available command line options ---" + $(ECHO) "MAKE_JOBS=4 - number of parallel make jobs (default: 4)" $(ECHO) # @@ -34,7 +37,7 @@ $(SUPPORTED_PLATFORMS): install # Enable parallel build for 2nd-level $(MAKE) by default # -MAKE_OPT ?= -j4 +MAKE_JOBS ?= 4 # # Determine Genode base directory based on the known location of the @@ -47,7 +50,7 @@ GENODE_DIR ?= $(realpath $(dir $(firstword $(MAKEFILE_LIST)))/..) # Tool versions and install location # -GCC_VERSION = 4.9.2 +GCC_VERSION = 6.3.0 BINUTILS_VERSION = 2.28 INSTALL_LOCATION = /usr/local/genode-gcc @@ -75,13 +78,7 @@ VERBOSE = @ # # Check if 'autoconf' is installed # -AUTOCONF_VERSION_gcc_4.9.2 = 2.64 - -AUTOCONF_VERSION = $(AUTOCONF_VERSION_gcc_$(GCC_VERSION)) - -ifeq ($(AUTOCONF_VERSION),) -$(error Unknown autoconf version for GCC $(GCC_VERSION).) -endif +AUTOCONF_VERSION = 2.64 AUTOCONF_VERSION_STRING = "autoconf (GNU Autoconf) $(AUTOCONF_VERSION)" ifeq ($(shell autoconf -V | grep $(AUTOCONF_VERSION_STRING)),) @@ -143,9 +140,16 @@ EXPAT_OK = $(call check_equal_f,\ $(shell pkg-config --exists expat && echo ok),ok,\ Need to have 'libexpat' installed.) +# +# Check if 'GNAT' is installed +# +HOST_GCC_VERSION := $(shell gcc -dumpversion) +GNAT_OK = $(call check_equal_f,$(shell gnatmake --version | sed -n -e 's/GNATMAKE //p'),$(HOST_GCC_VERSION),\ + Need to have GNAT installed and the GNAT version must match the GCC version (found GCC $(HOST_GCC_VERSION)).) TOOLS_OK = $(AUTOCONF_OK) $(AUTOCONFINST_OK) $(PKG_CONFIG_OK) $(CURSES_OK) \ - $(TEXINFO_OK) $(WGET_OK) $(AUTOGEN_OK) $(GPG_OK) $(EXPAT_OK) + $(TEXINFO_OK) $(WGET_OK) $(AUTOGEN_OK) $(GPG_OK) $(EXPAT_OK) \ + $(GNAT_OK) ifneq ($(strip $(TOOLS_OK)),) $(error Please install missing tools.) @@ -155,6 +159,9 @@ endif # 'configure' parameters for binutils, gcc and gdb # +LOCAL_BOOTSTRAP_INSTALL_LOCATION = $(shell pwd)/build/bootstrap/install +export PATH := $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin:$(PATH) + LOCAL_INSTALL_LOCATION = $(shell pwd)/build/install # @@ -176,6 +183,27 @@ MAKEFLAGS += --quiet export MAKEFLAGS endif +COMMON_BOOTSTRAP_CONFIG = $(CONFIG_QUIET) \ + --prefix=$(LOCAL_BOOTSTRAP_INSTALL_LOCATION) \ + --disable-multilib + +BINUTILS_BOOTSTRAP_CONFIG += $(COMMON_BOOTSTRAP_CONFIG) + +GCC_BOOTSTRAP_CONFIG += $(COMMON_BOOTSTRAP_CONFIG) \ + --enable-languages=c,c++,ada \ + --disable-bootstrap \ + --disable-libatomic \ + --disable-libcilkrts \ + --disable-libgomp \ + --disable-libitm \ + --disable-libmpx \ + --disable-libsanitizer \ + --disable-libquadmath \ + --disable-libssp \ + --with-gmp=$(LOCAL_LIB_INSTALL_LOCATION) \ + --with-mpfr=$(LOCAL_LIB_INSTALL_LOCATION) \ + --with-mpc=$(LOCAL_LIB_INSTALL_LOCATION) + COMMON_CONFIG = $(CONFIG_QUIET) \ --prefix=$(LOCAL_INSTALL_LOCATION) \ --program-prefix=genode-$(PLATFORM)- \ @@ -209,11 +237,13 @@ BINUTILS_CONFIG += $(BINUTILS_CONFIG_$(PLATFORM)) GDB_CONFIG += $(COMMON_CONFIG) --disable-werror GCC_CONFIG += $(COMMON_CONFIG) \ - --enable-languages=c,c++,go \ + --enable-languages=c,c++,go,ada \ --disable-libgo \ + --disable-gotools \ --disable-libssp \ --disable-libquadmath \ --disable-libffi \ + --disable-libada \ --enable-targets=all \ --with-gnu-as \ --with-gnu-ld \ @@ -243,12 +273,14 @@ TARGET_CONFIG_ARGS = $(CONFIG_QUIET) GCC_INSTALL_RULE = install-strip +MAKE_OPT += GENODE="yes" + # # Platform-specific multilib support # -MAKE_OPT_x86 := MULTILIB_OPTIONS="m64/m32" MULTILIB_DIRNAMES="64 32" -MAKE_OPT += $(MAKE_OPT_$(PLATFORM)) +GCC_MAKE_OPT_x86 := MULTILIB_OPTIONS="m64/m32" MULTILIB_DIRNAMES="64 32" +GCC_MAKE_OPT += $(MAKE_OPT) $(GCC_MAKE_OPT_$(PLATFORM)) # # Build rules and dependencies between build steps @@ -257,9 +289,14 @@ MAKE_OPT += $(MAKE_OPT_$(PLATFORM)) # dependencies. All other programs will be generated as side effect. # +BINUTILS_BOOTSTRAP_BINARIES = build/bootstrap/binutils/binutils/objdump +BINUTILS_BOOTSTRAP_INSTALLED_BINARIES = $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/objdump +GCC_BOOTSTRAP_BINARIES = build/bootstrap/gcc/gcc/xg++ +GCC_BOOTSTRAP_INSTALLED_BINARIES = $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/g++ + BINUTILS_BINARIES = build/$(PLATFORM)/binutils/binutils/objdump BINUTILS_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-objdump -GCC_BINARIES = build/$(PLATFORM)/gcc/gcc/g++ +GCC_BINARIES = build/$(PLATFORM)/gcc/gcc/g++-cross GCC_INSTALLED_BINARIES = $(LOCAL_INSTALL_LOCATION)/bin/genode-$(PLATFORM)-g++ GDB_BINARIES = build/$(PLATFORM)/gdb/gdb/gdb @@ -301,20 +338,36 @@ $(BINUTILS_CONTRIB_DIR)/configure: $(ECHO) "$(BRIGHT_COL)preparing binutils...$(DEFAULT_COL)" $(VERBOSE)$(GENODE_DIR)/tool/ports/prepare_port binutils -build/$(PLATFORM)/binutils/Makefile: $(BINUTILS_CONTRIB_DIR)/configure +build/bootstrap/binutils/Makefile: $(BINUTILS_CONTRIB_DIR)/configure + $(ECHO) "$(BRIGHT_COL)configuring bootstrap binutils...$(DEFAULT_COL)" + $(VERBOSE)mkdir -p $(dir $@) + $(VERBOSE)cd $(dir $@); $(BINUTILS_CONTRIB_DIR)/configure $(BINUTILS_BOOTSTRAP_CONFIG) + +$(BINUTILS_BOOTSTRAP_BINARIES): build/bootstrap/binutils/Makefile + $(ECHO) "$(BRIGHT_COL)building bootstrap binutils...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C $(dir $<) -j$(MAKE_JOBS) + +$(BINUTILS_BOOTSTRAP_INSTALLED_BINARIES): $(BINUTILS_BOOTSTRAP_BINARIES) + $(ECHO) "$(BRIGHT_COL)installing bootstrap binutils...$(DEFAULT_COL)" + $(VERBOSE)for i in binutils gas ld intl opcodes; do \ + $(MAKE) -C build/bootstrap/binutils/$$i install-strip; done + $(VERBOSE)$(MAKE) -C build/bootstrap/binutils/libiberty install + +build/$(PLATFORM)/binutils/Makefile: $(BINUTILS_CONTRIB_DIR)/configure \ + $(GCC_BOOTSTRAP_INSTALLED_BINARIES) $(ECHO) "$(BRIGHT_COL)configuring binutils...$(DEFAULT_COL)" $(VERBOSE)mkdir -p $(dir $@) $(VERBOSE)cd $(dir $@); $(BINUTILS_CONTRIB_DIR)/configure $(BINUTILS_CONFIG) $(BINUTILS_BINARIES): build/$(PLATFORM)/binutils/Makefile - $(ECHO) "$(BRIGHT_COL)builing binutils...$(DEFAULT_COL)" - $(VERBOSE)$(MAKE) -C $(dir $<) $(MAKE_OPT) + $(ECHO) "$(BRIGHT_COL)building binutils...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C $(dir $<) $(MAKE_OPT) -j$(MAKE_JOBS) $(BINUTILS_INSTALLED_BINARIES): $(BINUTILS_BINARIES) $(ECHO) "$(BRIGHT_COL)installing binutils...$(DEFAULT_COL)" $(VERBOSE)for i in binutils gas ld intl opcodes; do \ - $(MAKE) -C build/$(PLATFORM)/binutils/$$i install-strip; done - $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/binutils/libiberty install + $(MAKE) -C build/$(PLATFORM)/binutils/$$i install-strip $(MAKE_OPT); done + $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/binutils/libiberty install $(MAKE_OPT) COMMON_LIB_CONFIG = --prefix=$(LOCAL_LIB_INSTALL_LOCATION) \ --disable-shared --enable-static @@ -360,6 +413,25 @@ build/mpc/Makefile: $(VERBOSE)cd $(dir $@); \ $(MPC_CONTRIB_DIR)/configure $(MPC_CONFIG) +build/bootstrap/gcc/Makefile: $(GCC_CONTRIB_DIR)/configure \ + $(BINUTILS_BOOTSTRAP_INSTALLED_BINARIES) \ + $(LOCAL_LIB_INSTALL_LOCATION)/lib/libgmp.a \ + $(LOCAL_LIB_INSTALL_LOCATION)/lib/libmpfr.a \ + $(LOCAL_LIB_INSTALL_LOCATION)/lib/libmpc.a + +build/bootstrap/gcc/Makefile: + $(ECHO) "$(BRIGHT_COL)configuring bootstrap gcc...$(DEFAULT_COL)" + $(VERBOSE)mkdir -p $(dir $@) + $(VERBOSE)cd $(dir $@); $(GCC_CONTRIB_DIR)/configure $(GCC_BOOTSTRAP_CONFIG) + +$(GCC_BOOTSTRAP_BINARIES): build/bootstrap/gcc/Makefile + $(ECHO) "$(BRIGHT_COL)building bootstrap gcc...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C $(dir $<) -j$(MAKE_JOBS) + +$(GCC_BOOTSTRAP_INSTALLED_BINARIES): $(GCC_BOOTSTRAP_BINARIES) + $(ECHO) "$(BRIGHT_COL)installing bootstrap gcc...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C build/bootstrap/gcc $(GCC_INSTALL_RULE) + build/$(PLATFORM)/gcc/Makefile: $(GCC_CONTRIB_DIR)/configure \ $(BINUTILS_INSTALLED_BINARIES) \ $(LOCAL_LIB_INSTALL_LOCATION)/lib/libgmp.a \ @@ -374,16 +446,15 @@ build/$(PLATFORM)/gcc/Makefile: target_configargs="$(TARGET_CONFIG_ARGS)" \ $(GCC_CONTRIB_DIR)/configure $(GCC_CONFIG) -$(GCC_BINARIES): build/$(PLATFORM)/gcc/Makefile \ - $(LIBC) - $(GCC_BINARIES): build/$(PLATFORM)/gcc/Makefile - $(ECHO) "$(BRIGHT_COL)builing gcc...$(DEFAULT_COL)" - $(VERBOSE)$(MAKE) -C $(dir $<) $(MAKE_OPT) + +$(GCC_BINARIES): + $(ECHO) "$(BRIGHT_COL)building gcc...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C $(dir $<) $(GCC_MAKE_OPT) -j$(MAKE_JOBS) $(GCC_INSTALLED_BINARIES): $(GCC_BINARIES) $(ECHO) "$(BRIGHT_COL)installing gcc...$(DEFAULT_COL)" - $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/gcc $(GCC_INSTALL_RULE) + $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/gcc $(GCC_INSTALL_RULE) $(GCC_MAKE_OPT) GDB_CONTRIB_DIR = $(shell $(GENODE_DIR)/tool/ports/current gdb)/src/noux-pkg/gdb @@ -398,12 +469,12 @@ build/$(PLATFORM)/gdb/Makefile: $(GDB_CONTRIB_DIR)/configure $(GDB_CONTRIB_DIR)/configure $(GDB_CONFIG) $(GDB_BINARIES): build/$(PLATFORM)/gdb/Makefile - $(ECHO) "$(BRIGHT_COL)builing gdb...$(DEFAULT_COL)" - $(VERBOSE)$(MAKE) -C $(dir $<) $(MAKE_OPT) + $(ECHO) "$(BRIGHT_COL)building gdb...$(DEFAULT_COL)" + $(VERBOSE)$(MAKE) -C $(dir $<) $(MAKE_OPT) -j$(MAKE_JOBS) $(GDB_INSTALLED_BINARIES): $(GDB_BINARIES) $(ECHO) "$(BRIGHT_COL)installing gdb...$(DEFAULT_COL)" - $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/gdb install MAKEINFO=true + $(VERBOSE)$(MAKE) -C build/$(PLATFORM)/gdb install $(MAKE_OPT) MAKEINFO=true # # Clean rules @@ -421,4 +492,4 @@ cleanall: clean install: build_all $(ECHO) "$(BRIGHT_COL)installing tool chain to '$(INSTALL_LOCATION)'...$(DEFAULT_COL)" $(VERBOSE)sudo cp -a --remove-destination --no-target-directory $(LOCAL_INSTALL_LOCATION) $(INSTALL_LOCATION) - + $(VERBOSE)sudo cp $(LOCAL_BOOTSTRAP_INSTALL_LOCATION)/bin/gnatmake $(INSTALL_LOCATION)/bin/genode-$(PLATFORM)-gnatmake