Mercurial > gnulib
changeset 18372:d9961cf477d9
maint: preprocessor changes to support z/OS
* lib/alloca.in.h, lib/fnmatch.c, lib/get-rusage-as.c:
* lib/glob.c, lib/math.in.h, lib/ptsname_r.c:
* tests/infinity.h, tests/nan.h, tests/test-canonicalize-lgpl.c:
* tests/test-nonblocking-pipe.h:
author | Daniel Richard G <skunk@iSKUNK.ORG> |
---|---|
date | Wed, 17 Aug 2016 16:55:13 -0700 |
parents | b3c8b6c7de30 |
children | ba7c2fe347c8 |
files | ChangeLog lib/alloca.in.h lib/fnmatch.c lib/get-rusage-as.c lib/glob.c lib/math.in.h lib/ptsname_r.c tests/infinity.h tests/nan.h tests/test-canonicalize-lgpl.c tests/test-nonblocking-pipe.h |
diffstat | 11 files changed, 53 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Aug 17 16:09:38 2016 -0700 +++ b/ChangeLog Wed Aug 17 16:55:13 2016 -0700 @@ -1,5 +1,11 @@ 2016-08-17 Daniel Richard G. <skunk@iSKUNK.ORG> + maint: preprocessor changes to support z/OS + * lib/alloca.in.h, lib/fnmatch.c, lib/get-rusage-as.c: + * lib/glob.c, lib/math.in.h, lib/ptsname_r.c: + * tests/infinity.h, tests/nan.h, tests/test-canonicalize-lgpl.c: + * tests/test-nonblocking-pipe.h: + fclose, strstr-simple, wchar: port to z/OS * m4/fclose.m4, m4/strstr.m4, m4/wchar_h.m4: Changes to the Autoconf M4 code to support z/OS. Note that
--- a/lib/alloca.in.h Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/alloca.in.h Wed Aug 17 16:55:13 2016 -0700 @@ -51,6 +51,8 @@ void *_alloca (unsigned short); # pragma intrinsic (_alloca) # define alloca _alloca +# elif defined __MVS__ +# include <stdlib.h> # else # include <stddef.h> # ifdef __cplusplus
--- a/lib/fnmatch.c Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/fnmatch.c Wed Aug 17 16:55:13 2016 -0700 @@ -22,7 +22,7 @@ # define _GNU_SOURCE 1 #endif -#if ! defined __builtin_expect && __GNUC__ < 3 +#if ! defined __builtin_expect && defined __GNUC__ && __GNUC__ < 3 # define __builtin_expect(expr, expected) (expr) #endif
--- a/lib/get-rusage-as.c Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/get-rusage-as.c Wed Aug 17 16:55:13 2016 -0700 @@ -355,7 +355,7 @@ uintptr_t get_rusage_as (void) { -#if (defined __APPLE__ && defined __MACH__) || defined _AIX || defined __CYGWIN__ /* Mac OS X, AIX, Cygwin */ +#if (defined __APPLE__ && defined __MACH__) || defined _AIX || defined __CYGWIN__ || defined __MVS__ /* Mac OS X, AIX, Cygwin, z/OS */ /* get_rusage_as_via_setrlimit() does not work. Prefer get_rusage_as_via_iterator(). */ return get_rusage_as_via_iterator ();
--- a/lib/glob.c Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/glob.c Wed Aug 17 16:55:13 2016 -0700 @@ -80,7 +80,9 @@ # define __stat64(fname, buf) stat (fname, buf) # define __fxstatat64(_, d, f, st, flag) fstatat (d, f, st, flag) # define struct_stat64 struct stat -# define __alloca alloca +# ifndef __MVS__ +# define __alloca alloca +# endif # define __readdir readdir # define __glob_pattern_p glob_pattern_p # define COMPILE_GLOB64
--- a/lib/math.in.h Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/math.in.h Wed Aug 17 16:55:13 2016 -0700 @@ -406,6 +406,7 @@ #if @GNULIB_CEIL@ # if @REPLACE_CEIL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef ceil # define ceil rpl_ceil # endif _GL_FUNCDECL_RPL (ceil, double, (double x)); @@ -753,6 +754,7 @@ #if @GNULIB_FLOOR@ # if @REPLACE_FLOOR@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef floor # define floor rpl_floor # endif _GL_FUNCDECL_RPL (floor, double, (double x)); @@ -973,6 +975,7 @@ #if @GNULIB_FREXP@ # if @REPLACE_FREXP@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef frexp # define frexp rpl_frexp # endif _GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2))); @@ -1958,6 +1961,7 @@ #if @GNULIB_TRUNCF@ # if @REPLACE_TRUNCF@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef truncf # define truncf rpl_truncf # endif _GL_FUNCDECL_RPL (truncf, float, (float x)); @@ -1980,6 +1984,7 @@ #if @GNULIB_TRUNC@ # if @REPLACE_TRUNC@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef trunc # define trunc rpl_trunc # endif _GL_FUNCDECL_RPL (trunc, double, (double x));
--- a/lib/ptsname_r.c Wed Aug 17 16:09:38 2016 -0700 +++ b/lib/ptsname_r.c Wed Aug 17 16:55:13 2016 -0700 @@ -34,6 +34,11 @@ # define _PATH_DEV "/dev/" # endif +# undef __set_errno +# undef __stat +# undef __ttyname_r +# undef __ptsname_r + # define __set_errno(e) errno = (e) # define __isatty isatty # define __stat stat
--- a/tests/infinity.h Wed Aug 17 16:09:38 2016 -0700 +++ b/tests/infinity.h Wed Aug 17 16:55:13 2016 -0700 @@ -17,8 +17,9 @@ /* Infinityf () returns a 'float' +Infinity. */ -/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ -#if defined _MSC_VER +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. + The IBM XL C compiler on z/OS complains. */ +#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) static float Infinityf () { @@ -32,8 +33,9 @@ /* Infinityd () returns a 'double' +Infinity. */ -/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ -#if defined _MSC_VER +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. + The IBM XL C compiler on z/OS complains. */ +#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) static double Infinityd () { @@ -47,9 +49,10 @@ /* Infinityl () returns a 'long double' +Infinity. */ -/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ -#if defined _MSC_VER -static double +/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. + The IBM XL C compiler on z/OS complains. */ +#if defined _MSC_VER || (defined __MVS__ && defined __IBMC__) +static long double Infinityl () { static long double zero = 0.0L;
--- a/tests/nan.h Wed Aug 17 16:09:38 2016 -0700 +++ b/tests/nan.h Wed Aug 17 16:55:13 2016 -0700 @@ -15,11 +15,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ +/* IBM z/OS supports both hexadecimal and IEEE floating-point formats. The + former does not support NaN and its isnan() implementation returns zero + for all values. */ +#if defined __MVS__ && defined __IBMC__ && !defined __BFP__ +# error "NaN is not supported with IBM's hexadecimal floating-point format; please re-compile with -qfloat=ieee" +#endif + /* NaNf () returns a 'float' not-a-number. */ /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke - on the expression 0.0 / 0.0. */ -#if defined __DECC || defined _MSC_VER + on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. */ +#if defined __DECC || defined _MSC_VER || (defined __MVS__ && defined __IBMC__) static float NaNf () { @@ -34,8 +41,8 @@ /* NaNd () returns a 'double' not-a-number. */ /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler choke - on the expression 0.0 / 0.0. */ -#if defined __DECC || defined _MSC_VER + on the expression 0.0 / 0.0. The IBM XL C compiler on z/OS complains. */ +#if defined __DECC || defined _MSC_VER || (defined __MVS__ && defined __IBMC__) static double NaNd () { @@ -51,14 +58,15 @@ /* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the runtime type conversion. - The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L. */ + The Microsoft MSVC 9 compiler chokes on the expression 0.0L / 0.0L. + The IBM XL C compiler on z/OS complains. */ #ifdef __sgi static long double NaNl () { double zero = 0.0; return zero / zero; } -#elif defined _MSC_VER +#elif defined _MSC_VER || (defined __MVS__ && defined __IBMC__) static long double NaNl () {
--- a/tests/test-canonicalize-lgpl.c Wed Aug 17 16:09:38 2016 -0700 +++ b/tests/test-canonicalize-lgpl.c Wed Aug 17 16:55:13 2016 -0700 @@ -191,12 +191,16 @@ ASSERT (result2); ASSERT (stat ("/", &st1) == 0); ASSERT (stat ("//", &st2) == 0); + /* On IBM z/OS, "/" and "//" are distinct, yet they both have + st_dev == st_ino == 1. */ +#ifndef __MVS__ if (SAME_INODE (st1, st2)) { ASSERT (strcmp (result1, "/") == 0); ASSERT (strcmp (result2, "/") == 0); } else +#endif { ASSERT (strcmp (result1, "//") == 0); ASSERT (strcmp (result2, "//") == 0);
--- a/tests/test-nonblocking-pipe.h Wed Aug 17 16:09:38 2016 -0700 +++ b/tests/test-nonblocking-pipe.h Wed Aug 17 16:55:13 2016 -0700 @@ -31,10 +31,11 @@ OSF/1 >= 262145 Solaris <= 7 >= 10241 Solaris >= 8 >= 20481 + z/OS >= 131073 Cygwin >= 65537 native Windows >= 4097 (depends on the _pipe argument) */ -#if defined __osf__ || (defined __linux__ && (defined __ia64__ || defined __mips__)) +#if defined __MVS__ || defined __osf__ || (defined __linux__ && (defined __ia64__ || defined __mips__)) # define PIPE_DATA_BLOCK_SIZE 270000 #elif defined __linux__ && defined __sparc__ # define PIPE_DATA_BLOCK_SIZE 140000