diff options
-rw-r--r-- | packages/elf2flt/git-6d80ab6c/0000-diagnostics.h.patch | 30 | ||||
-rw-r--r-- | packages/elf2flt/package.desc | 2 | ||||
-rw-r--r-- | packages/newlib/3.0.0.20180831/version.desc | 1 | ||||
-rw-r--r-- | packages/newlib/3.1.0.20181231/version.desc | 1 | ||||
-rw-r--r-- | packages/strace/4.26/0000-mips-o32-fix-build.patch | 91 | ||||
-rw-r--r-- | samples/xtensa-fsf-elf/crosstool.config | 38 | ||||
-rw-r--r-- | samples/xtensa-fsf-elf/reported.by | 4 | ||||
-rw-r--r-- | scripts/build/cc/gcc.sh | 33 | ||||
-rw-r--r-- | scripts/build/libc/glibc.sh | 7 | ||||
-rw-r--r-- | scripts/build/libc/mingw-w64.sh | 4 | ||||
-rw-r--r-- | scripts/build/libc/moxiebox.sh | 5 | ||||
-rw-r--r-- | scripts/crosstool-NG.sh | 8 | ||||
-rw-r--r-- | scripts/functions | 16 |
13 files changed, 179 insertions, 61 deletions
diff --git a/packages/elf2flt/git-6d80ab6c/0000-diagnostics.h.patch b/packages/elf2flt/git-6d80ab6c/0000-diagnostics.h.patch deleted file mode 100644 index b74a0ac..0000000 --- a/packages/elf2flt/git-6d80ab6c/0000-diagnostics.h.patch +++ /dev/null @@ -1,30 +0,0 @@ -commit 2c8ab83ec84662f4916b5237da3e4330956a32eb -Author: Alexey Neyman <stilor@att.net> -Date: Sat Sep 29 13:12:08 2018 -0700 - - Create symlink to <bfd/diagnostics.h> in bfd-headers - - Included by <bfd/bfd.h>. - - Signed-off-by: Alexey Neyman <stilor@att.net> - -diff --git a/Makefile.in b/Makefile.in -index cfad06c..8162cba 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -123,11 +123,14 @@ sinclude .deps - $(CC) -MM $(CPPFLAGS) $(srcdir)/*.c > .deps - - -+# Not all versions of binutils have all these headers, some may end up -+# as dangling symlinks - bfd-headers/.stamp: - rm -rf bfd-headers - mkdir bfd-headers - ln -sf $(BFD_INCLUDE_DIR)/bfd.h bfd-headers/bfd.h -- for f in ansidecl filenames hashtab libiberty symcat; do \ -+ ln -sf $(BFD_INCLUDE_DIR)/diagnostics.h bfd-headers/diagnostics.h -+ for f in ansidecl filenames hashtab libiberty symcat diagnostics; do \ - ln -sf $(BINUTILS_INCLUDE_DIR)/$$f.h bfd-headers/$$f.h || exit 1; \ - done - ln -sf $(BINUTILS_INCLUDE_DIR)/elf bfd-headers/elf diff --git a/packages/elf2flt/package.desc b/packages/elf2flt/package.desc index c46788c..a6b8093 100644 --- a/packages/elf2flt/package.desc +++ b/packages/elf2flt/package.desc @@ -1,2 +1,2 @@ repository='git https://github.com/uclinux-dev/elf2flt.git' -repository_cset='6d80ab6c93409e796f85da404bde84b841231531' +repository_cset='7e33f28df198c46764021ed14408bd262751e148' diff --git a/packages/newlib/3.0.0.20180831/version.desc b/packages/newlib/3.0.0.20180831/version.desc index 76f1447..e69de29 100644 --- a/packages/newlib/3.0.0.20180831/version.desc +++ b/packages/newlib/3.0.0.20180831/version.desc @@ -1 +0,0 @@ -experimental='yes' diff --git a/packages/newlib/3.1.0.20181231/version.desc b/packages/newlib/3.1.0.20181231/version.desc index 76f1447..e69de29 100644 --- a/packages/newlib/3.1.0.20181231/version.desc +++ b/packages/newlib/3.1.0.20181231/version.desc @@ -1 +0,0 @@ -experimental='yes' diff --git a/packages/strace/4.26/0000-mips-o32-fix-build.patch b/packages/strace/4.26/0000-mips-o32-fix-build.patch new file mode 100644 index 0000000..d3c828e --- /dev/null +++ b/packages/strace/4.26/0000-mips-o32-fix-build.patch @@ -0,0 +1,91 @@ +commit 2c8b6de913973274e877639658e9e7273a012adb +Author: Dmitry V. Levin <ldv@altlinux.org> +Date: Tue Jan 8 19:23:44 2019 +0000 + + mips o32: fix build + + Commit 917c2ccf3a67 "Refactor stack pointers" moved mips_REG_* macros + from linux/mips/arch_regs.h to linux/mips/arch_regs.c because these + macros are no longer used outside syscall.c or files included by + syscall.c, but this caused a build regression on mips o32 because + decode_syscall_subcall() uses mips_REG_SP prior to its definition. + + * syscall.c (decode_syscall_subcall): Move ... + * linux/mips/get_syscall_args.c: ... here. + * NEWS: Mention this fix. + + Reported-by: Baruch Siach <baruch@tkos.co.il> + Fixes: v4.26~61 "Refactor stack pointers" + +diff --git a/linux/mips/get_syscall_args.c b/linux/mips/get_syscall_args.c +index 387aa852..e2889f98 100644 +--- a/linux/mips/get_syscall_args.c ++++ b/linux/mips/get_syscall_args.c +@@ -37,3 +37,29 @@ arch_get_syscall_args(struct tcb *tcp) + #endif + return 1; + } ++ ++#ifdef SYS_syscall_subcall ++static void ++decode_syscall_subcall(struct tcb *tcp) ++{ ++ if (!scno_is_valid(tcp->u_arg[0])) ++ return; ++ tcp->scno = tcp->u_arg[0]; ++ tcp->qual_flg = qual_flags(tcp->scno); ++ tcp->s_ent = &sysent[tcp->scno]; ++ memmove(&tcp->u_arg[0], &tcp->u_arg[1], ++ sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0])); ++ /* ++ * Fetching the last arg of 7-arg syscalls (fadvise64_64 ++ * and sync_file_range) requires additional code, ++ * see linux/mips/get_syscall_args.c ++ */ ++ if (tcp->s_ent->nargs == MAX_ARGS) { ++ if (umoven(tcp, ++ mips_REG_SP + MAX_ARGS * sizeof(tcp->u_arg[0]), ++ sizeof(tcp->u_arg[0]), ++ &tcp->u_arg[MAX_ARGS - 1]) < 0) ++ tcp->u_arg[MAX_ARGS - 1] = 0; ++ } ++} ++#endif /* SYS_syscall_subcall */ +diff --git a/syscall.c b/syscall.c +index d78f51dd..51fcc721 100644 +--- a/syscall.c ++++ b/syscall.c +@@ -349,31 +349,8 @@ decode_ipc_subcall(struct tcb *tcp) + #endif /* SYS_ipc_subcall */ + + #ifdef SYS_syscall_subcall +-static void +-decode_syscall_subcall(struct tcb *tcp) +-{ +- if (!scno_is_valid(tcp->u_arg[0])) +- return; +- tcp->scno = tcp->u_arg[0]; +- tcp->qual_flg = qual_flags(tcp->scno); +- tcp->s_ent = &sysent[tcp->scno]; +- memmove(&tcp->u_arg[0], &tcp->u_arg[1], +- sizeof(tcp->u_arg) - sizeof(tcp->u_arg[0])); +-# ifdef LINUX_MIPSO32 +- /* +- * Fetching the last arg of 7-arg syscalls (fadvise64_64 +- * and sync_file_range) requires additional code, +- * see linux/mips/get_syscall_args.c +- */ +- if (tcp->s_ent->nargs == MAX_ARGS) { +- if (umoven(tcp, +- mips_REG_SP + MAX_ARGS * sizeof(tcp->u_arg[0]), +- sizeof(tcp->u_arg[0]), +- &tcp->u_arg[MAX_ARGS - 1]) < 0) +- tcp->u_arg[MAX_ARGS - 1] = 0; +- } +-# endif /* LINUX_MIPSO32 */ +-} ++/* The implementation is architecture specific. */ ++static void decode_syscall_subcall(struct tcb *); + #endif /* SYS_syscall_subcall */ + + static void diff --git a/samples/xtensa-fsf-elf/crosstool.config b/samples/xtensa-fsf-elf/crosstool.config new file mode 100644 index 0000000..8a65f79 --- /dev/null +++ b/samples/xtensa-fsf-elf/crosstool.config @@ -0,0 +1,38 @@ +CT_CONFIG_VERSION="2" +CT_EXPERIMENTAL=y +CT_ALLOW_BUILD_AS_ROOT=y +CT_ALLOW_BUILD_AS_ROOT_SURE=y +CT_DEBUG_CT=y +CT_DEBUG_CT_SAVE_STEPS=y +CT_ARCH_XTENSA=y +CT_MULTILIB=y +CT_TARGET_CFLAGS="-mlongcalls" +CT_TARGET_VENDOR="fsf" +CT_BINUTILS_SRC_DEVEL=y +CT_BINUTILS_DEVEL_URL="https://github.com/espressif/binutils-gdb.git" +CT_BINUTILS_DEVEL_BRANCH="esp32-2018r1_binutils-2_30" +CT_BINUTILS_V_2_30=y +CT_NEWLIB_SRC_DEVEL=y +CT_NEWLIB_DEVEL_URL="https://github.com/espressif/newlib-esp32.git" +CT_NEWLIB_DEVEL_BRANCH="esp32-2018r1_newlib-2_2_0" +CT_LIBC_NEWLIB_TARGET_CFLAGS="-DSIGNAL_PROVIDED -DABORT_PROVIDED -DMALLOC_PROVIDED" +CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y +CT_GCC_SRC_DEVEL=y +CT_GCC_DEVEL_VCS_git=y +CT_GCC_DEVEL_URL="https://github.com/espressif/gcc.git" +CT_GCC_DEVEL_BRANCH="esp32-2018r1_gcc-8_2_0" +CT_CC_GCC_ENABLE_CXX_FLAGS="-fno-rtti -ffunction-sections" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-threads=posix" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="--disable-libstdcxx-verbose --enable-threads=posix --enable-gcov-custom-rtio" +# CT_CC_GCC_STATIC_LIBSTDCXX is not set +# CT_CC_CXA_ATEXIT is not set +# CT_CC_GCC_LDBL_128 is not set +CT_CC_LANG_CXX=y +CT_DEBUG_GDB=y +CT_GDB_SRC_DEVEL=y +CT_GDB_DEVEL_URL="https://github.com/espressif/binutils-gdb.git" +CT_GDB_DEVEL_BRANCH="esp32-2018r1_gdb-8_1" +CT_GDB_V_8_1=y +CT_ISL_V_0_19=y +CT_COMP_TOOLS_AUTOCONF=y +CT_COMP_TOOLS_AUTOMAKE=y diff --git a/samples/xtensa-fsf-elf/reported.by b/samples/xtensa-fsf-elf/reported.by new file mode 100644 index 0000000..a51872d --- /dev/null +++ b/samples/xtensa-fsf-elf/reported.by @@ -0,0 +1,4 @@ +reporter_name="Anton Maklakov" +reporter_url="" +reporter_comment="Modified from the configuration reported in #985 to not include +overlays." diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index 038db38..9ba5982 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -293,8 +293,7 @@ do_gcc_core_backend() { local prefix local complibs local lang_list - local cflags - local cflags_for_build + local cflags cflags_for_build cflags_for_target local ldflags local build_step local log_txt @@ -352,12 +351,6 @@ do_gcc_core_backend() { ;; esac - case "${build_step}" in - core2|gcc_build) - CT_DoLog DEBUG "Copying headers to install area of core C compiler" - CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include" - esac - for tmp in ARCH ABI CPU TUNE FPU FLOAT ENDIAN; do eval tmp="\${CT_ARCH_WITH_${tmp}}" if [ -n "${tmp}" ]; then @@ -551,21 +544,35 @@ do_gcc_core_backend() { # We may need to modify host/build CFLAGS separately below cflags_for_build="${CT_CFLAGS_FOR_BUILD}" + cflags="${CT_CFLAGS_FOR_HOST}" + cflags_for_target="${CT_TARGET_CFLAGS}" # Clang's default bracket-depth is 256, and building GCC # requires somewhere between 257 and 512. if [ "${host}" = "${CT_BUILD}" ]; then if ${CT_BUILD}-gcc --version 2>&1 | grep clang; then - cflags="$cflags "-fbracket-depth=512 - cflags_for_build="$cflags_for_build "-fbracket-depth=512 + cflags="$cflags -fbracket-depth=512" + cflags_for_build="$cflags_for_build -fbracket-depth=512" fi else # FIXME we currently don't support clang as host compiler, only as build if ${CT_BUILD}-gcc --version 2>&1 | grep clang; then - cflags_for_build="$cflags_for_build "-fbracket-depth=512 + cflags_for_build="$cflags_for_build -fbracket-depth=512" fi fi + # For non-sysrooted toolchain, GCC doesn't search except at the installation + # prefix; in core-1/2 stage we use a temporary installation prefix - but + # we may have installed something into the final prefix. This is less than ideal: + # in the installation prefix GCC also handles subdirectories for multilibs + # (e.g. first trying ${prefix}/include/${arch-triplet}) but + # we can only pass the top level directory, so non-sysrooted build with libc + # selection that doesn't merge the headers (i.e. musl, uClibc-ng) may not + # work. Better suggestions welcome. + if [ "${CT_USE_SYSROOT}" != "y" ]; then + cflags_for_target="${cflags_for_target} -idirafter ${CT_HEADERS_DIR}" + fi + # Use --with-local-prefix so older gccs don't look in /usr/local (http://gcc.gnu.org/PR10532). # Pass only user-specified CFLAGS/LDFLAGS in CFLAGS_FOR_TARGET/LDFLAGS_FOR_TARGET: during # the build of, for example, libatomic, GCC tried to compile multiple variants for runtime @@ -578,8 +585,8 @@ do_gcc_core_backend() { CXXFLAGS="${cflags}" \ CXXFLAGS_FOR_BUILD="${cflags_for_build}" \ LDFLAGS="${core_LDFLAGS[*]}" \ - CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ - CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \ + CFLAGS_FOR_TARGET="${cflags_for_target}" \ + CXXFLAGS_FOR_TARGET="${cflags_for_target}" \ LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \ ${CONFIG_SHELL} \ "${CT_SRC_DIR}/gcc/configure" \ diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index 312c88f..aebc898 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -182,9 +182,6 @@ glibc_backend_once() touch config.cache - # Hide host C++ binary from configure - echo "ac_cv_prog_ac_ct_CXX=${CT_TARGET}-g++" >>config.cache - # Until it became explicitly controllable with --enable-stack-protector=..., # configure detected GCC support for -fstack-protector{,-strong} and # tried to enable it in some parts of glibc - which then failed to build. @@ -282,6 +279,10 @@ glibc_backend_once() "${CT_GLIBC_EXTRA_CONFIG_ARRAY[@]}" # build hacks + + # Mask C++ compiler. Glibc 2.29+ attempts to build some tests using gcc++, but + # we haven't built libstdc++ yet. Should really implement #808 after 1.24.0... + extra_make_args+=( CXX= ) case "${CT_ARCH},${CT_ARCH_CPU}" in powerpc,8??) # http://sourceware.org/ml/crossgcc/2008-10/msg00068.html diff --git a/scripts/build/libc/mingw-w64.sh b/scripts/build/libc/mingw-w64.sh index 6e87073..a5b89d1 100644 --- a/scripts/build/libc/mingw-w64.sh +++ b/scripts/build/libc/mingw-w64.sh @@ -220,7 +220,3 @@ mingw_w64_main() CT_EndStep fi } - -mingw_w64_post_cc() { - : -} diff --git a/scripts/build/libc/moxiebox.sh b/scripts/build/libc/moxiebox.sh index f542187..25ef6e7 100644 --- a/scripts/build/libc/moxiebox.sh +++ b/scripts/build/libc/moxiebox.sh @@ -22,7 +22,10 @@ moxiebox_start_files() moxiebox_main() { newlib_main +} +moxiebox_post_cc() +{ CT_DoStep INFO "Installing moxiebox runtime and VM" CT_mkdir_pushd "${CT_BUILD_DIR}/build-libc-moxiebox" @@ -45,7 +48,7 @@ moxiebox_main() CT_DoExecLog CFG ./autogen.sh - # moxiebox build script create symlinks from the installation location to the build + # moxiebox build script creates symlinks from the installation location to the build # directory for the moxiebox library. This seems backwards. Instead, pass the search # as part of the MOX_GCC definition. # moxiebox also depends on the tools being named moxiebox-{gcc,as,ar}. However, failure diff --git a/scripts/crosstool-NG.sh b/scripts/crosstool-NG.sh index b15a488..2e60f20 100644 --- a/scripts/crosstool-NG.sh +++ b/scripts/crosstool-NG.sh @@ -102,6 +102,14 @@ for d in \ esac done +n_open_files=$(ulimit -n) +if [ "${n_open_files}" -lt 2048 ]; then + # Newer ld seems to keep a lot of open file descriptors, hitting the default limit + # (1024) for example during uClibc-ng link. + CT_DoLog WARN "Number of open files ${n_open_files} may not be sufficient to build the toolchain; increasing to 2048" + ulimit -n 2048 +fi + # Where will we work? CT_WORK_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}" CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" diff --git a/scripts/functions b/scripts/functions index f71ea04..e577b9d 100644 --- a/scripts/functions +++ b/scripts/functions @@ -283,13 +283,15 @@ CT_DoLog() { _prog_bar[3]='|' indent=$((2*CT_STEP_COUNT)) while read line; do - case "${CT_LOG_SEE_TOOLS_WARN},${line}" in - y,*"warning:"*) cur_L=WARN; cur_l=${CT_LOG_LEVEL_WARN};; - y,*"WARNING:"*) cur_L=WARN; cur_l=${CT_LOG_LEVEL_WARN};; - *"error:"*) cur_L=ERROR; cur_l=${CT_LOG_LEVEL_ERROR};; - *"Error:"*) cur_L=ERROR; cur_l=${CT_LOG_LEVEL_ERROR};; - *"make["*"]: ***"*) cur_L=ERROR; cur_l=${CT_LOG_LEVEL_ERROR};; - *) cur_L="${LEVEL}"; cur_l="${level}";; + case "${CT_LOG_SEE_TOOLS_WARN:-n},${line}" in + y,*[[:space:]][Ww]arning:*|y,[Ww]arning:*|y,*[[:space:]]WARNING:*|y,WARNING:*) + cur_L=WARN; cur_l=${CT_LOG_LEVEL_WARN};; + *[[:space:]][Ee]rror:*|[yn],[Ee]rror:*) + cur_L=ERROR; cur_l=${CT_LOG_LEVEL_ERROR};; + *"make["*"]: ***"*) + cur_L=ERROR; cur_l=${CT_LOG_LEVEL_ERROR};; + *) + cur_L="${LEVEL}"; cur_l="${level}";; esac # There will always be a log file (stdout, fd #1), be it /dev/null if [ -n "${CT_LOG_ENABLED}" ]; then |