From a9c58e72a34e957fbff6b5020e1a29e32d269115 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Tue, 17 Mar 2020 16:38:32 -0400 Subject: [PATCH] zos: fix non-Release builds z/OS doesn't support POSIX semaphores. On Release builds the code paths that reference POSIX semaphore functions (e.g. sem_init()) are optimized away so linking succeeds but on a non-Release build the references to the unavailable functions result in unresolved symbol errors. Stub the unavailable POSIX semaphore functions on z/OS as so the code can link on non-Release builds. PR-URL: https://github.com/libuv/libuv/pull/2737 Reviewed-By: Ben Noordhuis --- src/unix/os390-syscalls.c | 25 +++++++++++++++++++++++++ src/unix/os390-syscalls.h | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/src/unix/os390-syscalls.c b/src/unix/os390-syscalls.c index 190ff1be..53dca91f 100644 --- a/src/unix/os390-syscalls.c +++ b/src/unix/os390-syscalls.c @@ -556,3 +556,28 @@ size_t strnlen(const char* str, size_t maxlen) { else return p - str; } + + +int sem_init(UV_PLATFORM_SEM_T* semid, int pshared, unsigned int value) { + UNREACHABLE(); +} + + +int sem_destroy(UV_PLATFORM_SEM_T* semid) { + UNREACHABLE(); +} + + +int sem_post(UV_PLATFORM_SEM_T* semid) { + UNREACHABLE(); +} + + +int sem_trywait(UV_PLATFORM_SEM_T* semid) { + UNREACHABLE(); +} + + +int sem_wait(UV_PLATFORM_SEM_T* semid) { + UNREACHABLE(); +} diff --git a/src/unix/os390-syscalls.h b/src/unix/os390-syscalls.h index 5130457c..86416bbc 100644 --- a/src/unix/os390-syscalls.h +++ b/src/unix/os390-syscalls.h @@ -65,5 +65,10 @@ int scandir(const char* maindir, struct dirent*** namelist, char *mkdtemp(char* path); ssize_t os390_readlink(const char* path, char* buf, size_t len); size_t strnlen(const char* str, size_t maxlen); +int sem_init(UV_PLATFORM_SEM_T* semid, int pshared, unsigned int value); +int sem_destroy(UV_PLATFORM_SEM_T* semid); +int sem_post(UV_PLATFORM_SEM_T* semid); +int sem_trywait(UV_PLATFORM_SEM_T* semid); +int sem_wait(UV_PLATFORM_SEM_T* semid); #endif /* UV_OS390_SYSCALL_H_ */