Don't call unimplemented syscalls.
Avoid calling syscalls that are stubbed out in Fuchsia. They are
generally harmless, but generate a warning message that makes it
harder to see real warnings/errors.
Change-Id: Ibef205bc01e18e2b86de606f814e8b7b2527980a
diff --git a/patches/gcc-patch.txt b/patches/gcc-patch.txt
index d3db393..486c52f 100644
--- a/patches/gcc-patch.txt
+++ b/patches/gcc-patch.txt
@@ -828,6 +828,104 @@
#ifdef SIGPIPE
if (signal (SIGPIPE, SIG_IGN) != SIG_IGN)
signal (SIGPIPE, fatal_signal);
+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. */
+ {
+--- 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
@@ -939,6 +1037,46 @@
;;
i[34567]86-*-dragonfly*)
tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
+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 2016-12-20 14:00:06.758830644 -0800
--- gcc-6.2.0/libiberty/pex-unix.c 2017-01-10 09:09:16.271408329 -0800
@@ -1047,6 +1185,30 @@
if (pid > 0)
break;
+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