[PATCH libgpg-error] Add patch to support IBM z/OS
Sachin T
sachin.t at ibm.com
Mon Nov 17 11:23:33 CET 2025
Hi,
This patch provides two z/OS fixes:
1.
configure.ac: Correct the build_os name and use pkg-config to find zoslib on z/OS and set EXTRA_LIBS_FOR_BUILD to the actual linker flags returned by pkg-config; fail with a clear error if zoslib.pc is not found.
2.
src/spawn-posix.c: rename the gpgrt_spawn_actions member environ to env. This avoids a name collision with the global symbol “environ” (defined as a macro on z/OS), which cause build issues.
Thanks
Signed-off-by: Sachin T <sachin.t at ibm.com>
---
configure.ac | 8 +++++---
src/spawn-posix.c | 8 ++++----
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac
index 9792cba..359cc29 100644
--- a/configure.ac
+++ b/configure.ac
@@ -144,11 +144,13 @@ esac
# Set some variables for building build platform helpers.
case "$build_os" in
- *zOS*)
- EXTRA_LIBS_FOR_BUILD=zoslib
+ *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=
+ EXTRA_LIBS_FOR_BUILD=""
;;
esac
AC_SUBST(EXTRA_LIBS_FOR_BUILD)
diff --git a/src/spawn-posix.c b/src/spawn-posix.c
index 8cdd032..73cef10 100644
--- a/src/spawn-posix.c
+++ b/src/spawn-posix.c
@@ -63,7 +63,7 @@
struct gpgrt_spawn_actions {
int fd[3];
const int *except_fds;
- char **environ;
+ char **env;
const char *const *envchange;
void (*atfork) (void *);
void *atfork_arg;
@@ -432,8 +432,8 @@ my_exec (const char *pgmname, const char *argv[], gpgrt_spawn_actions_t act,
if (pgmname == NULL)
return 0;
- if (act->environ)
- execve (pgmname, (char *const *)argv, act->environ);
+ if (act->env)
+ execve (pgmname, (char *const *)argv, act->env);
else
execv (pgmname, (char *const *)argv);
@@ -534,7 +534,7 @@ void
_gpgrt_spawn_actions_set_environ (gpgrt_spawn_actions_t act,
char **environ_for_child)
{
- act->environ = environ_for_child;
+ act->env = environ_for_child;
}
void
--
2.51.0
From: Sachin T <sachin.t at ibm.com>
Date: Monday, 30 June 2025 at 10:25 PM
To: Werner Koch <wk at gnupg.org>, Sachin T via Gnupg-devel <gnupg-devel at gnupg.org>
Subject: Re: [EXTERNAL] Re: [PATCH libgpg-error] Add patch to support IBM z/OS
Hi,
Apologies for the delayed response.
Thank you for the suggestions. I will look into both options and follow up with a patch once I have a solution prepared.
Regards
Sachin
On 20/06/25, 9:31 PM, "Werner Koch" <wk at gnupg.org> wrote:
On Fri, 20 Jun 2025 10:44, Sachin T said:
> zoslib consists of two static libraries and one separate object
> file. Due to a z/OS linker limitation, the .o file can’t be included
> inside an archive , it may get ignored unless one of its symbols is
> explicitly referenced.
I think we have something like this also for an older SunOS or so. The
solution was to explictly reference the symbol for the main code. I
think this was/is in Libgcrypt but I can't remember. But no problem if
you already have a solution.
> Or would you prefer this logic be handled entirely within configure.ac?
I think it better to put this into configure.ac - this also documents
the need for them.
+case "$build_os" in
+ *zOS*)
+ EXTRA_LIBS_FOR_BUILD=-lzoslib -lzoslib-supp <lib_path>/celquopt.s.o
+ ;;
Is there any standard <lib_path> or can this be figured out at configure
run time?
Another option would be to add it to autogen.rc and extend autogen.sh
with a --build-zos option like we did for Windows.
Shalom-Salam,
Werner
--
The pioneers of a warless world are the youth that
refuse military service. - A. Einstein
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gnupg.org/pipermail/gnupg-devel/attachments/20251117/d734ed25/attachment-0001.html>
More information about the Gnupg-devel
mailing list