Update to GCC 6.3.0 + fix for PR80180 New upstream release, fiddle patches to apply on it. Also apply upstream fix for rdseed/rdrand intrinsics code generation (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80180). Change-Id: Ib4dec62b4c7a537220e8755a2bc9a6a11181e000
diff --git a/patches/gcc-patch.txt b/patches/gcc-patch.txt index e3598a5..eb4deda 100644 --- a/patches/gcc-patch.txt +++ b/patches/gcc-patch.txt
@@ -1,67 +1,271 @@ ---- gcc-4.8.2.orig/gcc/config/arm/t-arm-elf 2013-01-10 20:38:27.000000000 +0000 -+++ gcc-4.8.2/gcc/config/arm/t-arm-elf 2013-12-28 22:54:59.000000000 +0000 -@@ -25,22 +25,36 @@ - #MULTILIB_DIRNAMES += fa526 fa626 fa606te fa626te fmp626 fa726te - #MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=fa526 *mthumb*/*mcpu=fa626 +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/config.sub gcc-6.3.0/config.sub +--- gcc-6.3.0-fsf/config.sub 2017-03-30 16:18:19.117238667 -0700 ++++ gcc-6.3.0/config.sub 2017-03-30 16:23:21.688074247 -0700 +@@ -1531,6 +1531,9 @@ case $os in + ;; + -nacl*) + ;; ++ -fuchsia*) ++ os=-fuchsia ++ ;; + -none) + ;; + *) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/collect2.c gcc-6.3.0/gcc/collect2.c +--- gcc-6.3.0-fsf/gcc/collect2.c 2017-03-30 16:18:18.781239956 -0700 ++++ gcc-6.3.0/gcc/collect2.c 2017-03-30 16:23:21.692074232 -0700 +@@ -1067,8 +1067,10 @@ main (int argc, char **argv) + if (signal (SIGQUIT, SIG_IGN) != SIG_IGN) + signal (SIGQUIT, handler); + #endif ++#ifdef SIGINT + if (signal (SIGINT, SIG_IGN) != SIG_IGN) + signal (SIGINT, handler); ++#endif + #ifdef SIGALRM + if (signal (SIGALRM, SIG_IGN) != SIG_IGN) + signal (SIGALRM, handler); +@@ -1077,8 +1079,10 @@ main (int argc, char **argv) + if (signal (SIGHUP, SIG_IGN) != SIG_IGN) + signal (SIGHUP, handler); + #endif ++#ifdef SIGSEGV + if (signal (SIGSEGV, SIG_IGN) != SIG_IGN) + signal (SIGSEGV, handler); ++#endif + #ifdef SIGBUS + if (signal (SIGBUS, SIG_IGN) != SIG_IGN) + signal (SIGBUS, handler); +@@ -2307,7 +2311,9 @@ static void + scan_prog_file (const char *prog_name, scanpass which_pass, + scanfilter filter) + { ++#ifdef SIGINT + void (*int_handler) (int); ++#endif + #ifdef SIGQUIT + void (*quit_handler) (int); + #endif +@@ -2373,7 +2379,9 @@ scan_prog_file (const char *prog_name, s + fatal_error (input_location, errmsg); + } -+# build a bunch of specialized versions of libcc for particular cores -+#MULTILIB_OPTIONS += mcpu=arm7tdmi/mcpu=arm9tdmi/mcpu=arm920t/mcpu=arm926ej-s/mcpu=arm1136j-s/mcpu=arm1136jf-s/mcpu=arm1176jz-s/mcpu=arm1176jzf-s/mcpu=xscale/mcpu=mpcore/mcpu=cortex-a8/cortex-a9/march=armv4t/march=armv5t/march=armv5te/march=armv6/march=armv6j/march=armv6k/march=armv6z/march=armv6zk/march=armv7-a/march=armv7-r -+#MULTILIB_DIRNAMES += arm7tdmi arm9tdmi arm920t arm926ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s xscale mpcore cortex-a8 cortex-a9 cortex-m3 armv4t armv5t armv5te armv6 armv6j armv6k armv6z armv6zk armv7-a armv7-r -+#MULTILIB_OPTIONS += mcpu=arm7tdmi/mcpu=arm9tdmi/mcpu=arm920t/mcpu=arm926ej-s/mcpu=arm1136j-s/mcpu=arm1136jf-s/mcpu=arm1176jz-s/mcpu=arm1176jzf-s/mcpu=xscale/mcpu=mpcore/mcpu=cortex-a8/mcpu=cortex-a9 -+#MULTILIB_DIRNAMES += arm7tdmi arm9tdmi arm920t arm926ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s xscale mpcore cortex-a8 cortex-a9 ++#ifdef SIGINT + int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); ++#endif + #ifdef SIGQUIT + quit_handler = (void (*) (int)) signal (SIGQUIT, SIG_IGN); + #endif +@@ -2499,7 +2507,9 @@ scan_prog_file (const char *prog_name, s + + do_wait (nm_file_name, pex); + ++#ifdef SIGINT + signal (SIGINT, int_handler); ++#endif + #ifdef SIGQUIT + signal (SIGQUIT, quit_handler); + #endif +@@ -2571,7 +2581,9 @@ scan_libraries (const char *prog_name) + fatal_error (input_location, errmsg); + } + ++#ifdef SIGINT + int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); ++#endif + #ifdef SIGQUIT + quit_handler = (void (*) (int)) signal (SIGQUIT, SIG_IGN); + #endif +@@ -2619,7 +2631,9 @@ scan_libraries (const char *prog_name) + + do_wait (ldd_file_name, pex); + ++#ifdef SIGINT + signal (SIGINT, int_handler); ++#endif + #ifdef SIGQUIT + signal (SIGQUIT, quit_handler); + #endif +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/config/fuchsia.h gcc-6.3.0/gcc/config/fuchsia.h +--- gcc-6.3.0-fsf/gcc/config/fuchsia.h 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-6.3.0/gcc/config/fuchsia.h 2017-03-30 16:23:21.692074232 -0700 +@@ -0,0 +1,105 @@ ++/* Base configuration file for all Fuchsia targets. ++ Copyright (C) 2016 Free Software Foundation, Inc. + -+MULTILIB_OPTIONS += march=armv7 -+MULTILIB_DIRNAMES += thumb2 -+MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7* -+MULTILIB_MATCHES += march?armv7=march?armv7-a -+MULTILIB_MATCHES += march?armv7=march?armv7-r -+MULTILIB_MATCHES += march?armv7=march?armv7-m -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a15 -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9 -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-m4 -+MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++This file is part of GCC. + -+#MULTILIB_OPTIONS += mfpu=vfp -+#MULTILIB_DIRNAMES += vfp -+#MULTILIB_MATCHES += mfpu?vfp=mcpu?arm1136jf-s -+#MULTILIB_MATCHES += mfpu?vfp=mcpu?arm1136jzf-s --#MULTILIB_OPTIONS += march=armv7 --#MULTILIB_DIRNAMES += thumb2 --#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7* --#MULTILIB_MATCHES += march?armv7=march?armv7-a --#MULTILIB_MATCHES += march?armv7=march?armv7-r --#MULTILIB_MATCHES += march?armv7=march?armv7-m --#MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 --#MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 --#MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++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/>. */ ++ ++/* Common Fuchsia configuration. */ ++ ++/* In case we need to know. */ ++#define USING_CONFIG_FUCHSIA 1 ++ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "%{!shared: crt1%O%s} crtbegin%O%s" ++ ++#undef ENDFILE_SPEC ++#define ENDFILE_SPEC "crtend%O%s" ++ ++/* When neither pic nor pie has been specified, use PIE by default. */ ++#undef CC1_SPEC ++#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ ++ "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE}}}}}}}}" ++ ++#undef LIB_SPEC ++#define LIB_SPEC "--start-group" \ ++ " -lmxio -lmagenta -lc -llaunchpad" \ ++ "%{!static: -lgcc_s}" \ ++ " --end-group" ++ ++#undef LINK_SPEC ++#define LINK_SPEC "-z max-page-size=4096" \ ++ " -z combreloc" \ ++ " -z relro" \ ++ " -z now" \ ++ " -z text" \ ++ "%{!hash-style: --hash-style=gnu}" \ ++ "%{!no-eh-frame-hdr: --eh-frame-hdr}" \ ++ "%{!no-build-id: --build-id}" \ ++ "%{shared: -shared}" \ ++ "%{!shared:%{!static:%{!dynamic-linker: -dynamic-linker=ld.so.1}}}" ++ ++/* We are using MUSL as our libc. */ ++#undef OPTION_MUSL ++#define OPTION_MUSL 1 ++ ++#ifndef TARGET_SUB_OS_CPP_BUILTINS ++#define TARGET_SUB_OS_CPP_BUILTINS() ++#endif ++ ++#undef TARGET_OS_CPP_BUILTINS ++#define TARGET_OS_CPP_BUILTINS() \ ++ do \ ++ { \ ++ builtin_define ("__Fuchsia__"); \ ++ TARGET_SUB_OS_CPP_BUILTINS(); \ ++ } \ ++ while (false) ++ ++/* /dev/null is unwritable, at the moment. Use this as a workaround. */ ++#undef HOST_BIT_BUCKET ++#define HOST_BIT_BUCKET "/tmp/.null" ++ ++/* Inode numbers are not available to us. */ ++#define HOST_LACKS_INODE_NUMBERS ++ ++/* In fact we have ftw.h, but the function itself is unimplemented. */ ++#undef HAVE_FTW_H ++ ++/* Functions that are implemented as stubs in libc. */ ++#undef HAVE_GETRLIMIT ++#undef HAVE_GETRUSAGE ++#undef HAVE_REALPATH ++#undef HAVE_SETRLIMIT ++#undef HAVE_TIMES ++ ++/* No ioctl() support. */ ++#undef TIOCGWINSZ ++ ++/* No signal() support. */ ++#undef SIGABRT ++#undef SIGALRM ++#undef SIGBUS ++#undef SIGCHLD ++#undef SIGFPE ++#undef SIGHUP ++#undef SIGILL ++#undef SIGINT ++#undef SIGIOT ++#undef SIGPIPE ++#undef SIGQUIT ++#undef SIGSEGV ++#undef SIGTERM ++ +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/config/i386/i386.c gcc-6.3.0/gcc/config/i386/i386.c +--- gcc-6.3.0-fsf/gcc/config/i386/i386.c 2017-03-30 16:18:17.521244794 -0700 ++++ gcc-6.3.0/gcc/config/i386/i386.c 2017-03-30 16:23:21.708074170 -0700 +@@ -41322,9 +41322,6 @@ ix86_expand_builtin (tree exp, rtx targe + mode0 = DImode; - # Not quite true. We can support hard-vfp calling in Thumb2, but how do we - # express that here? Also, we really need architecture v5e or later - # (mcrr etc). -+#MULTILIB_OPTIONS += mfloat-abi=hard -+#MULTILIB_DIRNAMES += fpu -+#MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* --MULTILIB_OPTIONS += mfloat-abi=hard --MULTILIB_DIRNAMES += fpu --MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* - #MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard* - #MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard* + rdrand_step: +- op0 = gen_reg_rtx (mode0); +- emit_insn (GEN_FCN (icode) (op0)); +- + arg0 = CALL_EXPR_ARG (exp, 0); + op1 = expand_normal (arg0); + if (!address_operand (op1, VOIDmode)) +@@ -41332,6 +41329,10 @@ rdrand_step: + op1 = convert_memory_address (Pmode, op1); + op1 = copy_addr_to_reg (op1); + } ++ ++ op0 = gen_reg_rtx (mode0); ++ emit_insn (GEN_FCN (icode) (op0)); ++ + emit_move_insn (gen_rtx_MEM (mode0, op1), op0); -@@ -56,8 +70,8 @@ - # MULTILIB_DIRNAMES += fpu soft - # MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard* - # -+MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork -+MULTILIB_DIRNAMES += normal interwork --# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork --# MULTILIB_DIRNAMES += normal interwork - # - # MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore - # MULTILIB_DIRNAMES += elf under ---- gcc-4.8.2.orig/gcc/config/i386/t-x86_64-elf 1970-01-01 01:00:00.000000000 +0100 -+++ gcc-4.8.2/gcc/config/i386/t-x86_64-elf 2013-12-29 12:47:35.000000000 +0000 + op1 = gen_reg_rtx (SImode); +@@ -41340,8 +41341,20 @@ rdrand_step: + /* Emit SImode conditional move. */ + if (mode0 == HImode) + { +- op2 = gen_reg_rtx (SImode); +- emit_insn (gen_zero_extendhisi2 (op2, op0)); ++ if (TARGET_ZERO_EXTEND_WITH_AND ++ && optimize_function_for_speed_p (cfun)) ++ { ++ op2 = force_reg (SImode, const0_rtx); ++ ++ emit_insn (gen_movstricthi ++ (gen_lowpart (HImode, op2), op0)); ++ } ++ else ++ { ++ op2 = gen_reg_rtx (SImode); ++ ++ emit_insn (gen_zero_extendhisi2 (op2, op0)); ++ } + } + else if (mode0 == SImode) + op2 = op0; +@@ -41373,9 +41386,6 @@ rdrand_step: + mode0 = DImode; + + rdseed_step: +- op0 = gen_reg_rtx (mode0); +- emit_insn (GEN_FCN (icode) (op0)); +- + arg0 = CALL_EXPR_ARG (exp, 0); + op1 = expand_normal (arg0); + if (!address_operand (op1, VOIDmode)) +@@ -41383,6 +41393,10 @@ rdseed_step: + op1 = convert_memory_address (Pmode, op1); + op1 = copy_addr_to_reg (op1); + } ++ ++ op0 = gen_reg_rtx (mode0); ++ emit_insn (GEN_FCN (icode) (op0)); ++ + emit_move_insn (gen_rtx_MEM (mode0, op1), op0); + + op2 = gen_reg_rtx (QImode); +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/config/i386/t-x86_64-elf gcc-6.3.0/gcc/config/i386/t-x86_64-elf +--- gcc-6.3.0-fsf/gcc/config/i386/t-x86_64-elf 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-6.3.0/gcc/config/i386/t-x86_64-elf 2017-03-30 16:23:21.712074155 -0700 @@ -0,0 +1,8 @@ +# Add redzoneless libgcc + @@ -72,19 +276,416 @@ +MULTILIB_OPTIONS += m32 +MULTILIB_DIRNAMES += 32 \ No newline at end of file -2016-09-27 Roland McGrath <roland@hack.frob.com> - - PR other/77609 - * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for - any section for which we don't know a specific type it should have, - regardless of name. Previously this was done only for the exact - names ".init_array", ".fini_array", and ".preinit_array". - -diff --git a/gcc/varasm.c b/gcc/varasm.c -index b0f2af0..dcc9976 100644 ---- a/gcc/varasm.c -+++ b/gcc/varasm.c -@@ -6193,15 +6193,20 @@ default_section_type_flags (tree decl, const char *name, int reloc) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/config.gcc gcc-6.3.0/gcc/config.gcc +--- gcc-6.3.0-fsf/gcc/config.gcc 2017-03-30 16:18:18.853239681 -0700 ++++ gcc-6.3.0/gcc/config.gcc 2017-03-31 18:27:18.774027678 -0700 +@@ -710,6 +710,9 @@ case ${target} in + esac + use_gcc_stdint=wrap + ;; ++*-*-fuchsia*) ++ native_system_header_dir=/include ++ ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) + extra_options="$extra_options gnu-user.opt" + gas=yes +@@ -912,7 +915,7 @@ case ${target} in + esac + + case ${target} in +-aarch64*-*-elf | aarch64*-*-rtems*) ++aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h" + tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h" + tmake_file="${tmake_file} aarch64/t-aarch64" +@@ -920,6 +923,9 @@ aarch64*-*-elf | aarch64*-*-rtems*) + aarch64-*-elf*) + use_gcc_stdint=wrap + ;; ++ aarch64-*-fuchsia*) ++ tm_file="${tm_file} fuchsia.h" ++ ;; + aarch64-*-rtems*) + tm_file="${tm_file} rtems.h aarch64/rtems.h" + ;; +@@ -1429,6 +1435,7 @@ i[34567]86-*-elf*) + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h" + ;; + x86_64-*-elf*) ++ tmake_file="${tmake_file} i386/t-x86_64-elf" + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h" + ;; + x86_64-*-rtems*) +@@ -1802,6 +1809,10 @@ i[34567]86-*-interix[3-9]*) + tm_file="${tm_file} dbxcoff.h" + fi + ;; ++x86_64-*-fuchsia*) ++ tmake_file="${tmake_file} i386/t-x86_64-elf" ++ tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h" ++ ;; + ia64*-*-elf*) + tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h" + tmake_file="ia64/t-ia64" +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/config.host gcc-6.3.0/gcc/config.host +--- gcc-6.3.0-fsf/gcc/config.host 2017-03-30 16:18:17.569244610 -0700 ++++ gcc-6.3.0/gcc/config.host 2017-03-31 18:27:55.833878360 -0700 +@@ -99,7 +99,7 @@ case ${host} in + esac + + case ${host} in +- aarch64*-*-linux*) ++ aarch64*-*-linux* | aarch64*-*-fuchsia*) + case ${target} in + aarch64*-*-*) + host_extra_gcc_objs="driver-aarch64.o" +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/configure gcc-6.3.0/gcc/configure +--- gcc-6.3.0-fsf/gcc/configure 2017-03-30 16:18:18.769240003 -0700 ++++ gcc-6.3.0/gcc/configure 2017-03-31 06:43:15.446595972 -0700 +@@ -13387,6 +13387,10 @@ freebsd* | dragonfly*) + fi + ;; + ++fuchsia*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + gnu*) + lt_cv_deplibs_check_method=pass_all + ;; +@@ -17645,6 +17649,15 @@ freebsd* | dragonfly*) + esac + ;; + ++fuchsia*) ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os ld.so.1" ++ library_names_spec='$libname$shared_ext' ++ soname_spec='$libname$shared_ext' ++ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' ++ ;; ++ + gnu*) + version_type=linux + need_lib_prefix=no +@@ -18248,6 +18261,11 @@ fi + + ;; + ++ fuchsia*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" + if test "x$ac_cv_func_shl_load" = x""yes; then : +@@ -18460,7 +18478,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18463 "configure" ++#line 18481 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -18566,7 +18584,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 18569 "configure" ++#line 18587 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -20470,6 +20488,10 @@ $as_echo_n "checking for $compiler optio + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; ++ fuchsia* ) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-static' ++ ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) +@@ -21305,6 +21327,15 @@ freebsd* | dragonfly*) + esac + ;; + ++fuchsia*) ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os ld.so.1" ++ library_names_spec='$libname$shared_ext' ++ soname_spec='$libname$shared_ext' ++ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' ++ ;; ++ + gnu*) + version_type=linux + need_lib_prefix=no +@@ -29486,14 +29517,19 @@ fi + + + # Check if -fno-PIE works. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fno-PIE option" >&5 ++case $host_os in ++ fuchsia*) ++ # Fuchsia requires PIE binaries ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fno-PIE option" >&5 + $as_echo_n "checking for -fno-PIE option... " >&6; } + if test "${gcc_cv_c_no_fpie+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + saved_CXXFLAGS="$CXXFLAGS" +- CXXFLAGS="$CXXFLAGS -fno-PIE" +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ CXXFLAGS="$CXXFLAGS -fno-PIE" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + int main(void) {return 0;} + _ACEOF +@@ -29503,24 +29539,31 @@ else + gcc_cv_c_no_fpie=no + fi + rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +- CXXFLAGS="$saved_CXXFLAGS" ++ CXXFLAGS="$saved_CXXFLAGS" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_c_no_fpie" >&5 + $as_echo "$gcc_cv_c_no_fpie" >&6; } +-if test "$gcc_cv_c_no_fpie" = "yes"; then +- NO_PIE_CFLAGS="-fno-PIE" +-fi ++ if test "$gcc_cv_c_no_fpie" = "yes"; then ++ NO_PIE_CFLAGS="-fno-PIE" ++ fi ++ ;; ++esac + + + # Check if -no-pie works. +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -no-pie option" >&5 ++case $host_os in ++ fuchsia*) ++ # Fuchsia requires PIE binaries ++ ;; ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -no-pie option" >&5 + $as_echo_n "checking for -no-pie option... " >&6; } + if test "${gcc_cv_no_pie+set}" = set; then : + $as_echo_n "(cached) " >&6 + else + saved_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -no-pie" +- cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++ LDFLAGS="$LDFLAGS -no-pie" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + int main(void) {return 0;} + _ACEOF +@@ -29531,13 +29574,15 @@ else + fi + rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +- LDFLAGS="$saved_LDFLAGS" ++ LDFLAGS="$saved_LDFLAGS" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_no_pie" >&5 + $as_echo "$gcc_cv_no_pie" >&6; } +-if test "$gcc_cv_no_pie" = "yes"; then +- NO_PIE_FLAG="-no-pie" +-fi ++ if test "$gcc_cv_no_pie" = "yes"; then ++ NO_PIE_FLAG="-no-pie" ++ fi ++ ;; ++esac + + + # Check linker supports '-z bndplt' +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/configure.ac gcc-6.3.0/gcc/configure.ac +--- gcc-6.3.0-fsf/gcc/configure.ac 2017-03-30 16:18:18.865239634 -0700 ++++ gcc-6.3.0/gcc/configure.ac 2017-03-30 16:23:21.720074124 -0700 +@@ -6160,31 +6160,45 @@ fi + AC_SUBST([enable_default_pie]) + + # Check if -fno-PIE works. +-AC_CACHE_CHECK([for -fno-PIE option], +- [gcc_cv_c_no_fpie], +- [saved_CXXFLAGS="$CXXFLAGS" +- CXXFLAGS="$CXXFLAGS -fno-PIE" +- AC_COMPILE_IFELSE([int main(void) {return 0;}], +- [gcc_cv_c_no_fpie=yes], +- [gcc_cv_c_no_fpie=no]) +- CXXFLAGS="$saved_CXXFLAGS"]) +-if test "$gcc_cv_c_no_fpie" = "yes"; then +- NO_PIE_CFLAGS="-fno-PIE" +-fi ++case $host_os in ++ fuchsia*) ++ # Fuchsia requires PIE binaries ++ ;; ++ *) ++ AC_CACHE_CHECK([for -fno-PIE option], ++ [gcc_cv_c_no_fpie], ++ [saved_CXXFLAGS="$CXXFLAGS" ++ CXXFLAGS="$CXXFLAGS -fno-PIE" ++ AC_COMPILE_IFELSE([int main(void) {return 0;}], ++ [gcc_cv_c_no_fpie=yes], ++ [gcc_cv_c_no_fpie=no]) ++ CXXFLAGS="$saved_CXXFLAGS"]) ++ if test "$gcc_cv_c_no_fpie" = "yes"; then ++ NO_PIE_CFLAGS="-fno-PIE" ++ fi ++ ;; ++esac + AC_SUBST([NO_PIE_CFLAGS]) + + # Check if -no-pie works. +-AC_CACHE_CHECK([for -no-pie option], +- [gcc_cv_no_pie], +- [saved_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -no-pie" +- AC_LINK_IFELSE([int main(void) {return 0;}], +- [gcc_cv_no_pie=yes], +- [gcc_cv_no_pie=no]) +- LDFLAGS="$saved_LDFLAGS"]) +-if test "$gcc_cv_no_pie" = "yes"; then +- NO_PIE_FLAG="-no-pie" +-fi ++case $host_os in ++ fuchsia*) ++ # Fuchsia requires PIE binaries ++ ;; ++ *) ++ AC_CACHE_CHECK([for -no-pie option], ++ [gcc_cv_no_pie], ++ [saved_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -no-pie" ++ AC_LINK_IFELSE([int main(void) {return 0;}], ++ [gcc_cv_no_pie=yes], ++ [gcc_cv_no_pie=no]) ++ LDFLAGS="$saved_LDFLAGS"]) ++ if test "$gcc_cv_no_pie" = "yes"; then ++ NO_PIE_FLAG="-no-pie" ++ fi ++ ;; ++esac + AC_SUBST([NO_PIE_FLAG]) + + # Check linker supports '-z bndplt' +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/gcc.c gcc-6.3.0/gcc/gcc.c +--- gcc-6.3.0-fsf/gcc/gcc.c 2017-03-30 16:18:18.805239865 -0700 ++++ gcc-6.3.0/gcc/gcc.c 2017-03-30 16:23:21.724074108 -0700 +@@ -7255,14 +7255,18 @@ driver::global_initializations () + if (atexit (delete_temp_files) != 0) + fatal_error (input_location, "atexit failed"); + ++#ifdef SIGINT + if (signal (SIGINT, SIG_IGN) != SIG_IGN) + signal (SIGINT, fatal_signal); ++#endif + #ifdef SIGHUP + if (signal (SIGHUP, SIG_IGN) != SIG_IGN) + signal (SIGHUP, fatal_signal); + #endif ++#ifdef SIGTERM + if (signal (SIGTERM, SIG_IGN) != SIG_IGN) + signal (SIGTERM, fatal_signal); ++#endif + #ifdef SIGPIPE + if (signal (SIGPIPE, SIG_IGN) != SIG_IGN) + signal (SIGPIPE, fatal_signal); +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/gcov-tool.c gcc-6.3.0/gcc/gcov-tool.c +--- gcc-6.3.0-fsf/gcc/gcov-tool.c 2017-03-30 16:18:18.793239910 -0700 ++++ gcc-6.3.0/gcc/gcov-tool.c 2017-03-30 16:23:21.724074108 -0700 +@@ -51,7 +51,8 @@ extern void gcov_set_verbose (void); + /* Set to verbose output mode. */ + static bool verbose; + +-#if HAVE_FTW_H ++/* Fuchsia: remove when nftw has been implemented. */ ++#if HAVE_FTW_H && !defined(__Fuchsia__) + + /* Remove file NAME if it has a gcda suffix. */ + +@@ -80,7 +81,8 @@ unlink_gcda_file (const char *name, + static int + unlink_profile_dir (const char *path ATTRIBUTE_UNUSED) + { +-#if HAVE_FTW_H ++/* Fuchsia: remove when nftw has been implemented. */ ++#if HAVE_FTW_H && !defined(__Fuchsia__) + return nftw(path, unlink_gcda_file, 64, FTW_DEPTH | FTW_PHYS); + #else + return -1; +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/ggc-common.c gcc-6.3.0/gcc/ggc-common.c +--- gcc-6.3.0-fsf/gcc/ggc-common.c 2017-03-30 16:18:17.565244626 -0700 ++++ gcc-6.3.0/gcc/ggc-common.c 2017-03-30 16:23:21.724074108 -0700 +@@ -728,7 +728,8 @@ mmap_gt_pch_use_address (void *base, siz + static double + ggc_rlimit_bound (double limit) + { +-#if defined(HAVE_GETRLIMIT) ++/* Fuchsia: getrlimit is not fully implemented yet. */ ++#if !defined(__Fuchsia__) && defined(HAVE_GETRLIMIT) + struct rlimit rlim; + # if defined (RLIMIT_AS) + /* RLIMIT_AS is what POSIX says is the limit on mmap. Presumably +@@ -752,7 +753,7 @@ ggc_rlimit_bound (double limit) + && rlim.rlim_cur >= 8 * 1024 * 1024) + limit = rlim.rlim_cur; + # endif /* RLIMIT_AS or RLIMIT_DATA */ +-#endif /* HAVE_GETRLIMIT */ ++#endif /* !Fuchsia && HAVE_GETRLIMIT */ + + return limit; + } +@@ -790,7 +791,8 @@ ggc_min_heapsize_heuristic (void) + bound of 128M (when RAM >= 1GB). */ + phys_kbytes /= 8; + +-#if defined(HAVE_GETRLIMIT) && defined (RLIMIT_RSS) ++/* Fuchsia: getrlimit is not fully implemented yet. */ ++#if !defined(__Fuchsia__) && defined(HAVE_GETRLIMIT) && defined (RLIMIT_RSS) + /* Try not to overrun the RSS limit while doing garbage collection. + The RSS limit is only advisory, so no margin is subtracted. */ + { +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/opts.c gcc-6.3.0/gcc/opts.c +--- gcc-6.3.0-fsf/gcc/opts.c 2017-03-30 16:18:18.789239926 -0700 ++++ gcc-6.3.0/gcc/opts.c 2017-03-30 16:23:21.724074108 -0700 +@@ -2386,7 +2386,8 @@ setup_core_dumping (diagnostic_context * + #ifdef SIGABRT + signal (SIGABRT, SIG_DFL); + #endif +-#if defined(HAVE_SETRLIMIT) ++/* Fuchsia: remove when getrlimit/setrlimit have been implemented. */ ++#if !defined(__Fuchsia__) && defined(HAVE_SETRLIMIT) + { + struct rlimit rlim; + if (getrlimit (RLIMIT_CORE, &rlim) != 0) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/timevar.c gcc-6.3.0/gcc/timevar.c +--- gcc-6.3.0-fsf/gcc/timevar.c 2017-03-30 16:18:18.869239620 -0700 ++++ gcc-6.3.0/gcc/timevar.c 2017-03-30 16:23:21.724074108 -0700 +@@ -69,7 +69,8 @@ struct tms + # define HAVE_SYS_TIME + # define HAVE_WALL_TIME + #else +-#ifdef HAVE_GETRUSAGE ++/* Fuchsia: remove when getrusage has been implemented. */ ++#if !defined(__Fuchsia__) && defined(HAVE_GETRUSAGE) + # if defined HAVE_DECL_GETRUSAGE && !HAVE_DECL_GETRUSAGE + extern int getrusage (int, struct rusage *); + # endif +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/gcc/varasm.c gcc-6.3.0/gcc/varasm.c +--- gcc-6.3.0-fsf/gcc/varasm.c 2017-03-30 16:18:17.549244687 -0700 ++++ gcc-6.3.0/gcc/varasm.c 2017-03-30 16:23:21.724074108 -0700 +@@ -6193,15 +6193,20 @@ default_section_type_flags (tree decl, c || strncmp (name, ".gnu.linkonce.tb.", 17) == 0) flags |= SECTION_TLS | SECTION_BSS; @@ -114,1578 +715,499 @@ flags |= SECTION_NOTYPE; return flags; -diff -dcprN gcc-6.2.0/config.sub gcc-6.2.0-fuchsia/config.sub -*** gcc-6.2.0/config.sub 2015-12-31 13:13:28.000000000 -0800 ---- gcc-6.2.0-fuchsia/config.sub 2016-10-24 17:07:48.244523443 -0700 -*************** case $os in -*** 1531,1536 **** ---- 1531,1539 ---- - ;; - -nacl*) - ;; -+ -fuchsia*) -+ os=-fuchsia -+ ;; - -none) - ;; - *) -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/collect2.c gcc-6.2.0/gcc/collect2.c -*** gcc-6.2.0-fsf/gcc/collect2.c 2016-11-23 09:11:05.324188090 -0800 ---- gcc-6.2.0/gcc/collect2.c 2016-11-30 13:50:14.585469484 -0800 -*************** main (int argc, char **argv) -*** 1067,1074 **** ---- 1067,1076 ---- - if (signal (SIGQUIT, SIG_IGN) != SIG_IGN) - signal (SIGQUIT, handler); - #endif -+ #ifdef SIGINT - if (signal (SIGINT, SIG_IGN) != SIG_IGN) - signal (SIGINT, handler); -+ #endif - #ifdef SIGALRM - if (signal (SIGALRM, SIG_IGN) != SIG_IGN) - signal (SIGALRM, handler); -*************** main (int argc, char **argv) -*** 1077,1084 **** ---- 1079,1088 ---- - if (signal (SIGHUP, SIG_IGN) != SIG_IGN) - signal (SIGHUP, handler); - #endif -+ #ifdef SIGSEGV - if (signal (SIGSEGV, SIG_IGN) != SIG_IGN) - signal (SIGSEGV, handler); -+ #endif - #ifdef SIGBUS - if (signal (SIGBUS, SIG_IGN) != SIG_IGN) - signal (SIGBUS, handler); -*************** static void -*** 2307,2313 **** ---- 2311,2319 ---- - scan_prog_file (const char *prog_name, scanpass which_pass, - scanfilter filter) - { -+ #ifdef SIGINT - void (*int_handler) (int); -+ #endif - #ifdef SIGQUIT - void (*quit_handler) (int); - #endif -*************** scan_prog_file (const char *prog_name, s -*** 2373,2379 **** ---- 2379,2387 ---- - fatal_error (input_location, errmsg); - } - -+ #ifdef SIGINT - int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); -+ #endif - #ifdef SIGQUIT - quit_handler = (void (*) (int)) signal (SIGQUIT, SIG_IGN); - #endif -*************** scan_prog_file (const char *prog_name, s -*** 2499,2505 **** ---- 2507,2515 ---- - - do_wait (nm_file_name, pex); - -+ #ifdef SIGINT - signal (SIGINT, int_handler); -+ #endif - #ifdef SIGQUIT - signal (SIGQUIT, quit_handler); - #endif -*************** scan_libraries (const char *prog_name) -*** 2571,2577 **** ---- 2581,2589 ---- - fatal_error (input_location, errmsg); - } - -+ #ifdef SIGINT - int_handler = (void (*) (int)) signal (SIGINT, SIG_IGN); -+ #endif - #ifdef SIGQUIT - quit_handler = (void (*) (int)) signal (SIGQUIT, SIG_IGN); - #endif -*************** scan_libraries (const char *prog_name) -*** 2619,2625 **** ---- 2631,2639 ---- - - do_wait (ldd_file_name, pex); - -+ #ifdef SIGINT - signal (SIGINT, int_handler); -+ #endif - #ifdef SIGQUIT - signal (SIGQUIT, quit_handler); - #endif -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/config/arm/fuchsia-elf.h gcc-6.2.0/gcc/config/arm/fuchsia-elf.h -*** gcc-6.2.0-fsf/gcc/config/arm/fuchsia-elf.h 1969-12-31 16:00:00.000000000 -0800 ---- gcc-6.2.0/gcc/config/arm/fuchsia-elf.h 2016-11-21 19:10:12.382326720 -0800 -*************** -*** 0 **** ---- 1,31 ---- -+ /* Configuration file for ARM Fuchsia ELF targets. -+ Copyright (C) 2016 Free Software Foundation, Inc. -+ Contributed by Google. -+ -+ 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/>. */ -+ -+ /* Use the BPABI builtins and the generic OS builtins. */ -+ #undef TARGET_SUB_OS_CPP_BUILTINS -+ #define TARGET_SUB_OS_CPP_BUILTINS() \ -+ TARGET_BPABI_CPP_BUILTINS() -+ -+ /* Use the AAPCS ABI by default. */ -+ #undef ARM_DEFAULT_ABI -+ #define ARM_DEFAULT_ABI ARM_ABI_AAPCS -+ -+ #define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect) -+ -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/config/fuchsia.h gcc-6.2.0/gcc/config/fuchsia.h -*** gcc-6.2.0-fsf/gcc/config/fuchsia.h 1969-12-31 16:00:00.000000000 -0800 ---- gcc-6.2.0/gcc/config/fuchsia.h 2017-01-10 09:07:12.943847114 -0800 -*************** -*** 0 **** ---- 1,105 ---- -+ /* Base configuration file for all Fuchsia targets. -+ Copyright (C) 2016 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/>. */ -+ -+ /* Common Fuchsia configuration. */ -+ -+ /* In case we need to know. */ -+ #define USING_CONFIG_FUCHSIA 1 -+ -+ #undef STARTFILE_SPEC -+ #define STARTFILE_SPEC "%{!shared: crt1%O%s} crtbegin%O%s" -+ -+ #undef ENDFILE_SPEC -+ #define ENDFILE_SPEC "crtend%O%s" -+ -+ /* When neither pic nor pie has been specified, use PIE by default. */ -+ #undef CC1_SPEC -+ #define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ -+ "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE}}}}}}}}" -+ -+ #undef LIB_SPEC -+ #define LIB_SPEC "--start-group" \ -+ " -lmxio -lmagenta -lc -llaunchpad" \ -+ "%{!static: -lgcc_s}" \ -+ " --end-group" -+ -+ #undef LINK_SPEC -+ #define LINK_SPEC "-z max-page-size=4096" \ -+ " -z combreloc" \ -+ " -z relro" \ -+ " -z now" \ -+ " -z text" \ -+ "%{!hash-style: --hash-style=gnu}" \ -+ "%{!no-eh-frame-hdr: --eh-frame-hdr}" \ -+ "%{!no-build-id: --build-id}" \ -+ "%{shared: -shared}" \ -+ "%{!shared:%{!static:%{!dynamic-linker: -dynamic-linker=ld.so.1}}}" -+ -+ /* We are using MUSL as our libc. */ -+ #undef OPTION_MUSL -+ #define OPTION_MUSL 1 -+ -+ #ifndef TARGET_SUB_OS_CPP_BUILTINS -+ #define TARGET_SUB_OS_CPP_BUILTINS() -+ #endif -+ -+ #undef TARGET_OS_CPP_BUILTINS -+ #define TARGET_OS_CPP_BUILTINS() \ -+ do \ -+ { \ -+ builtin_define ("__Fuchsia__"); \ -+ TARGET_SUB_OS_CPP_BUILTINS(); \ -+ } \ -+ while (false) -+ -+ /* /dev/null is unwritable, at the moment. Use this as a workaround. */ -+ #undef HOST_BIT_BUCKET -+ #define HOST_BIT_BUCKET "/tmp/.null" -+ -+ /* Inode numbers are not available to us. */ -+ #define HOST_LACKS_INODE_NUMBERS -+ -+ /* In fact we have ftw.h, but the function itself is unimplemented. */ -+ #undef HAVE_FTW_H -+ -+ /* Functions that are implemented as stubs in libc. */ -+ #undef HAVE_GETRLIMIT -+ #undef HAVE_GETRUSAGE -+ #undef HAVE_REALPATH -+ #undef HAVE_SETRLIMIT -+ #undef HAVE_TIMES -+ -+ /* No ioctl() support. */ -+ #undef TIOCGWINSZ -+ -+ /* No signal() support. */ -+ #undef SIGABRT -+ #undef SIGALRM -+ #undef SIGBUS -+ #undef SIGCHLD -+ #undef SIGFPE -+ #undef SIGHUP -+ #undef SIGILL -+ #undef SIGINT -+ #undef SIGIOT -+ #undef SIGPIPE -+ #undef SIGQUIT -+ #undef SIGSEGV -+ #undef SIGTERM -+ -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/config.gcc gcc-6.2.0/gcc/config.gcc -*** gcc-6.2.0-fsf/gcc/config.gcc 2016-11-23 09:11:05.804186203 -0800 ---- gcc-6.2.0/gcc/config.gcc 2016-11-21 16:05:55.706051533 -0800 -*************** case ${target} in -*** 710,715 **** ---- 710,718 ---- - esac - use_gcc_stdint=wrap - ;; -+ *-*-fuchsia*) -+ native_system_header_dir=/include -+ ;; - *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) - extra_options="$extra_options gnu-user.opt" - gas=yes -*************** case ${target} in -*** 907,913 **** - esac - - case ${target} in -! aarch64*-*-elf | aarch64*-*-rtems*) - tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h" - tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h" - tmake_file="${tmake_file} aarch64/t-aarch64" ---- 910,916 ---- - esac - - case ${target} in -! aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*) - tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h" - tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h" - tmake_file="${tmake_file} aarch64/t-aarch64" -*************** aarch64*-*-elf | aarch64*-*-rtems*) -*** 915,920 **** ---- 918,926 ---- - aarch64-*-elf*) - use_gcc_stdint=wrap - ;; -+ aarch64-*-fuchsia*) -+ tm_file="${tm_file} fuchsia.h" -+ ;; - aarch64-*-rtems*) - tm_file="${tm_file} rtems.h aarch64/rtems.h" - ;; -*************** arm*-*-uclinux*eabi*) # ARM ucLinux -*** 1097,1103 **** - # The EABI requires the use of __cxa_atexit. - default_use_cxa_atexit=yes - ;; -! arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) - case ${target} in - arm*eb-*-eabi*) - tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ---- 1103,1109 ---- - # The EABI requires the use of __cxa_atexit. - default_use_cxa_atexit=yes - ;; -! arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*) - case ${target} in - arm*eb-*-eabi*) - tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" -*************** arm*-*-eabi* | arm*-*-symbianelf* | arm* -*** 1111,1116 **** ---- 1117,1126 ---- - tmake_file="${tmake_file} arm/t-bpabi" - use_gcc_stdint=wrap - ;; -+ arm*-*-fuchsia*) -+ tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h" -+ tmake_file="${tmake_file} arm/t-bpabi" -+ ;; - arm*-*-rtems*) - tm_file="${tm_file} rtems.h arm/rtems.h newlib-stdint.h" - tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems" -*************** i[34567]86-*-elf*) -*** 1418,1423 **** ---- 1428,1434 ---- - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h" - ;; - x86_64-*-elf*) -+ tmake_file="${tmake_file} i386/t-x86_64-elf" - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h" - ;; - x86_64-*-rtems*) -*************** i[34567]86-*-interix[3-9]*) -*** 1791,1796 **** ---- 1802,1811 ---- - tm_file="${tm_file} dbxcoff.h" - fi - ;; -+ x86_64-*-fuchsia*) -+ tmake_file="${tmake_file} i386/t-x86_64-elf" -+ tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h" -+ ;; - ia64*-*-elf*) - tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h" - tmake_file="ia64/t-ia64" -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/config.host gcc-6.2.0/gcc/config.host -*** gcc-6.2.0-fsf/gcc/config.host 2016-11-23 09:10:49.908248680 -0800 ---- gcc-6.2.0/gcc/config.host 2016-11-21 18:57:29.749649894 -0800 -*************** case ${host} in -*** 99,105 **** - esac - - case ${host} in -! aarch64*-*-linux*) - case ${target} in - aarch64*-*-*) - host_extra_gcc_objs="driver-aarch64.o" ---- 99,105 ---- - esac - - case ${host} in -! aarch64*-*-linux* | aarch64*-*-fuchsia*) - case ${target} in - aarch64*-*-*) - host_extra_gcc_objs="driver-aarch64.o" -*************** case ${host} in -*** 107,113 **** - ;; - esac - ;; -! arm*-*-freebsd* | arm*-*-linux*) - case ${target} in - arm*-*-*) - host_extra_gcc_objs="driver-arm.o" ---- 107,113 ---- - ;; - esac - ;; -! arm*-*-freebsd* | arm*-*-linux* | arm*-*-fuchsia*) - case ${target} in - arm*-*-*) - host_extra_gcc_objs="driver-arm.o" -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/configure gcc-6.2.0/gcc/configure -*** gcc-6.2.0-fsf/gcc/configure 2016-11-23 09:11:05.200188577 -0800 ---- gcc-6.2.0/gcc/configure 2016-11-30 12:34:30.868394376 -0800 -*************** if test -z "$aix_libpath"; then aix_libp -*** 16703,16708 **** ---- 16703,16715 ---- - hardcode_shlibpath_var=no - ;; - -+ fuchsia*) -+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -*************** freebsd* | dragonfly*) -*** 17638,17643 **** ---- 17645,17656 ---- - esac - ;; - -+ fuchsia*) -+ library_names_spec='${libname}${shared_ext}' -+ need_lib_prefix=no -+ need_version=no -+ ;; -+ - gnu*) - version_type=linux - need_lib_prefix=no -*************** fi -*** 18241,18246 **** ---- 18254,18264 ---- - - ;; - -+ fuchsia*) -+ lt_cv_dlopen="dlopen" -+ lt_cv_dlopen_libs= -+ ;; -+ - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" - if test "x$ac_cv_func_shl_load" = x""yes; then : -*************** else -*** 18453,18459 **** - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 18456 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H ---- 18471,18477 ---- - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 18474 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -*************** else -*** 18559,18565 **** - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 18562 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H ---- 18577,18583 ---- - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 18580 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -*************** freebsd* | dragonfly*) -*** 21298,21303 **** ---- 21316,21327 ---- - esac - ;; - -+ fuchsia*) -+ library_names_spec='${libname}${shared_ext}' -+ need_lib_prefix=no -+ need_version=no -+ ;; -+ - gnu*) - version_type=linux - need_lib_prefix=no -*************** fi -*** 29375,29388 **** - - - # Check if -fno-PIE works. -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fno-PIE option" >&5 - $as_echo_n "checking for -fno-PIE option... " >&6; } - if test "${gcc_cv_c_no_fpie+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - saved_CXXFLAGS="$CXXFLAGS" -! CXXFLAGS="$CXXFLAGS -fno-PIE" -! cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - int main(void) {return 0;} - _ACEOF ---- 29399,29417 ---- - - - # Check if -fno-PIE works. -! case $host_os in -! fuchsia*) -! # Fuchsia requires PIE binaries -! ;; -! *) -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fno-PIE option" >&5 - $as_echo_n "checking for -fno-PIE option... " >&6; } - if test "${gcc_cv_c_no_fpie+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - saved_CXXFLAGS="$CXXFLAGS" -! CXXFLAGS="$CXXFLAGS -fno-PIE" -! cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - int main(void) {return 0;} - _ACEOF -*************** else -*** 29392,29415 **** - gcc_cv_c_no_fpie=no - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -! CXXFLAGS="$saved_CXXFLAGS" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_c_no_fpie" >&5 - $as_echo "$gcc_cv_c_no_fpie" >&6; } -! if test "$gcc_cv_c_no_fpie" = "yes"; then -! NO_PIE_CFLAGS="-fno-PIE" -! fi - - - # Check if -no-pie works. -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -no-pie option" >&5 - $as_echo_n "checking for -no-pie option... " >&6; } - if test "${gcc_cv_no_pie+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - saved_LDFLAGS="$LDFLAGS" -! LDFLAGS="$LDFLAGS -no-pie" -! cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - int main(void) {return 0;} - _ACEOF ---- 29421,29451 ---- - gcc_cv_c_no_fpie=no - fi - rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -! CXXFLAGS="$saved_CXXFLAGS" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_c_no_fpie" >&5 - $as_echo "$gcc_cv_c_no_fpie" >&6; } -! if test "$gcc_cv_c_no_fpie" = "yes"; then -! NO_PIE_CFLAGS="-fno-PIE" -! fi -! ;; -! esac - - - # Check if -no-pie works. -! case $host_os in -! fuchsia*) -! # Fuchsia requires PIE binaries -! ;; -! *) -! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -no-pie option" >&5 - $as_echo_n "checking for -no-pie option... " >&6; } - if test "${gcc_cv_no_pie+set}" = set; then : - $as_echo_n "(cached) " >&6 - else - saved_LDFLAGS="$LDFLAGS" -! LDFLAGS="$LDFLAGS -no-pie" -! cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - int main(void) {return 0;} - _ACEOF -*************** else -*** 29420,29432 **** - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -! LDFLAGS="$saved_LDFLAGS" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_no_pie" >&5 - $as_echo "$gcc_cv_no_pie" >&6; } -! if test "$gcc_cv_no_pie" = "yes"; then -! NO_PIE_FLAG="-no-pie" -! fi - - - # Check linker supports '-z bndplt' ---- 29456,29470 ---- - fi - rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -! LDFLAGS="$saved_LDFLAGS" - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_no_pie" >&5 - $as_echo "$gcc_cv_no_pie" >&6; } -! if test "$gcc_cv_no_pie" = "yes"; then -! NO_PIE_FLAG="-no-pie" -! fi -! ;; -! esac - - - # Check linker supports '-z bndplt' -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/configure.ac gcc-6.2.0/gcc/configure.ac -*** gcc-6.2.0-fsf/gcc/configure.ac 2016-11-23 09:11:05.952185621 -0800 ---- gcc-6.2.0/gcc/configure.ac 2016-11-30 12:31:48.821079660 -0800 -*************** fi -*** 6086,6116 **** - AC_SUBST([enable_default_pie]) - - # Check if -fno-PIE works. -! AC_CACHE_CHECK([for -fno-PIE option], -! [gcc_cv_c_no_fpie], -! [saved_CXXFLAGS="$CXXFLAGS" -! CXXFLAGS="$CXXFLAGS -fno-PIE" -! AC_COMPILE_IFELSE([int main(void) {return 0;}], -! [gcc_cv_c_no_fpie=yes], -! [gcc_cv_c_no_fpie=no]) -! CXXFLAGS="$saved_CXXFLAGS"]) -! if test "$gcc_cv_c_no_fpie" = "yes"; then -! NO_PIE_CFLAGS="-fno-PIE" -! fi - AC_SUBST([NO_PIE_CFLAGS]) - - # Check if -no-pie works. -! AC_CACHE_CHECK([for -no-pie option], -! [gcc_cv_no_pie], -! [saved_LDFLAGS="$LDFLAGS" -! LDFLAGS="$LDFLAGS -no-pie" -! AC_LINK_IFELSE([int main(void) {return 0;}], -! [gcc_cv_no_pie=yes], -! [gcc_cv_no_pie=no]) -! LDFLAGS="$saved_LDFLAGS"]) -! if test "$gcc_cv_no_pie" = "yes"; then -! NO_PIE_FLAG="-no-pie" -! fi - AC_SUBST([NO_PIE_FLAG]) - - # Check linker supports '-z bndplt' ---- 6086,6130 ---- - AC_SUBST([enable_default_pie]) - - # Check if -fno-PIE works. -! case $host_os in -! fuchsia*) -! # Fuchsia requires PIE binaries -! ;; -! *) -! AC_CACHE_CHECK([for -fno-PIE option], -! [gcc_cv_c_no_fpie], -! [saved_CXXFLAGS="$CXXFLAGS" -! CXXFLAGS="$CXXFLAGS -fno-PIE" -! AC_COMPILE_IFELSE([int main(void) {return 0;}], -! [gcc_cv_c_no_fpie=yes], -! [gcc_cv_c_no_fpie=no]) -! CXXFLAGS="$saved_CXXFLAGS"]) -! if test "$gcc_cv_c_no_fpie" = "yes"; then -! NO_PIE_CFLAGS="-fno-PIE" -! fi -! ;; -! esac - AC_SUBST([NO_PIE_CFLAGS]) - - # Check if -no-pie works. -! case $host_os in -! fuchsia*) -! # Fuchsia requires PIE binaries -! ;; -! *) -! AC_CACHE_CHECK([for -no-pie option], -! [gcc_cv_no_pie], -! [saved_LDFLAGS="$LDFLAGS" -! LDFLAGS="$LDFLAGS -no-pie" -! AC_LINK_IFELSE([int main(void) {return 0;}], -! [gcc_cv_no_pie=yes], -! [gcc_cv_no_pie=no]) -! LDFLAGS="$saved_LDFLAGS"]) -! if test "$gcc_cv_no_pie" = "yes"; then -! NO_PIE_FLAG="-no-pie" -! fi -! ;; -! esac - AC_SUBST([NO_PIE_FLAG]) - - # Check linker supports '-z bndplt' -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/gcc.c gcc-6.2.0/gcc/gcc.c -*** gcc-6.2.0-fsf/gcc/gcc.c 2016-11-23 09:11:05.472187508 -0800 ---- gcc-6.2.0/gcc/gcc.c 2016-11-30 13:46:59.158288993 -0800 -*************** driver::global_initializations () -*** 7255,7268 **** ---- 7255,7272 ---- - if (atexit (delete_temp_files) != 0) - fatal_error (input_location, "atexit failed"); - -+ #ifdef SIGINT - if (signal (SIGINT, SIG_IGN) != SIG_IGN) - signal (SIGINT, fatal_signal); -+ #endif - #ifdef SIGHUP - if (signal (SIGHUP, SIG_IGN) != SIG_IGN) - signal (SIGHUP, fatal_signal); - #endif -+ #ifdef SIGTERM - if (signal (SIGTERM, SIG_IGN) != SIG_IGN) - signal (SIGTERM, fatal_signal); -+ #endif - #ifdef SIGPIPE - if (signal (SIGPIPE, SIG_IGN) != SIG_IGN) - signal (SIGPIPE, fatal_signal); -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/gcov-tool.c gcc-6.2.0/gcc/gcov-tool.c -*** gcc-6.2.0-fsf/gcc/gcov-tool.c 2017-02-10 09:48:15.342343009 -0800 ---- gcc-6.2.0/gcc/gcov-tool.c 2017-02-10 10:58:43.887925206 -0800 -*************** extern void gcov_set_verbose (void); -*** 51,57 **** - /* Set to verbose output mode. */ - static bool verbose; - -! #if HAVE_FTW_H - - /* Remove file NAME if it has a gcda suffix. */ - ---- 51,58 ---- - /* Set to verbose output mode. */ - static bool verbose; - -! /* Fuchsia: remove when nftw has been implemented. */ -! #if HAVE_FTW_H && !defined(__Fuchsia__) - - /* Remove file NAME if it has a gcda suffix. */ - -*************** unlink_gcda_file (const char *name, -*** 80,86 **** - static int - unlink_profile_dir (const char *path ATTRIBUTE_UNUSED) - { -! #if HAVE_FTW_H - return nftw(path, unlink_gcda_file, 64, FTW_DEPTH | FTW_PHYS); - #else - return -1; ---- 81,88 ---- - static int - unlink_profile_dir (const char *path ATTRIBUTE_UNUSED) - { -! /* Fuchsia: remove when nftw has been implemented. */ -! #if HAVE_FTW_H && !defined(__Fuchsia__) - return nftw(path, unlink_gcda_file, 64, FTW_DEPTH | FTW_PHYS); - #else - return -1; -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/ggc-common.c gcc-6.2.0/gcc/ggc-common.c -*** gcc-6.2.0-fsf/gcc/ggc-common.c 2016-12-20 13:59:53.022879377 -0800 ---- gcc-6.2.0/gcc/ggc-common.c 2017-01-10 14:54:17.969607414 -0800 -*************** mmap_gt_pch_use_address (void *base, siz -*** 728,734 **** - static double - ggc_rlimit_bound (double limit) - { -! #if defined(HAVE_GETRLIMIT) - struct rlimit rlim; - # if defined (RLIMIT_AS) - /* RLIMIT_AS is what POSIX says is the limit on mmap. Presumably ---- 728,735 ---- - static double - ggc_rlimit_bound (double limit) - { -! /* Fuchsia: getrlimit is not fully implemented yet. */ -! #if !defined(__Fuchsia__) && defined(HAVE_GETRLIMIT) - struct rlimit rlim; - # if defined (RLIMIT_AS) - /* RLIMIT_AS is what POSIX says is the limit on mmap. Presumably -*************** ggc_rlimit_bound (double limit) -*** 752,758 **** - && rlim.rlim_cur >= 8 * 1024 * 1024) - limit = rlim.rlim_cur; - # endif /* RLIMIT_AS or RLIMIT_DATA */ -! #endif /* HAVE_GETRLIMIT */ - - return limit; - } ---- 753,759 ---- - && rlim.rlim_cur >= 8 * 1024 * 1024) - limit = rlim.rlim_cur; - # endif /* RLIMIT_AS or RLIMIT_DATA */ -! #endif /* !Fuchsia && HAVE_GETRLIMIT */ - - return limit; - } -*************** ggc_min_heapsize_heuristic (void) -*** 790,796 **** - bound of 128M (when RAM >= 1GB). */ - phys_kbytes /= 8; - -! #if defined(HAVE_GETRLIMIT) && defined (RLIMIT_RSS) - /* Try not to overrun the RSS limit while doing garbage collection. - The RSS limit is only advisory, so no margin is subtracted. */ +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libgcc/config/t-slibgcc-fuchsia gcc-6.3.0/libgcc/config/t-slibgcc-fuchsia +--- gcc-6.3.0-fsf/libgcc/config/t-slibgcc-fuchsia 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-6.3.0/libgcc/config/t-slibgcc-fuchsia 2017-03-30 16:23:21.728074093 -0700 +@@ -0,0 +1,22 @@ ++# Copyright (C) 2016 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/>. ++ ++# Fuchsia-specific shared library overrides. ++ ++SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ ++ $(LDFLAGS) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libgcc/config.host gcc-6.3.0/libgcc/config.host +--- gcc-6.3.0-fsf/libgcc/config.host 2017-03-30 16:18:19.057238897 -0700 ++++ gcc-6.3.0/libgcc/config.host 2017-03-31 18:28:28.201747975 -0700 +@@ -230,6 +230,10 @@ case ${host} in + ;; + esac + ;; ++*-*-fuchsia*) ++ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia" ++ extra_parts="crtbegin.o crtend.o" ++ ;; + *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) + tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux" + extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" +@@ -333,6 +337,10 @@ aarch64*-*-elf | aarch64*-*-rtems*) + tmake_file="${tmake_file} ${cpu_type}/t-aarch64" + tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" + ;; ++aarch64*-*-fuchsia*) ++ tmake_file="${tmake_file} ${cpu_type}/t-aarch64" ++ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp" ++ ;; + aarch64*-*-linux*) + extra_parts="$extra_parts crtfastmath.o" + md_unwind_header=aarch64/linux-unwind.h +@@ -584,8 +592,8 @@ i[34567]86-*-elfiamcu) + i[34567]86-*-elf*) + tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" + ;; +-x86_64-*-elf* | x86_64-*-rtems*) +- tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" ++x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia*) ++ tmake_file="$tmake_file t-libgcc-pic" + ;; + i[34567]86-*-dragonfly*) + tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libgcc/libgcov-util.c gcc-6.3.0/libgcc/libgcov-util.c +--- gcc-6.3.0-fsf/libgcc/libgcov-util.c 2017-03-30 16:18:19.057238897 -0700 ++++ gcc-6.3.0/libgcc/libgcov-util.c 2017-03-30 16:23:21.728074093 -0700 +@@ -382,7 +382,8 @@ read_gcda_file (const char *filename) + return obj_info; + } + +-#ifdef HAVE_FTW_H ++/* Fuchsia: remove when ftw has been implemented. */ ++#if defined(HAVE_FTW_H) && !defined(__Fuchsia__) + /* This will be called by ftw(). It opens and read a gcda file FILENAME. + Return a non-zero value to stop the tree walk. */ + +@@ -455,7 +456,8 @@ gcov_read_profile_dir (const char* dir_n + fnotice (stderr, "%s is not a directory\n", dir_name); + return NULL; + } +-#ifdef HAVE_FTW_H ++/* Fuchsia: remove when ftw has been implemented. */ ++#if defined(HAVE_FTW_H) && !defined(__Fuchsia__) + ftw (".", ftw_read_file, 50); + #endif + ret = chdir (pwd); +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libiberty/lrealpath.c gcc-6.3.0/libiberty/lrealpath.c +--- gcc-6.3.0-fsf/libiberty/lrealpath.c 2017-03-30 16:18:18.997239127 -0700 ++++ gcc-6.3.0/libiberty/lrealpath.c 2017-03-30 16:23:21.728074093 -0700 +@@ -56,7 +56,8 @@ components will be simplified. The retu + extern char *canonicalize_file_name (const char *); + #endif + +-#if defined(HAVE_REALPATH) ++/* Fuchsia: remove when realpath has been implemented. */ ++#if !defined(__Fuchsia__) && defined(HAVE_REALPATH) + # if defined (PATH_MAX) + # define REALPATH_LIMIT PATH_MAX + # else +@@ -109,7 +110,9 @@ lrealpath (const char *filename) + pathconf()) making it impossible to pass a correctly sized buffer + to realpath() (it could always overflow). On those systems, we + skip this. */ +-#if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) ++/* Fuchsia: remove from conditional when realpath has been implemented. */ ++#if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) \ ++ && !defined (__Fuchsia__) { ---- 791,798 ---- - bound of 128M (when RAM >= 1GB). */ - phys_kbytes /= 8; - -! /* Fuchsia: getrlimit is not fully implemented yet. */ -! #if !defined(__Fuchsia__) && defined(HAVE_GETRLIMIT) && defined (RLIMIT_RSS) - /* Try not to overrun the RSS limit while doing garbage collection. - The RSS limit is only advisory, so no margin is subtracted. */ - { -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/opts.c gcc-6.2.0/gcc/opts.c -*** gcc-6.2.0-fsf/gcc/opts.c 2016-12-20 14:00:05.086836577 -0800 ---- gcc-6.2.0/gcc/opts.c 2017-01-10 14:58:46.448360086 -0800 -*************** setup_core_dumping (diagnostic_context * -*** 2386,2392 **** - #ifdef SIGABRT - signal (SIGABRT, SIG_DFL); - #endif -! #if defined(HAVE_SETRLIMIT) - { - struct rlimit rlim; - if (getrlimit (RLIMIT_CORE, &rlim) != 0) ---- 2386,2393 ---- - #ifdef SIGABRT - signal (SIGABRT, SIG_DFL); - #endif -! /* Fuchsia: remove when getrlimit/setrlimit have been implemented. */ -! #if !defined(__Fuchsia__) && defined(HAVE_SETRLIMIT) - { - struct rlimit rlim; - if (getrlimit (RLIMIT_CORE, &rlim) != 0) -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/gcc/timevar.c gcc-6.2.0/gcc/timevar.c -*** gcc-6.2.0-fsf/gcc/timevar.c 2016-12-20 14:00:05.594834775 -0800 ---- gcc-6.2.0/gcc/timevar.c 2017-01-10 14:56:40.812936374 -0800 -*************** struct tms -*** 69,75 **** - # define HAVE_SYS_TIME - # define HAVE_WALL_TIME - #else -! #ifdef HAVE_GETRUSAGE - # if defined HAVE_DECL_GETRUSAGE && !HAVE_DECL_GETRUSAGE - extern int getrusage (int, struct rusage *); - # endif ---- 69,76 ---- - # define HAVE_SYS_TIME - # define HAVE_WALL_TIME - #else -! /* Fuchsia: remove when getrusage has been implemented. */ -! #if !defined(__Fuchsia__) && defined(HAVE_GETRUSAGE) - # if defined HAVE_DECL_GETRUSAGE && !HAVE_DECL_GETRUSAGE - extern int getrusage (int, struct rusage *); - # endif -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libgcc/config/arm/unwind-arm.h gcc-6.2.0/libgcc/config/arm/unwind-arm.h -*** gcc-6.2.0-fsf/libgcc/config/arm/unwind-arm.h 2016-12-20 14:00:07.118829367 -0800 ---- gcc-6.2.0/libgcc/config/arm/unwind-arm.h 2017-01-10 09:08:36.419550153 -0800 -*************** extern "C" { -*** 49,55 **** - return 0; - - #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \ -! || defined(__FreeBSD__) - /* Pc-relative indirect. */ - #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect) - tmp += ptr; ---- 49,55 ---- - return 0; - - #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \ -! || defined(__FreeBSD__) || defined(__Fuchsia__) - /* Pc-relative indirect. */ - #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect) - tmp += ptr; -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libgcc/config/t-slibgcc-fuchsia gcc-6.2.0/libgcc/config/t-slibgcc-fuchsia -*** gcc-6.2.0-fsf/libgcc/config/t-slibgcc-fuchsia 1969-12-31 16:00:00.000000000 -0800 ---- gcc-6.2.0/libgcc/config/t-slibgcc-fuchsia 2016-11-16 08:49:38.427039926 -0800 -*************** -*** 0 **** ---- 1,22 ---- -+ # Copyright (C) 2016 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/>. -+ -+ # Fuchsia-specific shared library overrides. -+ -+ SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ -+ $(LDFLAGS) -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libgcc/config.host gcc-6.2.0/libgcc/config.host -*** gcc-6.2.0-fsf/libgcc/config.host 2016-11-23 09:11:08.440175844 -0800 ---- gcc-6.2.0/libgcc/config.host 2016-12-08 12:43:21.452060382 -0800 -*************** case ${host} in -*** 230,235 **** ---- 230,239 ---- - ;; - esac - ;; -+ *-*-fuchsia*) -+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia" -+ extra_parts="crtbegin.o crtend.o" -+ ;; - *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu) - tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux" - extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o" -*************** aarch64*-*-elf | aarch64*-*-rtems*) -*** 333,338 **** ---- 337,346 ---- - tmake_file="${tmake_file} ${cpu_type}/t-aarch64" - tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" - ;; -+ aarch64*-*-fuchsia*) -+ tmake_file="${tmake_file} ${cpu_type}/t-aarch64" -+ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp" -+ ;; - aarch64*-*-linux*) - extra_parts="$extra_parts crtfastmath.o" - md_unwind_header=aarch64/linux-unwind.h -*************** arm*-*-freebsd*) # ARM Fr -*** 383,388 **** ---- 391,402 ---- - unwind_header=config/arm/unwind-arm.h - tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" - ;; -+ arm*-*-fuchsia*) -+ tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi" -+ tmake_file="${tmake_file} arm/tsoftfp t-softfp" -+ tm_file="${tm_file} arm/bpabi-lib.h" -+ unwind_header=config/arm/unwind-arm.h -+ ;; - arm*-*-netbsdelf*) - tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover" - ;; -*************** i[34567]86-*-elfiamcu) -*** 577,584 **** - i[34567]86-*-elf*) - tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" - ;; -! x86_64-*-elf* | x86_64-*-rtems*) -! tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" - ;; - i[34567]86-*-dragonfly*) - tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" ---- 591,598 ---- - i[34567]86-*-elf*) - tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic" - ;; -! x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia*) -! tmake_file="$tmake_file t-libgcc-pic" - ;; - i[34567]86-*-dragonfly*) - tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff" -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libgcc/libgcov-util.c gcc-6.2.0/libgcc/libgcov-util.c -*** gcc-6.2.0-fsf/libgcc/libgcov-util.c 2017-02-10 09:48:17.438335487 -0800 ---- gcc-6.2.0/libgcc/libgcov-util.c 2017-02-10 10:59:15.295811444 -0800 -*************** read_gcda_file (const char *filename) -*** 382,388 **** - return obj_info; - } - -! #ifdef HAVE_FTW_H - /* This will be called by ftw(). It opens and read a gcda file FILENAME. - Return a non-zero value to stop the tree walk. */ - ---- 382,389 ---- - return obj_info; - } - -! /* Fuchsia: remove when ftw has been implemented. */ -! #if defined(HAVE_FTW_H) && !defined(__Fuchsia__) - /* This will be called by ftw(). It opens and read a gcda file FILENAME. - Return a non-zero value to stop the tree walk. */ - -*************** gcov_read_profile_dir (const char* dir_n -*** 455,461 **** - fnotice (stderr, "%s is not a directory\n", dir_name); - return NULL; - } -! #ifdef HAVE_FTW_H - ftw (".", ftw_read_file, 50); - #endif - ret = chdir (pwd); ---- 456,463 ---- - fnotice (stderr, "%s is not a directory\n", dir_name); - return NULL; - } -! /* Fuchsia: remove when ftw has been implemented. */ -! #if defined(HAVE_FTW_H) && !defined(__Fuchsia__) - ftw (".", ftw_read_file, 50); - #endif - ret = chdir (pwd); -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libiberty/lrealpath.c gcc-6.2.0/libiberty/lrealpath.c -*** gcc-6.2.0-fsf/libiberty/lrealpath.c 2016-12-20 14:00:06.758830644 -0800 ---- gcc-6.2.0/libiberty/lrealpath.c 2017-01-10 15:01:19.863671770 -0800 -*************** components will be simplified. The retu -*** 56,62 **** - extern char *canonicalize_file_name (const char *); - #endif - -! #if defined(HAVE_REALPATH) - # if defined (PATH_MAX) - # define REALPATH_LIMIT PATH_MAX - # else ---- 56,63 ---- - extern char *canonicalize_file_name (const char *); - #endif - -! /* Fuchsia: remove when realpath has been implemented. */ -! #if !defined(__Fuchsia__) && defined(HAVE_REALPATH) - # if defined (PATH_MAX) - # define REALPATH_LIMIT PATH_MAX - # else -*************** lrealpath (const char *filename) -*** 109,115 **** - pathconf()) making it impossible to pass a correctly sized buffer - to realpath() (it could always overflow). On those systems, we - skip this. */ -! #if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) - { - /* Find out the max path size. */ - long path_max = pathconf ("/", _PC_PATH_MAX); ---- 110,118 ---- - pathconf()) making it impossible to pass a correctly sized buffer - to realpath() (it could always overflow). On those systems, we - skip this. */ -! /* Fuchsia: remove from conditional when realpath has been implemented. */ -! #if defined (HAVE_REALPATH) && defined (HAVE_UNISTD_H) \ -! && !defined (__Fuchsia__) - { - /* Find out the max path size. */ - long path_max = pathconf ("/", _PC_PATH_MAX); -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libiberty/pex-unix.c gcc-6.2.0/libiberty/pex-unix.c -*** gcc-6.2.0-fsf/libiberty/pex-unix.c 2017-03-02 15:29:41.979495096 -0800 ---- gcc-6.2.0/libiberty/pex-unix.c 2017-03-06 08:45:00.518152950 -0800 -*************** extern int errno; -*** 60,65 **** ---- 60,71 ---- - #include <process.h> - #endif - -+ #ifdef __Fuchsia__ -+ #include <launchpad/launchpad.h> -+ #include <magenta/syscalls.h> -+ #include <magenta/syscalls/object.h> -+ #endif -+ - #ifdef vfork /* Autoconf may define this to fork for us. */ - # define VFORK_STRING "fork" - #else -*************** to_ptr32 (char **ptr64) -*** 120,126 **** - - static pid_t pex_wait (struct pex_obj *, pid_t, int *, struct pex_time *); - -! #ifdef HAVE_WAIT4 - - static pid_t - pex_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, ---- 126,162 ---- - - static pid_t pex_wait (struct pex_obj *, pid_t, int *, struct pex_time *); - -! #ifdef __Fuchsia__ -! -! static pid_t -! pex_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, -! struct pex_time *time ATTRIBUTE_UNUSED) -! { -! mx_status_t wait_result, procinfo_result; -! mx_info_process_t proc_info; -! -! /* We don't support waiting on multiple pids. */ -! if (pid <= 0) -! return -1; -! -! wait_result = mx_object_wait_one ((mx_handle_t) pid, MX_TASK_TERMINATED, -! MX_TIME_INFINITE, NULL); -! -! if (wait_result != NO_ERROR) -! return -1; -! -! procinfo_result = mx_object_get_info ((mx_handle_t) pid, MX_INFO_PROCESS, -! &proc_info, sizeof (proc_info), NULL, -! NULL); -! -! if (procinfo_result != NO_ERROR) -! return -1; -! -! *status = (proc_info.return_code & 0xff) << 8; -! return pid; -! } -! -! #elif defined(HAVE_WAIT4) - - static pid_t - pex_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, -*************** pex_child_error (struct pex_obj *obj, co -*** 391,397 **** - - /* Execute a child. */ - -! #if defined(HAVE_SPAWNVE) && defined(HAVE_SPAWNVPE) - /* Implementation of pex->exec_child using the Cygwin spawn operation. */ - - /* Subroutine of pex_unix_exec_child. Move OLD_FD to a new file descriptor ---- 427,433 ---- - - /* Execute a child. */ - -! #if defined(__Fuchsia__) || (defined(HAVE_SPAWNVE) && defined(HAVE_SPAWNVPE)) - /* Implementation of pex->exec_child using the Cygwin spawn operation. */ - - /* Subroutine of pex_unix_exec_child. Move OLD_FD to a new file descriptor -*************** static pid_t -*** 492,498 **** - pex_unix_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, - int flags, const char *executable, - char * const * argv, char * const * env, -! int in, int out, int errdes, int toclose, - const char **errmsg, int *err) - { - int fl_in = 0, fl_out = 0, fl_err = 0, fl_tc = 0; ---- 528,534 ---- - pex_unix_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, - int flags, const char *executable, - char * const * argv, char * const * env, -! int in, int out, int errdes, int toclose, - const char **errmsg, int *err) - { - int fl_in = 0, fl_out = 0, fl_err = 0, fl_tc = 0; -*************** pex_unix_exec_child (struct pex_obj *obj -*** 547,552 **** ---- 583,612 ---- - { - typedef const char * const *cc_cp; - -+ #ifdef __Fuchsia__ -+ { -+ int argc; -+ -+ /* Count the number of arguments. */ -+ for (argc = 0; argv[argc]; argc++) -+ ; -+ -+ /* TODO: Implement PATH search for PEX_SEARCH option. */ -+ launchpad_t *lp; -+ launchpad_create (MX_HANDLE_INVALID, executable, &lp); -+ launchpad_load_from_file (lp, executable); -+ launchpad_set_args (lp, argc, argv); -+ launchpad_clone (lp, LP_CLONE_ALL); -+ mx_handle_t handle; -+ mx_status_t status = launchpad_go (lp, &handle, errmsg); -+ if (status == NO_ERROR) { -+ pid = (pid_t) handle; -+ break; -+ } -+ *err = status; -+ return (pid_t) -1; -+ } -+ #else - if (flags & PEX_SEARCH) - pid = spawnvpe (_P_NOWAITO, executable, (cc_cp)argv, (cc_cp)env); - else -*************** pex_unix_exec_child (struct pex_obj *obj -*** 560,565 **** ---- 620,626 ---- - if (errno != EAGAIN || ++retries == 4) - return (pid_t) -1; - sleep (1 << retries); -+ #endif - } - - /* Success. Restore the parent's file descriptors that we saved above. */ -*************** pex_unix_exec_child (struct pex_obj *obj -*** 590,596 **** - static pid_t - pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, - char * const * argv, char * const * env, -! int in, int out, int errdes, - int toclose, const char **errmsg, int *err) - { - pid_t pid; ---- 651,657 ---- - static pid_t - pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, - char * const * argv, char * const * env, -! int in, int out, int errdes, - int toclose, const char **errmsg, int *err) - { - pid_t pid; -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libiberty/stack-limit.c gcc-6.2.0/libiberty/stack-limit.c -*** gcc-6.2.0-fsf/libiberty/stack-limit.c 2016-12-20 14:00:06.730830744 -0800 ---- gcc-6.2.0/libiberty/stack-limit.c 2017-01-10 14:58:25.856453718 -0800 -*************** Attempt to increase stack size limit to -*** 46,53 **** - void - stack_limit_increase (unsigned long pref ATTRIBUTE_UNUSED) - { - #if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \ -! && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) - struct rlimit rlim; - if (getrlimit (RLIMIT_STACK, &rlim) == 0 - && rlim.rlim_cur != RLIM_INFINITY ---- 46,55 ---- - void - stack_limit_increase (unsigned long pref ATTRIBUTE_UNUSED) - { -+ /* Fuchsia: remove when getrlimit/setrlimit have been implemented. */ - #if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \ -! && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) \ -! && !defined(__Fuchsia__) - struct rlimit rlim; - if (getrlimit (RLIMIT_STACK, &rlim) == 0 - && rlim.rlim_cur != RLIM_INFINITY -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libstdc++-v3/configure gcc-6.2.0/libstdc++-v3/configure -*** gcc-6.2.0-fsf/libstdc++-v3/configure 2016-11-23 09:10:40.968283817 -0800 ---- gcc-6.2.0/libstdc++-v3/configure 2016-11-16 08:49:38.447039849 -0800 -*************** if test -z "$aix_libpath"; then aix_libp -*** 9825,9830 **** ---- 9825,9837 ---- - hardcode_shlibpath_var=no - ;; - -+ fuchsia*) -+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -*************** freebsd* | dragonfly*) -*** 10763,10768 **** ---- 10770,10781 ---- - esac - ;; - -+ fuchsia*) -+ library_names_spec='${libname}${shared_ext}' -+ need_lib_prefix=no -+ need_version=no -+ ;; -+ - gnu*) - version_type=linux - need_lib_prefix=no -*************** fi -*** 11372,11377 **** ---- 11385,11395 ---- - - ;; - -+ fuchsia*) -+ lt_cv_dlopen="dlopen" -+ lt_cv_dlopen_libs= -+ ;; -+ - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" - if test "x$ac_cv_func_shl_load" = x""yes; then : -*************** else -*** 11596,11602 **** - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 11599 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H ---- 11614,11620 ---- - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 11617 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -*************** else -*** 11702,11708 **** - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 11705 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H ---- 11720,11726 ---- - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -! #line 11723 "configure" - #include "confdefs.h" - - #if HAVE_DLFCN_H -*************** freebsd* | dragonfly*) -*** 14447,14452 **** ---- 14465,14476 ---- - esac - ;; - -+ fuchsia*) -+ library_names_spec='${libname}${shared_ext}' -+ need_lib_prefix=no -+ need_version=no -+ ;; -+ - gnu*) - version_type=linux - need_lib_prefix=no -*************** $as_echo "$glibcxx_cv_atomic_long_long" -*** 15388,15394 **** - # Fake what AC_TRY_COMPILE does. - - cat > conftest.$ac_ext << EOF -! #line 15391 "configure" - int main() - { - typedef bool atomic_type; ---- 15412,15418 ---- - # Fake what AC_TRY_COMPILE does. - - cat > conftest.$ac_ext << EOF -! #line 15415 "configure" - int main() - { - typedef bool atomic_type; -*************** $as_echo "$glibcxx_cv_atomic_bool" >&6; -*** 15423,15429 **** - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15426 "configure" - int main() - { - typedef short atomic_type; ---- 15447,15453 ---- - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15450 "configure" - int main() - { - typedef short atomic_type; -*************** $as_echo "$glibcxx_cv_atomic_short" >&6; -*** 15458,15464 **** - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15461 "configure" - int main() - { - // NB: _Atomic_word not necessarily int. ---- 15482,15488 ---- - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15485 "configure" - int main() - { - // NB: _Atomic_word not necessarily int. -*************** $as_echo "$glibcxx_cv_atomic_int" >&6; } -*** 15494,15500 **** - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15497 "configure" - int main() - { - typedef long long atomic_type; ---- 15518,15524 ---- - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15521 "configure" - int main() - { - typedef long long atomic_type; -*************** $as_echo "$as_me: WARNING: Performance o -*** 15573,15579 **** - # unnecessary for this test. - - cat > conftest.$ac_ext << EOF -! #line 15576 "configure" - int main() - { - _Decimal32 d1; ---- 15597,15603 ---- - # unnecessary for this test. - - cat > conftest.$ac_ext << EOF -! #line 15600 "configure" - int main() - { - _Decimal32 d1; -*************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -*** 15615,15621 **** - # unnecessary for this test. - - cat > conftest.$ac_ext << EOF -! #line 15618 "configure" - template<typename T1, typename T2> - struct same - { typedef T2 type; }; ---- 15639,15645 ---- - # unnecessary for this test. - - cat > conftest.$ac_ext << EOF -! #line 15642 "configure" - template<typename T1, typename T2> - struct same - { typedef T2 type; }; -*************** $as_echo "$enable_int128" >&6; } -*** 15649,15655 **** - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15652 "configure" - template<typename T1, typename T2> - struct same - { typedef T2 type; }; ---- 15673,15679 ---- - rm -f conftest* - - cat > conftest.$ac_ext << EOF -! #line 15676 "configure" - template<typename T1, typename T2> - struct same - { typedef T2 type; }; -*************** $as_echo "$ac_ld_relro" >&6; } -*** 53130,53135 **** ---- 53154,53165 ---- - - fi - ;; -+ -+ *-fuchsia*) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' -+ ;; -+ - *-hpux*) - SECTION_FLAGS='-ffunction-sections -fdata-sections' - -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libstdc++-v3/crossconfig.m4 gcc-6.2.0/libstdc++-v3/crossconfig.m4 -*** gcc-6.2.0-fsf/libstdc++-v3/crossconfig.m4 2016-11-23 09:10:41.352282308 -0800 ---- gcc-6.2.0/libstdc++-v3/crossconfig.m4 2016-11-16 08:49:38.451039834 -0800 -*************** case "${host}" in -*** 107,112 **** ---- 107,118 ---- - AC_DEFINE(HAVE_ISNANL) - fi - ;; -+ -+ *-fuchsia*) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' -+ ;; -+ - *-hpux*) - SECTION_FLAGS='-ffunction-sections -fdata-sections' - AC_SUBST(SECTION_FLAGS) -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/libtool.m4 gcc-6.2.0/libtool.m4 -*** gcc-6.2.0-fsf/libtool.m4 2016-11-23 09:11:07.960177729 -0800 ---- gcc-6.2.0/libtool.m4 2016-12-09 14:52:40.904402887 -0800 -*************** else -*** 1748,1753 **** ---- 1748,1758 ---- - ]) - ;; - -+ fuchsia*) -+ lt_cv_dlopen="dlopen" -+ lt_cv_dlopen_libs= -+ ;; -+ - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], -*************** freebsd* | dragonfly*) -*** 2323,2328 **** ---- 2328,2342 ---- - esac - ;; - -+ fuchsia*) -+ need_lib_prefix=no -+ need_version=no -+ dynamic_linker="$host_os ld.so.1" -+ library_names_spec='$libname$shared_ext' -+ soname_spec='$libname$shared_ext' -+ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' -+ ;; -+ - gnu*) - version_type=linux - need_lib_prefix=no -*************** freebsd* | dragonfly*) -*** 3047,3052 **** ---- 3061,3070 ---- - fi - ;; - -+ fuchsia*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ - gnu*) - lt_cv_deplibs_check_method=pass_all - ;; -*************** m4_if([$1], [CXX], [ -*** 3604,3610 **** - esac - ;; - -! beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) ---- 3622,3628 ---- - esac - ;; - -! beos* | fuchsia* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) -*************** m4_if([$1], [CXX], [ -*** 3694,3699 **** ---- 3712,3722 ---- - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; -+ fuchsia* ) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) -diff -rdcp --unidirectional-new-file gcc-6.2.0-fsf/Makefile.in gcc-6.2.0/Makefile.in -*** gcc-6.2.0-fsf/Makefile.in 2016-11-23 09:11:07.960177729 -0800 ---- gcc-6.2.0/Makefile.in 2016-12-08 13:11:05.048744794 -0800 -*************** BASE_TARGET_EXPORTS = \ -*** 287,292 **** ---- 287,293 ---- - LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ - LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \ - NM="$(COMPILER_NM_FOR_TARGET)"; export NM; \ -+ NO_PIE_CFLAGS="$(NO_PIE_CFLAGS_FOR_TARGET)"; export NO_PIE_CFLAGS; \ - OBJDUMP="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP; \ - OBJCOPY="$(OBJCOPY_FOR_TARGET)"; export OBJCOPY; \ - RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ -*************** EXTRA_TARGET_FLAGS = \ -*** 869,874 **** ---- 870,876 ---- - 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ - 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ - 'NM=$(COMPILER_NM_FOR_TARGET)' \ -+ 'NO_PIE_CFLAGS=$(NO_PIE_CFLAGS_FOR_TARGET)' \ - 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ - 'OBJCOPY=$$(OBJCOPY_FOR_TARGET)' \ - 'RANLIB=$$(RANLIB_FOR_TARGET)' \ + /* Find out the max path size. */ + long path_max = pathconf ("/", _PC_PATH_MAX); +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libiberty/pex-unix.c gcc-6.3.0/libiberty/pex-unix.c +--- gcc-6.3.0-fsf/libiberty/pex-unix.c 2017-03-30 16:18:18.993239143 -0700 ++++ gcc-6.3.0/libiberty/pex-unix.c 2017-03-30 16:23:21.728074093 -0700 +@@ -60,6 +60,12 @@ extern int errno; + #include <process.h> + #endif + ++#ifdef __Fuchsia__ ++#include <launchpad/launchpad.h> ++#include <magenta/syscalls.h> ++#include <magenta/syscalls/object.h> ++#endif ++ + #ifdef vfork /* Autoconf may define this to fork for us. */ + # define VFORK_STRING "fork" + #else +@@ -120,7 +126,37 @@ to_ptr32 (char **ptr64) + + static pid_t pex_wait (struct pex_obj *, pid_t, int *, struct pex_time *); + +-#ifdef HAVE_WAIT4 ++#ifdef __Fuchsia__ ++ ++static pid_t ++pex_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, ++ struct pex_time *time ATTRIBUTE_UNUSED) ++{ ++ mx_status_t wait_result, procinfo_result; ++ mx_info_process_t proc_info; ++ ++ /* We don't support waiting on multiple pids. */ ++ if (pid <= 0) ++ return -1; ++ ++ wait_result = mx_object_wait_one ((mx_handle_t) pid, MX_TASK_TERMINATED, ++ MX_TIME_INFINITE, NULL); ++ ++ if (wait_result != NO_ERROR) ++ return -1; ++ ++ procinfo_result = mx_object_get_info ((mx_handle_t) pid, MX_INFO_PROCESS, ++ &proc_info, sizeof (proc_info), NULL, ++ NULL); ++ ++ if (procinfo_result != NO_ERROR) ++ return -1; ++ ++ *status = (proc_info.return_code & 0xff) << 8; ++ return pid; ++} ++ ++#elif defined(HAVE_WAIT4) + + static pid_t + pex_wait (struct pex_obj *obj ATTRIBUTE_UNUSED, pid_t pid, int *status, +@@ -391,7 +427,7 @@ pex_child_error (struct pex_obj *obj, co + + /* Execute a child. */ + +-#if defined(HAVE_SPAWNVE) && defined(HAVE_SPAWNVPE) ++#if defined(__Fuchsia__) || (defined(HAVE_SPAWNVE) && defined(HAVE_SPAWNVPE)) + /* Implementation of pex->exec_child using the Cygwin spawn operation. */ + + /* Subroutine of pex_unix_exec_child. Move OLD_FD to a new file descriptor +@@ -492,7 +528,7 @@ static pid_t + pex_unix_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, + int flags, const char *executable, + char * const * argv, char * const * env, +- int in, int out, int errdes, int toclose, ++ int in, int out, int errdes, int toclose, + const char **errmsg, int *err) + { + int fl_in = 0, fl_out = 0, fl_err = 0, fl_tc = 0; +@@ -547,6 +583,30 @@ pex_unix_exec_child (struct pex_obj *obj + { + typedef const char * const *cc_cp; + ++#ifdef __Fuchsia__ ++ { ++ int argc; ++ ++ /* Count the number of arguments. */ ++ for (argc = 0; argv[argc]; argc++) ++ ; ++ ++ /* TODO: Implement PATH search for PEX_SEARCH option. */ ++ launchpad_t *lp; ++ launchpad_create (MX_HANDLE_INVALID, executable, &lp); ++ launchpad_load_from_file (lp, executable); ++ launchpad_set_args (lp, argc, argv); ++ launchpad_clone (lp, LP_CLONE_ALL); ++ mx_handle_t handle; ++ mx_status_t status = launchpad_go (lp, &handle, errmsg); ++ if (status == NO_ERROR) { ++ pid = (pid_t) handle; ++ break; ++ } ++ *err = status; ++ return (pid_t) -1; ++ } ++#else + if (flags & PEX_SEARCH) + pid = spawnvpe (_P_NOWAITO, executable, (cc_cp)argv, (cc_cp)env); + else +@@ -560,6 +620,7 @@ pex_unix_exec_child (struct pex_obj *obj + if (errno != EAGAIN || ++retries == 4) + return (pid_t) -1; + sleep (1 << retries); ++#endif + } + + /* Success. Restore the parent's file descriptors that we saved above. */ +@@ -590,7 +651,7 @@ pex_unix_exec_child (struct pex_obj *obj + static pid_t + pex_unix_exec_child (struct pex_obj *obj, int flags, const char *executable, + char * const * argv, char * const * env, +- int in, int out, int errdes, ++ int in, int out, int errdes, + int toclose, const char **errmsg, int *err) + { + pid_t pid; +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libiberty/stack-limit.c gcc-6.3.0/libiberty/stack-limit.c +--- gcc-6.3.0-fsf/libiberty/stack-limit.c 2017-03-30 16:18:18.993239143 -0700 ++++ gcc-6.3.0/libiberty/stack-limit.c 2017-03-30 16:23:21.728074093 -0700 +@@ -46,8 +46,10 @@ Attempt to increase stack size limit to + void + stack_limit_increase (unsigned long pref ATTRIBUTE_UNUSED) + { ++/* Fuchsia: remove when getrlimit/setrlimit have been implemented. */ + #if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \ +- && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) ++ && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) \ ++ && !defined(__Fuchsia__) + struct rlimit rlim; + if (getrlimit (RLIMIT_STACK, &rlim) == 0 + && rlim.rlim_cur != RLIM_INFINITY +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libstdc++-v3/configure gcc-6.3.0/libstdc++-v3/configure +--- gcc-6.3.0-fsf/libstdc++-v3/configure 2017-03-30 16:18:16.689247989 -0700 ++++ gcc-6.3.0/libstdc++-v3/configure 2017-03-31 06:42:34.802733803 -0700 +@@ -6360,6 +6360,10 @@ freebsd* | dragonfly*) + fi + ;; + ++fuchsia*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + gnu*) + lt_cv_deplibs_check_method=pass_all + ;; +@@ -10763,6 +10767,15 @@ freebsd* | dragonfly*) + esac + ;; + ++fuchsia*) ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os ld.so.1" ++ library_names_spec='$libname$shared_ext' ++ soname_spec='$libname$shared_ext' ++ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' ++ ;; ++ + gnu*) + version_type=linux + need_lib_prefix=no +@@ -11372,6 +11385,11 @@ fi + + ;; + ++ fuchsia*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" + if test "x$ac_cv_func_shl_load" = x""yes; then : +@@ -11596,7 +11614,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11599 "configure" ++#line 11617 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11702,7 +11720,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11705 "configure" ++#line 11723 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -13612,6 +13630,10 @@ $as_echo_n "checking for $compiler optio + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; ++ fuchsia* ) ++ lt_prog_compiler_wl_CXX='-Wl,' ++ lt_prog_compiler_static_CXX='-static' ++ ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) +@@ -14447,6 +14469,15 @@ freebsd* | dragonfly*) + esac + ;; + ++fuchsia*) ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os ld.so.1" ++ library_names_spec='$libname$shared_ext' ++ soname_spec='$libname$shared_ext' ++ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' ++ ;; ++ + gnu*) + version_type=linux + need_lib_prefix=no +@@ -15388,7 +15419,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" + # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF +-#line 15391 "configure" ++#line 15422 "configure" + int main() + { + typedef bool atomic_type; +@@ -15423,7 +15454,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15426 "configure" ++#line 15457 "configure" + int main() + { + typedef short atomic_type; +@@ -15458,7 +15489,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15461 "configure" ++#line 15492 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +@@ -15494,7 +15525,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15497 "configure" ++#line 15528 "configure" + int main() + { + typedef long long atomic_type; +@@ -15575,7 +15606,7 @@ $as_echo "$as_me: WARNING: Performance o + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15578 "configure" ++#line 15609 "configure" + int main() + { + _Decimal32 d1; +@@ -15617,7 +15648,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15620 "configure" ++#line 15651 "configure" + template<typename T1, typename T2> + struct same + { typedef T2 type; }; +@@ -15651,7 +15682,7 @@ $as_echo "$enable_int128" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15654 "configure" ++#line 15685 "configure" + template<typename T1, typename T2> + struct same + { typedef T2 type; }; +@@ -53199,6 +53230,12 @@ $as_echo "$ac_ld_relro" >&6; } + + fi + ;; ++ ++ *-fuchsia*) ++ SECTION_FLAGS='-ffunction-sections -fdata-sections' ++ SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' ++ ;; ++ + *-hpux*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' + +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libstdc++-v3/crossconfig.m4 gcc-6.3.0/libstdc++-v3/crossconfig.m4 +--- gcc-6.3.0-fsf/libstdc++-v3/crossconfig.m4 2017-03-30 16:18:16.741247790 -0700 ++++ gcc-6.3.0/libstdc++-v3/crossconfig.m4 2017-03-30 16:23:21.744074031 -0700 +@@ -107,6 +107,12 @@ case "${host}" in + AC_DEFINE(HAVE_ISNANL) + fi + ;; ++ ++ *-fuchsia*) ++ SECTION_FLAGS='-ffunction-sections -fdata-sections' ++ SECTION_LDFLAGS='-Wl,--gc-sections $SECTION_LDFLAGS' ++ ;; ++ + *-hpux*) + SECTION_FLAGS='-ffunction-sections -fdata-sections' + AC_SUBST(SECTION_FLAGS) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/libtool.m4 gcc-6.3.0/libtool.m4 +--- gcc-6.3.0-fsf/libtool.m4 2017-03-30 16:18:19.009239082 -0700 ++++ gcc-6.3.0/libtool.m4 2017-03-31 06:41:11.187017373 -0700 +@@ -1748,6 +1748,11 @@ else + ]) + ;; + ++ fuchsia*) ++ lt_cv_dlopen="dlopen" ++ lt_cv_dlopen_libs= ++ ;; ++ + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], +@@ -2323,6 +2328,15 @@ freebsd* | dragonfly*) + esac + ;; + ++fuchsia*) ++ need_lib_prefix=no ++ need_version=no ++ dynamic_linker="$host_os ld.so.1" ++ library_names_spec='$libname$shared_ext' ++ soname_spec='$libname$shared_ext' ++ sys_lib_dlsearch_path_spec='/system/lib /boot/lib' ++ ;; ++ + gnu*) + version_type=linux + need_lib_prefix=no +@@ -3047,6 +3061,10 @@ freebsd* | dragonfly*) + fi + ;; + ++fuchsia*) ++ lt_cv_deplibs_check_method=pass_all ++ ;; ++ + gnu*) + lt_cv_deplibs_check_method=pass_all + ;; +@@ -3694,6 +3712,10 @@ m4_if([$1], [CXX], [ + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; ++ fuchsia* ) ++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ++ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ++ ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) +diff -rdup --unidirectional-new-file gcc-6.3.0-fsf/Makefile.in gcc-6.3.0/Makefile.in +--- gcc-6.3.0-fsf/Makefile.in 2017-03-30 16:18:19.009239082 -0700 ++++ gcc-6.3.0/Makefile.in 2017-03-30 16:23:21.752074000 -0700 +@@ -287,6 +287,7 @@ BASE_TARGET_EXPORTS = \ + LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ + LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \ + NM="$(COMPILER_NM_FOR_TARGET)"; export NM; \ ++ NO_PIE_CFLAGS="$(NO_PIE_CFLAGS_FOR_TARGET)"; export NO_PIE_CFLAGS; \ + OBJDUMP="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP; \ + OBJCOPY="$(OBJCOPY_FOR_TARGET)"; export OBJCOPY; \ + RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ +@@ -869,6 +870,7 @@ EXTRA_TARGET_FLAGS = \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ + 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ + 'NM=$(COMPILER_NM_FOR_TARGET)' \ ++ 'NO_PIE_CFLAGS=$(NO_PIE_CFLAGS_FOR_TARGET)' \ + 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ + 'OBJCOPY=$$(OBJCOPY_FOR_TARGET)' \ + 'RANLIB=$$(RANLIB_FOR_TARGET)' \
diff --git a/toolvers b/toolvers index e491d52..bc9e236 100644 --- a/toolvers +++ b/toolvers
@@ -1,12 +1,12 @@ # Rerun updatetoolvers after modifying this file -GCC_VER=6.2.0 +GCC_VER=6.3.0 BINUTILS_VER=2.27 GDB_VER=7.10.1 GMP_VER=5.1.3 MPC_VER=1.0.3 MPFR_VER=3.1.3 # Below is autogenerated by updatetoolvers -GCC_HASH=9944589fc722d3e66308c0ce5257788ebd7872982a718aa2516123940671b7c5 +GCC_HASH=f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f BINUTILS_HASH=369737ce51587f92466041a97ab7d2358c6d9e1b6490b3940eb09fb0a9a6ac88 GDB_HASH=25c72f3d41c7c8554d61cacbeacd5f40993276d2ccdec43279ac546e3993d6d5 GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160