https://github.com/perry-ca updated https://github.com/llvm/llvm-project/pull/167703
>From 6db3e611fd5799d102572dd16c612b0d560a0f95 Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Tue, 11 Nov 2025 00:36:10 -0500 Subject: [PATCH 1/6] Use wrapper to get for strnlen/strsignal --- clang/lib/AST/ByteCode/Context.cpp | 1 - llvm/CMakeLists.txt | 5 ++ .../include/llvm/Support/SystemZ/zOSSupport.h | 47 ------------------- .../Support/SystemZ/zos_wrappers/string.h | 35 ++++++++++++++ llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp | 1 - llvm/lib/ObjCopy/MachO/MachOObject.cpp | 1 - llvm/lib/ObjCopy/MachO/MachOReader.cpp | 1 - llvm/lib/ObjectYAML/MachOEmitter.cpp | 1 - llvm/lib/ObjectYAML/MachOYAML.cpp | 1 - llvm/lib/Support/CMakeLists.txt | 6 +++ llvm/lib/Support/Unix/Program.inc | 1 - llvm/lib/Support/zOSLibFunctions.cpp | 37 +++++++++++++++ .../llvm-exegesis/lib/BenchmarkRunner.cpp | 1 - llvm/tools/llvm-exegesis/lib/Error.cpp | 1 - llvm/tools/llvm-readobj/ELFDumper.cpp | 1 - llvm/tools/llvm-readobj/ObjDumper.cpp | 1 - llvm/tools/obj2yaml/macho2yaml.cpp | 1 - 17 files changed, 83 insertions(+), 59 deletions(-) delete mode 100644 llvm/include/llvm/Support/SystemZ/zOSSupport.h create mode 100644 llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h create mode 100644 llvm/lib/Support/zOSLibFunctions.cpp diff --git a/clang/lib/AST/ByteCode/Context.cpp b/clang/lib/AST/ByteCode/Context.cpp index 12bf3a3954b1b..74ec986e49ca7 100644 --- a/clang/lib/AST/ByteCode/Context.cpp +++ b/clang/lib/AST/ByteCode/Context.cpp @@ -21,7 +21,6 @@ #include "clang/AST/ASTLambda.h" #include "clang/AST/Expr.h" #include "clang/Basic/TargetInfo.h" -#include "llvm/Support/SystemZ/zOSSupport.h" using namespace clang; using namespace clang::interp; diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index f192cd05b5a34..eac38f3e17572 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -1294,6 +1294,11 @@ if(LLVM_TARGET_IS_CROSSCOMPILE_HOST) # (this is a variable that CrossCompile sets on recursive invocations) endif() +# Special hack for z/OS for missing POSIX functions +if (CMAKE_SYSTEM_NAME MATCHES "OS390") + include_directories(SYSTEM "${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/SystemZ/zos_wrappers" ) +endif() + if( "${CMAKE_SYSTEM_NAME}" MATCHES SunOS ) # special hack for Solaris to handle crazy system sys/regset.h include_directories("${LLVM_MAIN_INCLUDE_DIR}/llvm/Support/Solaris") diff --git a/llvm/include/llvm/Support/SystemZ/zOSSupport.h b/llvm/include/llvm/Support/SystemZ/zOSSupport.h deleted file mode 100644 index f9a61f887d5dd..0000000000000 --- a/llvm/include/llvm/Support/SystemZ/zOSSupport.h +++ /dev/null @@ -1,47 +0,0 @@ -//===- zOSSupport.h - Common z/OS Include File ------------------*- C++ -*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file defines z/OS implementations for common functions. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_SUPPORT_ZOSSUPPORT_H -#define LLVM_SUPPORT_ZOSSUPPORT_H - -#ifdef __MVS__ -#include <sys/resource.h> -#include <sys/wait.h> - -// z/OS Unix System Services does not have strsignal() support, so the -// strsignal() function is implemented here. -inline char *strsignal(int sig) { - static char msg[256]; - sprintf(msg, "%d", sig); - return msg; -} - -// z/OS Unix System Services does not have wait4() support, so the wait4 -// function is implemented here. -inline pid_t wait4(pid_t pid, int *wstatus, int options, - struct rusage *rusage) { - pid_t Result = waitpid(pid, wstatus, options); - int GetrusageRC = getrusage(RUSAGE_CHILDREN, rusage); - assert(!GetrusageRC && "Must have valid measure of the resources!"); - return Result; -} - -// z/OS Unix System Services does not have strnlen() support, so the strnlen() -// function is implemented here. -inline std::size_t strnlen(const char *S, std::size_t MaxLen) { - const char *PtrToNullChar = - static_cast<const char *>(std::memchr(S, '\0', MaxLen)); - return PtrToNullChar ? PtrToNullChar - S : MaxLen; -} - -#endif -#endif diff --git a/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h b/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h new file mode 100644 index 0000000000000..5b998e16431bd --- /dev/null +++ b/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h @@ -0,0 +1,35 @@ +//===- string.h - Common z/OS Include File ----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file declares z/OS implementations for common functions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SUPPORT_ZOSWRAPPER_STRING_H +#define LLVM_SUPPORT_ZOSWRAPPER_STRING_H + +#include_next <string.h> + +#ifdef __cplusplus +extern "C" { +#endif + +// z/OS Unix System Services does not have support for: +// - strsignal() +// - strnlen() +// Implementations are provided for z/OS. + +char *strsignal(int sig) asm("llvm_zos_strsignal"); + +size_t strnlen(const char *S, size_t MaxLen) asm("llvm_zos_strnlen"); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp b/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp index 93bc6631e64c8..8660c903c617d 100644 --- a/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp +++ b/llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp @@ -10,7 +10,6 @@ #include "llvm/Support/Alignment.h" #include "llvm/Support/Errc.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/SystemZ/zOSSupport.h" using namespace llvm; using namespace llvm::objcopy::macho; diff --git a/llvm/lib/ObjCopy/MachO/MachOObject.cpp b/llvm/lib/ObjCopy/MachO/MachOObject.cpp index 8d2c02dc37c99..8f7f54c99bddc 100644 --- a/llvm/lib/ObjCopy/MachO/MachOObject.cpp +++ b/llvm/lib/ObjCopy/MachO/MachOObject.cpp @@ -8,7 +8,6 @@ #include "MachOObject.h" #include "llvm/ADT/SmallPtrSet.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include <unordered_set> using namespace llvm; diff --git a/llvm/lib/ObjCopy/MachO/MachOReader.cpp b/llvm/lib/ObjCopy/MachO/MachOReader.cpp index 2b344f36d8e78..dd4d60deccbb8 100644 --- a/llvm/lib/ObjCopy/MachO/MachOReader.cpp +++ b/llvm/lib/ObjCopy/MachO/MachOReader.cpp @@ -10,7 +10,6 @@ #include "MachOObject.h" #include "llvm/BinaryFormat/MachO.h" #include "llvm/Object/MachO.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include <memory> using namespace llvm; diff --git a/llvm/lib/ObjectYAML/MachOEmitter.cpp b/llvm/lib/ObjectYAML/MachOEmitter.cpp index 35d442e8e3437..e32de0b288fe4 100644 --- a/llvm/lib/ObjectYAML/MachOEmitter.cpp +++ b/llvm/lib/ObjectYAML/MachOEmitter.cpp @@ -20,7 +20,6 @@ #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/LEB128.h" #include "llvm/Support/YAMLTraits.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; diff --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp index 133358d395928..32015ddeb3618 100644 --- a/llvm/lib/ObjectYAML/MachOYAML.cpp +++ b/llvm/lib/ObjectYAML/MachOYAML.cpp @@ -15,7 +15,6 @@ #include "llvm/BinaryFormat/MachO.h" #include "llvm/Support/YAMLTraits.h" #include "llvm/Support/raw_ostream.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include "llvm/TargetParser/Host.h" #include <cstdint> #include <cstring> diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt index 671a5fe941cef..9c6abf7a292e5 100644 --- a/llvm/lib/Support/CMakeLists.txt +++ b/llvm/lib/Support/CMakeLists.txt @@ -125,6 +125,10 @@ if(LLVM_INTEGRATED_CRT_ALLOC) endif() endif() +#if (CMAKE_SYSTEM_NAME MATCHES "OS390") + set(ZOSLIB_FILES "zOSLibFunctions.cpp") +#endif() + # FIXME: We are currently guarding AIX headers with _XOPEN_SOURCE=700. # See llvm/CMakeLists.txt. However, we need _SC_NPROCESSORS_ONLN in # unistd.h and it is guarded by _ALL_SOURCE, so we remove the _XOPEN_SOURCE @@ -294,6 +298,8 @@ add_llvm_component_library(LLVMSupport xxhash.cpp Z3Solver.cpp + ${ZOSLIB_FILES} + ${ALLOCATOR_FILES} $<TARGET_OBJECTS:LLVMSupportBlake3> diff --git a/llvm/lib/Support/Unix/Program.inc b/llvm/lib/Support/Unix/Program.inc index 4f17b2257a756..1b5e7bd6403a1 100644 --- a/llvm/lib/Support/Unix/Program.inc +++ b/llvm/lib/Support/Unix/Program.inc @@ -26,7 +26,6 @@ #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" #include "llvm/Support/StringSaver.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include "llvm/Support/raw_ostream.h" #include <sys/stat.h> #include <sys/resource.h> diff --git a/llvm/lib/Support/zOSLibFunctions.cpp b/llvm/lib/Support/zOSLibFunctions.cpp new file mode 100644 index 0000000000000..f24bdd475f7ad --- /dev/null +++ b/llvm/lib/Support/zOSLibFunctions.cpp @@ -0,0 +1,37 @@ +//===-- zOSLibFunctions.cpp -----------------------------------------------===// +//// +//// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +//// See https://llvm.org/LICENSE.txt for license information. +//// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +//// +////===--------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// +// This file defines z/OS implementations for common functions. +// +//===----------------------------------------------------------------------===// + +#ifdef __MVS__ +#include <stdio.h> +#include <string.h> +#include <sys/resource.h> +#include <sys/wait.h> + + +// z/OS Unix System Services does not have strsignal() support, so the +// strsignal() function is implemented here. +char *strsignal(int sig) { + static char msg[256]; + sprintf(msg, "%d", sig); + return msg; +} + +// z/OS Unix System Services does not have strnlen() support, so the strnlen() +// function is implemented here. +size_t strnlen(const char *S, size_t MaxLen) { + const char *PtrToNullChar = + static_cast<const char *>(memchr(S, '\0', MaxLen)); + return PtrToNullChar ? PtrToNullChar - S : MaxLen; +} +#endif diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp index 12fad7d57444f..a86be13f24882 100644 --- a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp +++ b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp @@ -27,7 +27,6 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Program.h" #include "llvm/Support/Signals.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include <cmath> #include <memory> #include <string> diff --git a/llvm/tools/llvm-exegesis/lib/Error.cpp b/llvm/tools/llvm-exegesis/lib/Error.cpp index 2908df25ddb1a..9024ba5ceb524 100644 --- a/llvm/tools/llvm-exegesis/lib/Error.cpp +++ b/llvm/tools/llvm-exegesis/lib/Error.cpp @@ -10,7 +10,6 @@ #include "llvm/Config/llvm-config.h" // for LLVM_ON_UNIX #ifdef LLVM_ON_UNIX -#include "llvm/Support/SystemZ/zOSSupport.h" #include <string.h> #endif // LLVM_ON_UNIX diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 6f09da5a4099f..2b5bc631afd8d 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -61,7 +61,6 @@ #include "llvm/Support/RISCVAttributeParser.h" #include "llvm/Support/RISCVAttributes.h" #include "llvm/Support/ScopedPrinter.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> #include <array> diff --git a/llvm/tools/llvm-readobj/ObjDumper.cpp b/llvm/tools/llvm-readobj/ObjDumper.cpp index 20e027aa5a5ef..1d193573b4776 100644 --- a/llvm/tools/llvm-readobj/ObjDumper.cpp +++ b/llvm/tools/llvm-readobj/ObjDumper.cpp @@ -21,7 +21,6 @@ #include "llvm/Support/Error.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/ScopedPrinter.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include "llvm/Support/raw_ostream.h" #include <map> diff --git a/llvm/tools/obj2yaml/macho2yaml.cpp b/llvm/tools/obj2yaml/macho2yaml.cpp index 00220123e8189..f78ec8f3c265a 100644 --- a/llvm/tools/obj2yaml/macho2yaml.cpp +++ b/llvm/tools/obj2yaml/macho2yaml.cpp @@ -15,7 +15,6 @@ #include "llvm/Support/Error.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/LEB128.h" -#include "llvm/Support/SystemZ/zOSSupport.h" #include <string.h> // for memcpy >From 2afefdc256414b39627b3d77ee21e63b31727af4 Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Tue, 11 Nov 2025 13:47:11 -0500 Subject: [PATCH 2/6] Add names for signals --- llvm/lib/Support/zOSLibFunctions.cpp | 47 +++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/llvm/lib/Support/zOSLibFunctions.cpp b/llvm/lib/Support/zOSLibFunctions.cpp index f24bdd475f7ad..32f496f7d450e 100644 --- a/llvm/lib/Support/zOSLibFunctions.cpp +++ b/llvm/lib/Support/zOSLibFunctions.cpp @@ -19,11 +19,56 @@ #include <sys/wait.h> +char *signalName[] = { + /* 0 */ nullptr, + /* 1 */ "Hangup", // SIGHUP - Posix + /* 2 */ "Interrupt", // SIGINT + /* 3 */ "Aborted", // SIGABRT + /* 4 */ "Illegal instruction", // SIGILL + /* 5 */ "Polling event", // SIGPOLL + /* 6 */ "Socket data available", // SIGURG + /* 7 */ "Stopped (signal)", // SIGSTOP - Posix + /* 8 */ "Floating point exception", // SIGFPE + /* 9 */ "Killed", // SIGKILL - Posix + /* 10 */ "Bus error", // SIGBUS + /* 11 */ "Segmentation fault", // SIGSEGV + /* 12 */ "Bad system call", // SIGSYS + /* 13 */ "Broken pipe", // SIGPIPE - Posix + /* 14 */ "Alarm clock", // SIGALRM - Posix + /* 15 */ "Terminated", // SIGTERM + /* 16 */ "User defined signal 1", // SIGUSR1 + /* 17 */ "User defined signal 2", // SIGUSR2 + /* 18 */ "Abend", // SIGABND + /* 19 */ "Continued", // SIGCONT - Posix + /* 20 */ "Child exited", // SIGCHLD - Posix + /* 21 */ "Stopped (tty input)", // SIGTTIN - Posix + /* 22 */ "Stopped (tty output)", // SIGTTOU - Posix + /* 23 */ "I/O complete", // SIGIO + /* 24 */ "Quit", // SIGQUIT - Posix + /* 25 */ "Stopped", // SIGTSTP - Posix + /* 26 */ "Trace/breakpoint trap", // SIGTRAP + /* 27 */ "I/O error", // SIGIOERR + /* 28 */ "Window changed", // SIGWINCH + /* 29 */ "CPU time limit exceeded", // SIGXCPU + /* 30 */ "File size limit exceeded", // SIGXFSZ + /* 31 */ "Virtual timer expired", // SIGVTALRM + /* 32 */ "Profiling timer expired", + /* 33 */ "OMVS subsystem shutdown", // SIGDANGER + /* 34 */ "Thread stop", // SIGTHSTOP + /* 35 */ "Thread resume", // SIGTHCONT + /* 36 */ nullptr, + /* 37 */ "Toggle syscall trace", // SIGTRACE + /* 38 */ nullptr, // SIGDCE + /* 39 */ "System dump", // SIGDUMP - Posix +}; + // z/OS Unix System Services does not have strsignal() support, so the // strsignal() function is implemented here. char *strsignal(int sig) { + if (sig < sizeof(signalName)/sizeof(signalName[0]) && signalName[sig]) + return signalName[sig]; static char msg[256]; - sprintf(msg, "%d", sig); + sprintf(msg, "Unknown signal %d", sig); return msg; } >From bb5329da04a28b6a4e7c7d43d6482029d468f95f Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Tue, 11 Nov 2025 22:18:41 +0000 Subject: [PATCH 3/6] build on z/OS --- llvm/lib/Support/zOSLibFunctions.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Support/zOSLibFunctions.cpp b/llvm/lib/Support/zOSLibFunctions.cpp index 32f496f7d450e..acbcaa3ac522c 100644 --- a/llvm/lib/Support/zOSLibFunctions.cpp +++ b/llvm/lib/Support/zOSLibFunctions.cpp @@ -19,7 +19,7 @@ #include <sys/wait.h> -char *signalName[] = { +const char *signalName[] = { /* 0 */ nullptr, /* 1 */ "Hangup", // SIGHUP - Posix /* 2 */ "Interrupt", // SIGINT @@ -65,8 +65,8 @@ char *signalName[] = { // z/OS Unix System Services does not have strsignal() support, so the // strsignal() function is implemented here. char *strsignal(int sig) { - if (sig < sizeof(signalName)/sizeof(signalName[0]) && signalName[sig]) - return signalName[sig]; + if (static_cast<size_t>(sig) < sizeof(signalName)/sizeof(signalName[0]) && signalName[sig]) + return const_cast<char *>(signalName[sig]); static char msg[256]; sprintf(msg, "Unknown signal %d", sig); return msg; >From 14a2af363130b821b1393e12b6d6e0262495f489 Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Wed, 12 Nov 2025 14:59:10 +0000 Subject: [PATCH 4/6] clean up make file & source --- llvm/lib/Support/CMakeLists.txt | 7 +-- llvm/lib/Support/zOSLibFunctions.cpp | 76 ++++++++++++++-------------- 2 files changed, 39 insertions(+), 44 deletions(-) diff --git a/llvm/lib/Support/CMakeLists.txt b/llvm/lib/Support/CMakeLists.txt index 9c6abf7a292e5..a0980bda2a212 100644 --- a/llvm/lib/Support/CMakeLists.txt +++ b/llvm/lib/Support/CMakeLists.txt @@ -125,10 +125,6 @@ if(LLVM_INTEGRATED_CRT_ALLOC) endif() endif() -#if (CMAKE_SYSTEM_NAME MATCHES "OS390") - set(ZOSLIB_FILES "zOSLibFunctions.cpp") -#endif() - # FIXME: We are currently guarding AIX headers with _XOPEN_SOURCE=700. # See llvm/CMakeLists.txt. However, we need _SC_NPROCESSORS_ONLN in # unistd.h and it is guarded by _ALL_SOURCE, so we remove the _XOPEN_SOURCE @@ -298,8 +294,6 @@ add_llvm_component_library(LLVMSupport xxhash.cpp Z3Solver.cpp - ${ZOSLIB_FILES} - ${ALLOCATOR_FILES} $<TARGET_OBJECTS:LLVMSupportBlake3> @@ -317,6 +311,7 @@ add_llvm_component_library(LLVMSupport Threading.cpp Valgrind.cpp Watchdog.cpp + zOSLibFunctions.cpp ADDITIONAL_HEADER_DIRS Unix diff --git a/llvm/lib/Support/zOSLibFunctions.cpp b/llvm/lib/Support/zOSLibFunctions.cpp index acbcaa3ac522c..c80d80633de5d 100644 --- a/llvm/lib/Support/zOSLibFunctions.cpp +++ b/llvm/lib/Support/zOSLibFunctions.cpp @@ -21,45 +21,45 @@ const char *signalName[] = { /* 0 */ nullptr, - /* 1 */ "Hangup", // SIGHUP - Posix - /* 2 */ "Interrupt", // SIGINT - /* 3 */ "Aborted", // SIGABRT - /* 4 */ "Illegal instruction", // SIGILL - /* 5 */ "Polling event", // SIGPOLL - /* 6 */ "Socket data available", // SIGURG - /* 7 */ "Stopped (signal)", // SIGSTOP - Posix - /* 8 */ "Floating point exception", // SIGFPE - /* 9 */ "Killed", // SIGKILL - Posix - /* 10 */ "Bus error", // SIGBUS - /* 11 */ "Segmentation fault", // SIGSEGV - /* 12 */ "Bad system call", // SIGSYS - /* 13 */ "Broken pipe", // SIGPIPE - Posix - /* 14 */ "Alarm clock", // SIGALRM - Posix - /* 15 */ "Terminated", // SIGTERM - /* 16 */ "User defined signal 1", // SIGUSR1 - /* 17 */ "User defined signal 2", // SIGUSR2 - /* 18 */ "Abend", // SIGABND - /* 19 */ "Continued", // SIGCONT - Posix - /* 20 */ "Child exited", // SIGCHLD - Posix - /* 21 */ "Stopped (tty input)", // SIGTTIN - Posix - /* 22 */ "Stopped (tty output)", // SIGTTOU - Posix - /* 23 */ "I/O complete", // SIGIO - /* 24 */ "Quit", // SIGQUIT - Posix - /* 25 */ "Stopped", // SIGTSTP - Posix - /* 26 */ "Trace/breakpoint trap", // SIGTRAP - /* 27 */ "I/O error", // SIGIOERR - /* 28 */ "Window changed", // SIGWINCH - /* 29 */ "CPU time limit exceeded", // SIGXCPU - /* 30 */ "File size limit exceeded", // SIGXFSZ - /* 31 */ "Virtual timer expired", // SIGVTALRM - /* 32 */ "Profiling timer expired", - /* 33 */ "OMVS subsystem shutdown", // SIGDANGER - /* 34 */ "Thread stop", // SIGTHSTOP - /* 35 */ "Thread resume", // SIGTHCONT + /* 1 */ "Hangup", // SIGHUP + /* 2 */ "Interrupt", // SIGINT + /* 3 */ "Aborted", // SIGABRT + /* 4 */ "Illegal instruction", // SIGILL + /* 5 */ "Polling event", // SIGPOLL + /* 6 */ "Socket data available", // SIGURG + /* 7 */ "Stopped (signal)", // SIGSTOP + /* 8 */ "Floating point exception", // SIGFPE + /* 9 */ "Killed", // SIGKILL + /* 10 */ "Bus error", // SIGBUS + /* 11 */ "Segmentation fault", // SIGSEGV + /* 12 */ "Bad system call", // SIGSYS + /* 13 */ "Broken pipe", // SIGPIPE + /* 14 */ "Alarm clock", // SIGALRM + /* 15 */ "Terminated", // SIGTERM + /* 16 */ "User defined signal 1", // SIGUSR1 + /* 17 */ "User defined signal 2", // SIGUSR2 + /* 18 */ "Abend", // SIGABND + /* 19 */ "Continued", // SIGCONT + /* 20 */ "Child exited", // SIGCHLD + /* 21 */ "Stopped (tty input)", // SIGTTIN + /* 22 */ "Stopped (tty output)", // SIGTTOU + /* 23 */ "I/O complete", // SIGIO + /* 24 */ "Quit", // SIGQUIT + /* 25 */ "Stopped", // SIGTSTP + /* 26 */ "Trace/breakpoint trap", // SIGTRAP + /* 27 */ "I/O error", // SIGIOERR + /* 28 */ "Window changed", // SIGWINCH + /* 29 */ "CPU time limit exceeded", // SIGXCPU + /* 30 */ "File size limit exceeded", // SIGXFSZ + /* 31 */ "Virtual timer expired", // SIGVTALRM + /* 32 */ "Profiling timer expired", // SIGPROF + /* 33 */ "OMVS subsystem shutdown", // SIGDANGER + /* 34 */ "Thread stop", // SIGTHSTOP + /* 35 */ "Thread resume", // SIGTHCONT /* 36 */ nullptr, - /* 37 */ "Toggle syscall trace", // SIGTRACE - /* 38 */ nullptr, // SIGDCE - /* 39 */ "System dump", // SIGDUMP - Posix + /* 37 */ "Toggle syscall trace", // SIGTRACE + /* 38 */ nullptr, // SIGDCE + /* 39 */ "System dump", // SIGDUMP }; // z/OS Unix System Services does not have strsignal() support, so the >From be245cf5756afc200ccde9b7f36150328fa8f42b Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Wed, 12 Nov 2025 16:10:42 +0000 Subject: [PATCH 5/6] fix formatting --- llvm/lib/Support/Unix/Program.inc | 6 +- llvm/lib/Support/zOSLibFunctions.cpp | 96 ++++++++++++++-------------- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/llvm/lib/Support/Unix/Program.inc b/llvm/lib/Support/Unix/Program.inc index 1b5e7bd6403a1..489ca03b30670 100644 --- a/llvm/lib/Support/Unix/Program.inc +++ b/llvm/lib/Support/Unix/Program.inc @@ -27,10 +27,10 @@ #include "llvm/Support/Path.h" #include "llvm/Support/StringSaver.h" #include "llvm/Support/raw_ostream.h" -#include <sys/stat.h> -#include <sys/resource.h> -#include <signal.h> #include <fcntl.h> +#include <signal.h> +#include <sys/resource.h> +#include <sys/stat.h> #if HAVE_UNISTD_H #include <unistd.h> #endif diff --git a/llvm/lib/Support/zOSLibFunctions.cpp b/llvm/lib/Support/zOSLibFunctions.cpp index c80d80633de5d..755b44fecba86 100644 --- a/llvm/lib/Support/zOSLibFunctions.cpp +++ b/llvm/lib/Support/zOSLibFunctions.cpp @@ -1,10 +1,10 @@ //===-- zOSLibFunctions.cpp -----------------------------------------------===// -//// -//// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -//// See https://llvm.org/LICENSE.txt for license information. -//// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -//// -////===--------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// // @@ -18,54 +18,54 @@ #include <sys/resource.h> #include <sys/wait.h> - const char *signalName[] = { - /* 0 */ nullptr, - /* 1 */ "Hangup", // SIGHUP - /* 2 */ "Interrupt", // SIGINT - /* 3 */ "Aborted", // SIGABRT - /* 4 */ "Illegal instruction", // SIGILL - /* 5 */ "Polling event", // SIGPOLL - /* 6 */ "Socket data available", // SIGURG - /* 7 */ "Stopped (signal)", // SIGSTOP - /* 8 */ "Floating point exception", // SIGFPE - /* 9 */ "Killed", // SIGKILL - /* 10 */ "Bus error", // SIGBUS - /* 11 */ "Segmentation fault", // SIGSEGV - /* 12 */ "Bad system call", // SIGSYS - /* 13 */ "Broken pipe", // SIGPIPE - /* 14 */ "Alarm clock", // SIGALRM - /* 15 */ "Terminated", // SIGTERM - /* 16 */ "User defined signal 1", // SIGUSR1 - /* 17 */ "User defined signal 2", // SIGUSR2 - /* 18 */ "Abend", // SIGABND - /* 19 */ "Continued", // SIGCONT - /* 20 */ "Child exited", // SIGCHLD - /* 21 */ "Stopped (tty input)", // SIGTTIN - /* 22 */ "Stopped (tty output)", // SIGTTOU - /* 23 */ "I/O complete", // SIGIO - /* 24 */ "Quit", // SIGQUIT - /* 25 */ "Stopped", // SIGTSTP - /* 26 */ "Trace/breakpoint trap", // SIGTRAP - /* 27 */ "I/O error", // SIGIOERR - /* 28 */ "Window changed", // SIGWINCH - /* 29 */ "CPU time limit exceeded", // SIGXCPU - /* 30 */ "File size limit exceeded", // SIGXFSZ - /* 31 */ "Virtual timer expired", // SIGVTALRM - /* 32 */ "Profiling timer expired", // SIGPROF - /* 33 */ "OMVS subsystem shutdown", // SIGDANGER - /* 34 */ "Thread stop", // SIGTHSTOP - /* 35 */ "Thread resume", // SIGTHCONT - /* 36 */ nullptr, - /* 37 */ "Toggle syscall trace", // SIGTRACE - /* 38 */ nullptr, // SIGDCE - /* 39 */ "System dump", // SIGDUMP + /* 0 */ nullptr, + /* 1 */ "Hangup", // SIGHUP + /* 2 */ "Interrupt", // SIGINT + /* 3 */ "Aborted", // SIGABRT + /* 4 */ "Illegal instruction", // SIGILL + /* 5 */ "Polling event", // SIGPOLL + /* 6 */ "Socket data available", // SIGURG + /* 7 */ "Stopped (signal)", // SIGSTOP + /* 8 */ "Floating point exception", // SIGFPE + /* 9 */ "Killed", // SIGKILL + /* 10 */ "Bus error", // SIGBUS + /* 11 */ "Segmentation fault", // SIGSEGV + /* 12 */ "Bad system call", // SIGSYS + /* 13 */ "Broken pipe", // SIGPIPE + /* 14 */ "Alarm clock", // SIGALRM + /* 15 */ "Terminated", // SIGTERM + /* 16 */ "User defined signal 1", // SIGUSR1 + /* 17 */ "User defined signal 2", // SIGUSR2 + /* 18 */ "Abend", // SIGABND + /* 19 */ "Continued", // SIGCONT + /* 20 */ "Child exited", // SIGCHLD + /* 21 */ "Stopped (tty input)", // SIGTTIN + /* 22 */ "Stopped (tty output)", // SIGTTOU + /* 23 */ "I/O complete", // SIGIO + /* 24 */ "Quit", // SIGQUIT + /* 25 */ "Stopped", // SIGTSTP + /* 26 */ "Trace/breakpoint trap", // SIGTRAP + /* 27 */ "I/O error", // SIGIOERR + /* 28 */ "Window changed", // SIGWINCH + /* 29 */ "CPU time limit exceeded", // SIGXCPU + /* 30 */ "File size limit exceeded", // SIGXFSZ + /* 31 */ "Virtual timer expired", // SIGVTALRM + /* 32 */ "Profiling timer expired", // SIGPROF + /* 33 */ "OMVS subsystem shutdown", // SIGDANGER + /* 34 */ "Thread stop", // SIGTHSTOP + /* 35 */ "Thread resume", // SIGTHCONT + /* 36 */ nullptr, // n/a + /* 37 */ "Toggle syscall trace", // SIGTRACE + /* 38 */ nullptr, // SIGDCE + /* 39 */ "System dump", // SIGDUMP }; // z/OS Unix System Services does not have strsignal() support, so the // strsignal() function is implemented here. char *strsignal(int sig) { - if (static_cast<size_t>(sig) < sizeof(signalName)/sizeof(signalName[0]) && signalName[sig]) + if (static_cast<size_t>(sig) < (sizeof(signalName) / sizeof(signalName[0])) && + signalName[sig]) return const_cast<char *>(signalName[sig]); static char msg[256]; sprintf(msg, "Unknown signal %d", sig); >From 625d015b1e797ae49afc91a774b6546c902a0fe8 Mon Sep 17 00:00:00 2001 From: Sean Perry <[email protected]> Date: Wed, 12 Nov 2025 11:48:55 -0500 Subject: [PATCH 6/6] Update llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h Co-authored-by: Zibi Sarbinowski <[email protected]> --- llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h b/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h index 5b998e16431bd..865eb8800397f 100644 --- a/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h +++ b/llvm/include/llvm/Support/SystemZ/zos_wrappers/string.h @@ -10,8 +10,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_SUPPORT_ZOSWRAPPER_STRING_H -#define LLVM_SUPPORT_ZOSWRAPPER_STRING_H +#ifndef LLVM_SUPPORT_ZOSWRAPPERS_STRING_H +#define LLVM_SUPPORT_ZOSWRAPPERS_STRING_H #include_next <string.h> _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
