Hello Maintainers, Please review the required changes for libgcrypt on z/OS platform.
Patch details as explained below. 1. configure.ac: Add z/OS detection to set a printable OS name, hint pthread availability, obtain EXTRA_LIBS_FOR_BUILD via pkg-config/zoslib for external library linking, and disable mmap detection so configure and generated Makefiles behave correctly on z/OS. 2. cipher/Makefile.am, doc/Makefile.am: Append $(EXTRA_LIBS_FOR_BUILD) to gost-s-box and yat2m link lines so build-host helper programs link correctly with z/OS-specific libraries during the build. 3. m4/libtool.m4: Add openedition* case setting lt_cv_deplibs_check_method=pass_all to accommodate z/OS/libtool dependency-check behavior. 4. mpi/longlong.h: Exclude the s390x GCC inline-assembly path on z/OS (MVS) because the inline asm is written for GAS-style syntax used on Linux on Z (LoZ) and is not compatible with z/OS. Rationale: although both targets use the same s390x architecture, z/OS uses HLASM (IBM High Level Assembler) with different syntax/semantics while LoZ uses GAS-style inline asm, so the GAS-formatted asm must be avoided on z/OS. 5. src/secmem.c: Make secure-memory locking a no-op on z/OS because the platform lacks the same secure memory primitives. --- Signed-off-by: Sachin T <[email protected]> --- cipher/Makefile.am | 2 +- configure.ac | 30 +++++++++++++++++++++++++++++- doc/Makefile.am | 2 +- m4/libtool.m4 | 4 ++++ mpi/longlong.h | 2 +- src/secmem.c | 4 ++++ 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/cipher/Makefile.am b/cipher/Makefile.am index bbcd518a..fc8966f8 100644 --- a/cipher/Makefile.am +++ b/cipher/Makefile.am @@ -175,7 +175,7 @@ gost-sb.h: gost-s-box$(EXEEXT_FOR_BUILD) gost-s-box$(EXEEXT_FOR_BUILD): gost-s-box.c $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \ - $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/gost-s-box.c + $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/gost-s-box.c $(EXTRA_LIBS_FOR_BUILD) if ENABLE_O_FLAG_MUNGING diff --git a/configure.ac b/configure.ac index f5e78077..c7070169 100644 --- a/configure.ac +++ b/configure.ac @@ -290,6 +290,10 @@ case "${host}" in [defined if we use posix_spawn in test program]) AC_CHECK_HEADERS(spawn.h) ;; + *-openedition*) + # The z/OS C runtime includes pthread support, and linking is handled automatically at build time. + have_pthread=yes + ;; *) ;; esac @@ -299,7 +303,6 @@ if test "$have_w32_system" = yes; then fi AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes) - # A printable OS Name is sometimes useful. case "${host}" in *-*-mingw32*) @@ -318,11 +321,29 @@ case "${host}" in PRINTABLE_OS_NAME="GNU/Linux" ;; + *-openedition*) + PRINTABLE_OS_NAME="IBM z/OS" + ;; + *) PRINTABLE_OS_NAME=`uname -s || echo "Unknown"` ;; esac +# Set some variables for build platform helpers. + +case "$build_os" in + *openedition*) + PKG_CHECK_MODULES([ZOSLIB], [zoslib], + [EXTRA_LIBS_FOR_BUILD="$ZOSLIB_LIBS"], + [AC_MSG_ERROR([zoslib not found. Please ensure zoslib.pc is in PKG_CONFIG_PATH.])]) + ;; + *) + EXTRA_LIBS_FOR_BUILD="" + ;; +esac +AC_SUBST(EXTRA_LIBS_FOR_BUILD) + NAME_OF_DEV_RANDOM="/dev/random" NAME_OF_DEV_URANDOM="/dev/urandom" @@ -3029,6 +3050,13 @@ AC_CHECK_FUNCS(stpcpy strcasecmp) # We have replacements for these in src/g10lib.h AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise) # Other checks +case "$host_os" in + *openedition*) + # mmap is not fully supported on z/os. + ac_cv_func_mmap=no + ;; +esac + AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4) AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog) AC_CHECK_FUNCS(syscall fcntl ftruncate flockfile getauxval elf_aux_info) diff --git a/doc/Makefile.am b/doc/Makefile.am index 2501e5da..f5432700 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -40,7 +40,7 @@ myman_pages = hmac256.1 man_MANS = $(myman_pages) yat2m$(EXEEXT_FOR_BUILD): yat2m.c - $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \ + $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(EXTRA_LIBS_FOR_BUILD) \ $(CPPFLAGS_FOR_BUILD) -o $@ $(srcdir)/yat2m.c .fig.png: diff --git a/m4/libtool.m4 b/m4/libtool.m4 index 102e884d..d4b52744 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -3348,6 +3348,10 @@ openbsd*) fi ;; +openedition*) + lt_cv_deplibs_check_method=pass_all + ;; + osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; diff --git a/mpi/longlong.h b/mpi/longlong.h index 9e60592a..46de33a8 100644 --- a/mpi/longlong.h +++ b/mpi/longlong.h @@ -1505,7 +1505,7 @@ extern USItype __udiv_qrnnd (USItype *, USItype, USItype, USItype); /*************************************** *********** s390x/zSeries ************ ***************************************/ -#if defined (__s390x__) && W_TYPE_SIZE == 64 && __GNUC__ >= 4 +#if defined (__s390x__) && !defined (__MVS__) && W_TYPE_SIZE == 64 && __GNUC__ >= 4 # define add_ssaaaa(sh, sl, ah, al, bh, bl) \ __asm__ ("algr %1,%5\n" \ "alcgr %0,%3\n" \ diff --git a/src/secmem.c b/src/secmem.c index 19cf1ad4..7c5cac76 100644 --- a/src/secmem.c +++ b/src/secmem.c @@ -365,6 +365,10 @@ lock_pool_pages (void *p, size_t n) * this whole Windows !@#$% and their user base are inherently insecure. */ (void)p; (void)n; +#elif defined (__MVS__) + /* On z/OS secure memory locking is not implemented */ + (void)p; + (void)n; #else (void)p; (void)n; -- 2.51.0
_______________________________________________ Gnupg-devel mailing list [email protected] https://lists.gnupg.org/mailman/listinfo/gnupg-devel
