From 0ffe84c579f75bb93a29453183d8ebd0595b25e7 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
Date: Tue, 20 Dec 2016 12:41:21 -0800
Subject: [PATCH 4/4] 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 <jeremyhu@apple.com>
---
 lib/ObjectYAML/MachOYAML.cpp  | 14 ++++++++++++++
 tools/obj2yaml/macho2yaml.cpp | 16 +++++++++++++++-
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git llvm_master/lib/ObjectYAML/MachOYAML.cpp macports_master/lib/ObjectYAML/MachOYAML.cpp
index e00a4ea9307..0daba44573c 100644
--- llvm_master/lib/ObjectYAML/MachOYAML.cpp
+++ macports_master/lib/ObjectYAML/MachOYAML.cpp
@@ -22,6 +22,20 @@
 #include <cstdint>
 #include <cstring>
 
+#ifdef __APPLE__
+#include <Availability.h>
+#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 llvm_master/tools/obj2yaml/macho2yaml.cpp macports_master/tools/obj2yaml/macho2yaml.cpp
index fa81ce974ec..1e86f820437 100644
--- llvm_master/tools/obj2yaml/macho2yaml.cpp
+++ macports_master/tools/obj2yaml/macho2yaml.cpp
@@ -15,7 +15,21 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/LEB128.h"
 
-#include <string.h> // for memcpy
+#include <string.h> // for memcpy abd strnlen
+
+#ifdef __APPLE__
+#include <Availability.h>
+#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.15.1

