From d55a5be574088cf71a7707797e70dbf8b7ec6180 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Tue, 20 Dec 2016 12:41:21 -0800 Subject: [PATCH] Fix build issues pre-Lion due to missing a strnlen definition https://trac.macports.org/ticket/51520 https://llvm.org/bugs/show_bug.cgi?id=27714 Signed-off-by: Jeremy Huddleston Sequoia --- clang/lib/Lex/HeaderMap.cpp | 15 +++++++++++++++ lld/MachO/ExportTrie.cpp | 14 ++++++++++++++ lld/MachO/InputFiles.cpp | 14 ++++++++++++++ .../MachO/MachONormalizedFileBinaryUtils.h | 14 ++++++++++++++ llvm/lib/ObjectYAML/MachOEmitter.cpp | 14 ++++++++++++++ llvm/lib/ObjectYAML/MachOYAML.cpp | 14 ++++++++++++++ .../llvm-objcopy/MachO/MachOLayoutBuilder.cpp | 14 ++++++++++++++ llvm/tools/llvm-objcopy/MachO/MachOReader.cpp | 14 ++++++++++++++ llvm/tools/llvm-objcopy/MachO/Object.cpp | 14 ++++++++++++++ llvm/tools/llvm-readobj/ELFDumper.cpp | 14 ++++++++++++++ llvm/tools/llvm-readobj/ObjDumper.cpp | 14 ++++++++++++++ llvm/tools/obj2yaml/macho2yaml.cpp | 16 +++++++++++++++- 12 files changed, 170 insertions(+), 1 deletion(-) diff --git a/clang/lib/Lex/HeaderMap.cpp b/clang/lib/Lex/HeaderMap.cpp index d44ef29c05d1..541cbdef9702 100644 --- a/clang/lib/Lex/HeaderMap.cpp +++ b/clang/lib/Lex/HeaderMap.cpp @@ -23,6 +23,21 @@ #include "llvm/Support/Debug.h" #include #include + +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + using namespace clang; /// HashHMapKey - This is the 'well known' hash function required by the file diff --git a/lld/MachO/ExportTrie.cpp b/lld/MachO/ExportTrie.cpp index 7cc81bcfd5f1..cafac8aae97d 100644 --- a/lld/MachO/ExportTrie.cpp +++ b/lld/MachO/ExportTrie.cpp @@ -43,6 +43,20 @@ #include "llvm/BinaryFormat/MachO.h" #include "llvm/Support/LEB128.h" +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + using namespace llvm; using namespace llvm::MachO; using namespace lld; diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp index 46fe82f98822..5912e90d6a40 100644 --- a/lld/MachO/InputFiles.cpp +++ b/lld/MachO/InputFiles.cpp @@ -58,6 +58,20 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + using namespace llvm; using namespace llvm::MachO; using namespace llvm::support::endian; diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h index aeb04ef4508a..844f6d71102f 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h @@ -21,6 +21,20 @@ #include "llvm/Support/LEB128.h" #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace lld { namespace mach_o { namespace normalized { diff --git a/llvm/lib/ObjectYAML/MachOEmitter.cpp b/llvm/lib/ObjectYAML/MachOEmitter.cpp index 680264484704..0bce29d11401 100644 --- a/llvm/lib/ObjectYAML/MachOEmitter.cpp +++ b/llvm/lib/ObjectYAML/MachOEmitter.cpp @@ -23,6 +23,20 @@ #include "llvm/Support/Format.h" +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + using namespace llvm; namespace { diff --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp index 86aad0233767..1d3134313faf 100644 --- a/llvm/lib/ObjectYAML/MachOYAML.cpp +++ b/llvm/lib/ObjectYAML/MachOYAML.cpp @@ -21,6 +21,20 @@ #include #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace llvm { MachOYAML::LoadCommand::~LoadCommand() = default; diff --git a/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp b/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp index 256c830a44a4..4aeba9ba4b0e 100644 --- a/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp +++ b/llvm/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp @@ -11,6 +11,20 @@ #include "llvm/Support/Errc.h" #include "llvm/Support/ErrorHandling.h" +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace llvm { namespace objcopy { namespace macho { diff --git a/llvm/tools/llvm-objcopy/MachO/MachOReader.cpp b/llvm/tools/llvm-objcopy/MachO/MachOReader.cpp index 99bcec7f6b51..849a609c84af 100644 --- a/llvm/tools/llvm-objcopy/MachO/MachOReader.cpp +++ b/llvm/tools/llvm-objcopy/MachO/MachOReader.cpp @@ -13,6 +13,20 @@ #include "llvm/Object/MachO.h" #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace llvm { namespace objcopy { namespace macho { diff --git a/llvm/tools/llvm-objcopy/MachO/Object.cpp b/llvm/tools/llvm-objcopy/MachO/Object.cpp index de8cb0af108d..e20a18d4d9ca 100644 --- a/llvm/tools/llvm-objcopy/MachO/Object.cpp +++ b/llvm/tools/llvm-objcopy/MachO/Object.cpp @@ -11,6 +11,20 @@ #include "llvm/ADT/SmallPtrSet.h" #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace llvm { namespace objcopy { namespace macho { diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 15076f1f8933..ab0760cfb1c2 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -68,6 +68,20 @@ #include #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + using namespace llvm; using namespace llvm::object; using namespace ELF; diff --git a/llvm/tools/llvm-readobj/ObjDumper.cpp b/llvm/tools/llvm-readobj/ObjDumper.cpp index ce61f1c53a4d..63a10f2095bd 100644 --- a/llvm/tools/llvm-readobj/ObjDumper.cpp +++ b/llvm/tools/llvm-readobj/ObjDumper.cpp @@ -21,6 +21,20 @@ #include "llvm/Support/raw_ostream.h" #include +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif + namespace llvm { static inline Error createError(const Twine &Msg) { diff --git a/llvm/tools/obj2yaml/macho2yaml.cpp b/llvm/tools/obj2yaml/macho2yaml.cpp index 6b0db2aa15fa..930568380cbf 100644 --- a/llvm/tools/obj2yaml/macho2yaml.cpp +++ b/llvm/tools/obj2yaml/macho2yaml.cpp @@ -14,7 +14,21 @@ #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/LEB128.h" -#include // for memcpy +#include // for memcpy abd strnlen + +#ifdef __APPLE__ +#include +#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +static size_t strnlen(const char *s, size_t maxlen) { + size_t l = 0; + while (l < maxlen && *s) { + l++; + s++; + } + return l; +} +#endif +#endif using namespace llvm; -- 2.37.2