From 04e8f490345f99f6e9ac5c8ed403c7f095a52eb7 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 22 Apr 2017 13:51:02 +0200 Subject: [PATCH] get-rusage-data: Avoid warnings on Mac OS X. * lib/get-rusage-data.c: On Mac OS X, don't define get_rusage_data_via_setrlimit nor get_rusage_data_via_iterator. (get_rusage_data) [Mac OS X]: Just return 0. --- ChangeLog | 7 +++++++ lib/get-rusage-data.c | 45 ++++++++++++++++++++++++++++--------------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b92ba228c..4f11fca06d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-04-22 Bruno Haible + + get-rusage-data: Avoid warnings on Mac OS X. + * lib/get-rusage-data.c: On Mac OS X, don't define + get_rusage_data_via_setrlimit nor get_rusage_data_via_iterator. + (get_rusage_data) [Mac OS X]: Just return 0. + 2017-04-22 Bruno Haible xbinary-io: Fix build error. diff --git a/lib/get-rusage-data.c b/lib/get-rusage-data.c index 62293ad139..1fc8202131 100644 --- a/lib/get-rusage-data.c +++ b/lib/get-rusage-data.c @@ -148,13 +148,16 @@ #include "vma-iter.h" -#if HAVE_SETRLIMIT && defined RLIMIT_DATA +#if !(defined __APPLE__ && defined __MACH__) || defined TEST +/* Implement get_rusage_data_via_setrlimit(). */ -# ifdef _AIX -# define errno_expected() (errno == EINVAL || errno == EFAULT) -# else -# define errno_expected() (errno == EINVAL) -# endif +# if HAVE_SETRLIMIT && defined RLIMIT_DATA + +# ifdef _AIX +# define errno_expected() (errno == EINVAL || errno == EFAULT) +# else +# define errno_expected() (errno == EINVAL) +# endif static uintptr_t get_rusage_data_via_setrlimit (void) @@ -163,7 +166,7 @@ get_rusage_data_via_setrlimit (void) struct rlimit orig_limit; -# ifdef __hpux +# ifdef __hpux /* On HP-UX 11.00, setrlimit() RLIMIT_DATA of does not work: It cannot restore the previous limits. On HP-UX 11.11, setrlimit() RLIMIT_DATA of does not work: It sometimes @@ -177,7 +180,7 @@ get_rusage_data_via_setrlimit (void) || strcmp (buf.release + strlen (buf.release) - 5, "11.11") == 0)) return 0; } -# endif +# endif /* Record the original limit. */ if (getrlimit (RLIMIT_DATA, &orig_limit) < 0) @@ -310,7 +313,7 @@ get_rusage_data_via_setrlimit (void) return result; } -#else +# else static uintptr_t get_rusage_data_via_setrlimit (void) @@ -318,10 +321,15 @@ get_rusage_data_via_setrlimit (void) return 0; } +# endif + #endif -#if VMA_ITERATE_SUPPORTED +#if !(defined __APPLE__ && defined __MACH__) || defined TEST +/* Implement get_rusage_data_via_iterator(). */ + +# if VMA_ITERATE_SUPPORTED struct locals { @@ -346,7 +354,7 @@ vma_iterate_callback (void *data, uintptr_t start, uintptr_t end, static uintptr_t get_rusage_data_via_iterator (void) { -# if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __BEOS__ || defined __HAIKU__ +# if ((defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__) || defined __BEOS__ || defined __HAIKU__ /* On native Windows, there is no sbrk() function. On Haiku, sbrk(0) always returns 0. */ static void *brk_value; @@ -357,13 +365,13 @@ get_rusage_data_via_iterator (void) if (brk_value == NULL) return 0; } -# else +# else void *brk_value; brk_value = sbrk (0); if (brk_value == (void *)-1) return 0; -# endif +# endif { struct locals l; @@ -376,7 +384,7 @@ get_rusage_data_via_iterator (void) } } -#else +# else static uintptr_t get_rusage_data_via_iterator (void) @@ -384,13 +392,20 @@ get_rusage_data_via_iterator (void) return 0; } +# endif + #endif uintptr_t get_rusage_data (void) { -#if (defined __APPLE__ && defined __MACH__) || defined __CYGWIN__ /* Mac OS X, Cygwin */ +#if (defined __APPLE__ && defined __MACH__) /* Mac OS X */ + /* get_rusage_data_via_setrlimit() does not work: it always returns 0. + get_rusage_data_via_iterator() does not work: it always returns 0x400000. + And sbrk() is deprecated. */ + return 0; +#elif defined __CYGWIN__ /* Cygwin */ /* get_rusage_data_via_setrlimit() does not work. Prefer get_rusage_data_via_iterator(). */ return get_rusage_data_via_iterator (); -- 2.39.5