Skip to content

Commit ec41462

Browse files
authored
[SystemZ][z/OS] Add missing strnlen function for z/OS to fix build failures (#75339)
This patch adds strnlen to the zOSSupport.h file to fix build failures in multiple files.
1 parent c0ad6e2 commit ec41462

File tree

12 files changed

+21
-2
lines changed

12 files changed

+21
-2
lines changed

Diff for: clang/lib/Lex/HeaderMap.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
#include "clang/Lex/HeaderMap.h"
14-
#include "clang/Lex/HeaderMapTypes.h"
1514
#include "clang/Basic/CharInfo.h"
1615
#include "clang/Basic/FileManager.h"
16+
#include "clang/Lex/HeaderMapTypes.h"
1717
#include "llvm/ADT/SmallString.h"
1818
#include "llvm/Support/Compiler.h"
1919
#include "llvm/Support/DataTypes.h"
20+
#include "llvm/Support/Debug.h"
2021
#include "llvm/Support/MathExtras.h"
2122
#include "llvm/Support/MemoryBuffer.h"
2223
#include "llvm/Support/SwapByteOrder.h"
23-
#include "llvm/Support/Debug.h"
24+
#include "llvm/Support/SystemZ/zOSSupport.h"
2425
#include <cstring>
2526
#include <memory>
2627
#include <optional>

Diff for: llvm/include/llvm/Support/SystemZ/zOSSupport.h

+8
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,13 @@ inline pid_t wait4(pid_t pid, int *wstatus, int options,
3535
return Result;
3636
}
3737

38+
// z/OS Unix System Services does not have strnlen() support, so the strnlen()
39+
// function is implemented here.
40+
inline std::size_t strnlen(const char *S, std::size_t MaxLen) {
41+
const char *PtrToNullChar =
42+
static_cast<const char *>(std::memchr(S, '\0', MaxLen));
43+
return PtrToNullChar ? PtrToNullChar - S : MaxLen;
44+
}
45+
3846
#endif
3947
#endif

Diff for: llvm/lib/ObjCopy/MachO/MachOLayoutBuilder.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "llvm/Support/Alignment.h"
1111
#include "llvm/Support/Errc.h"
1212
#include "llvm/Support/ErrorHandling.h"
13+
#include "llvm/Support/SystemZ/zOSSupport.h"
1314

1415
using namespace llvm;
1516
using namespace llvm::objcopy::macho;

Diff for: llvm/lib/ObjCopy/MachO/MachOObject.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "MachOObject.h"
1010
#include "llvm/ADT/SmallPtrSet.h"
11+
#include "llvm/Support/SystemZ/zOSSupport.h"
1112
#include <unordered_set>
1213

1314
using namespace llvm;

Diff for: llvm/lib/ObjCopy/MachO/MachOReader.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "llvm/BinaryFormat/MachO.h"
1212
#include "llvm/Object/MachO.h"
1313
#include "llvm/Support/Errc.h"
14+
#include "llvm/Support/SystemZ/zOSSupport.h"
1415
#include <memory>
1516

1617
using namespace llvm;

Diff for: llvm/lib/ObjectYAML/MachOEmitter.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/Support/Error.h"
2020
#include "llvm/Support/FormatVariadic.h"
2121
#include "llvm/Support/LEB128.h"
22+
#include "llvm/Support/SystemZ/zOSSupport.h"
2223
#include "llvm/Support/YAMLTraits.h"
2324
#include "llvm/Support/raw_ostream.h"
2425

Diff for: llvm/lib/ObjectYAML/MachOYAML.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "llvm/ADT/StringRef.h"
1515
#include "llvm/BinaryFormat/MachO.h"
1616
#include "llvm/Support/Format.h"
17+
#include "llvm/Support/SystemZ/zOSSupport.h"
1718
#include "llvm/Support/YAMLTraits.h"
1819
#include "llvm/Support/raw_ostream.h"
1920
#include "llvm/TargetParser/Host.h"

Diff for: llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "llvm/Support/MemoryBuffer.h"
2626
#include "llvm/Support/Program.h"
2727
#include "llvm/Support/Signals.h"
28+
#include "llvm/Support/SystemZ/zOSSupport.h"
2829

2930
#ifdef __linux__
3031
#ifdef HAVE_LIBPFM

Diff for: llvm/tools/llvm-exegesis/lib/Error.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "Error.h"
1010

1111
#ifdef LLVM_ON_UNIX
12+
#include "llvm/Support/SystemZ/zOSSupport.h"
1213
#include <string.h>
1314
#endif // LLVM_ON_UNIX
1415

Diff for: llvm/tools/llvm-readobj/ELFDumper.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
#include "llvm/Support/RISCVAttributeParser.h"
5858
#include "llvm/Support/RISCVAttributes.h"
5959
#include "llvm/Support/ScopedPrinter.h"
60+
#include "llvm/Support/SystemZ/zOSSupport.h"
6061
#include "llvm/Support/raw_ostream.h"
6162
#include <algorithm>
6263
#include <cinttypes>

Diff for: llvm/tools/llvm-readobj/ObjDumper.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/Support/Error.h"
1919
#include "llvm/Support/FormatVariadic.h"
2020
#include "llvm/Support/ScopedPrinter.h"
21+
#include "llvm/Support/SystemZ/zOSSupport.h"
2122
#include "llvm/Support/raw_ostream.h"
2223
#include <map>
2324

Diff for: llvm/tools/obj2yaml/macho2yaml.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include "llvm/Support/Error.h"
1616
#include "llvm/Support/ErrorHandling.h"
1717
#include "llvm/Support/LEB128.h"
18+
#include "llvm/Support/SystemZ/zOSSupport.h"
1819

1920
#include <string.h> // for memcpy
2021

0 commit comments

Comments
 (0)