<pre style='margin:0'>
Jeremy Huddleston Sequoia (jeremyhu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/4a869f4eb2d758a57057b0c8b92b484e1de6c0c9">https://github.com/macports/macports-ports/commit/4a869f4eb2d758a57057b0c8b92b484e1de6c0c9</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 4a869f4  libcxxabi: Replace __refstring patch with the one used upstream
</span>4a869f4 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 4a869f4eb2d758a57057b0c8b92b484e1de6c0c9
</span>Author: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
AuthorDate: Thu Dec 28 09:58:12 2017 -0800

<span style='display:block; white-space:pre;color:#404040;'>    libcxxabi: Replace __refstring patch with the one used upstream
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@macports.org>
</span>---
 lang/libcxxabi/Portfile                            |   7 +-
 ...ndancy-on-__refstring-header-use-local-co.patch | 177 ++++++++++++++++++++
 ...-libc-abi-use-the-implementation-of-__num.patch | 179 ---------------------
 ...it-script-to-read-EXTRA_LDFLAGS-from-the.patch} |   9 +-
 ...CPP_BUILDING_LIBRARY-during-build-to-supp.patch |  27 ++++
 5 files changed, 213 insertions(+), 186 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxxabi/Portfile b/lang/libcxxabi/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index bb8f884..cdc62c4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxxabi/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libcxxabi/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,7 +4,7 @@ PortGroup               compiler_blacklist_versions 1.0
</span> name                    libcxxabi
 epoch                   1
 version                 3.9.1
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision                1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision                2
</span> categories              lang
 platforms               darwin
 license                 MIT NCSA
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,8 +33,9 @@ set root_name  ${name}-${version}-${revision}
</span> 
 patch.pre_args          -p1
 patchfiles \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    0001-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    0002-Revert-Make-libc-abi-use-the-implementation-of-__num.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    0001-Remove-dependancy-on-__refstring-header-use-local-co.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    0002-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    0003-Define-_LIBCPP_BUILDING_LIBRARY-during-build-to-supp.patch
</span> 
 variant universal {}
 default_variants +universal
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxxabi/files/0001-Remove-dependancy-on-__refstring-header-use-local-co.patch b/lang/libcxxabi/files/0001-Remove-dependancy-on-__refstring-header-use-local-co.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8e1eaac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libcxxabi/files/0001-Remove-dependancy-on-__refstring-header-use-local-co.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,177 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 422536dca703ec16150ae4792c944eb2c516d5dc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Eric Fiselier <eric@efcs.ca>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 12 Jul 2017 01:34:21 +0000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1/3] Remove dependancy on __refstring header; use local copy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ instead.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This patch removes the dependancy on libc++'s __refstring header,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+which was only a header in the first place so that libc++abi could
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build library code using it, and not because libc++ needed it in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the headers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This patch allows libc++ to stop shipping <__refstring> publicaly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+at the cost of duplicating it across projects. Ideally libc++abi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+would always require the libc++ sources when building, but that's
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+a separate discussion I plan to start on the mailing lists shortly.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@307748 91177308-0d34-0410-b5e6-96231b3b80d8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cherry picked from commit 28942d3ba886b4f215ac6ddaa05c55d35d927621)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/include/refstring.h | 131 ++++++++++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/stdexcept.cpp       |   2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 132 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 src/include/refstring.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/include/refstring.h b/src/include/refstring.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0000000..bc131ae
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/include/refstring.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,131 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//===------------------------ __refstring ---------------------------------===//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//                     The LLVM Compiler Infrastructure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This file is dual licensed under the MIT and the University of Illinois Open
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Source Licenses. See LICENSE.TXT for details.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// FIXME: This file is copied from libcxx/src/include/refstring.h. Instead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// duplicating the file in libc++abi we should require that the libc++ sources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// are available when building libc++abi.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _LIBCPPABI_REFSTRING_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define _LIBCPPABI_REFSTRING_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <__config>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <stdexcept>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstddef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstring>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <dlfcn.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++_LIBCPP_BEGIN_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace __refstring_imp { namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef int count_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct _Rep_base {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::size_t len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::size_t cap;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    count_t     count;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline _Rep_base* rep_from_data(const char *data_) noexcept {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *data = const_cast<char *>(data_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return reinterpret_cast<_Rep_base *>(data - sizeof(_Rep_base));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline char * data_from_rep(_Rep_base *rep) noexcept {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *data = reinterpret_cast<char *>(rep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return data + sizeof(*rep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const char* compute_gcc_empty_string_storage() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void* handle = dlopen("/usr/lib/libstdc++.6.dylib", RTLD_NOLOAD);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (handle == nullptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return nullptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void* sym = dlsym(handle, "_ZNSs4_Rep20_S_empty_rep_storageE");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (sym == nullptr)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return nullptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return data_from_rep(reinterpret_cast<_Rep_base *>(sym));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const char*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++get_gcc_empty_string_storage() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    static const char* p = compute_gcc_empty_string_storage();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return p;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}} // namespace __refstring_imp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++using namespace __refstring_imp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__libcpp_refstring::__libcpp_refstring(const char* msg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::size_t len = strlen(msg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Rep_base* rep = static_cast<_Rep_base *>(::operator new(sizeof(*rep) + len + 1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rep->len = len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rep->cap = len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    rep->count = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *data = data_from_rep(rep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    std::memcpy(data, msg, len + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __imp_ = data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__libcpp_refstring::__libcpp_refstring(const __libcpp_refstring &s) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    : __imp_(s.__imp_)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (__uses_refcount())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        __sync_add_and_fetch(&rep_from_data(__imp_)->count, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__libcpp_refstring& __libcpp_refstring::operator=(__libcpp_refstring const& s) _NOEXCEPT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool adjust_old_count = __uses_refcount();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    struct _Rep_base *old_rep = rep_from_data(__imp_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __imp_ = s.__imp_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (__uses_refcount())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        __sync_add_and_fetch(&rep_from_data(__imp_)->count, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (adjust_old_count)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (__sync_add_and_fetch(&old_rep->count, count_t(-1)) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ::operator delete(old_rep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return *this;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++__libcpp_refstring::~__libcpp_refstring() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (__uses_refcount()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        _Rep_base* rep = rep_from_data(__imp_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (__sync_add_and_fetch(&rep->count, count_t(-1)) < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ::operator delete(rep);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++inline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool __libcpp_refstring::__uses_refcount() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return __imp_ != get_gcc_empty_string_storage();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++_LIBCPP_END_NAMESPACE_STD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif //_LIBCPPABI_REFSTRING_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/stdexcept.cpp b/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index bd6789e..e3b7cd4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -7,7 +7,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include "__refstring"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "include/refstring.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "stdexcept"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "new"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstdlib>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.15.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxxabi/files/0002-Revert-Make-libc-abi-use-the-implementation-of-__num.patch b/lang/libcxxabi/files/0002-Revert-Make-libc-abi-use-the-implementation-of-__num.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 484d7e1..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxxabi/files/0002-Revert-Make-libc-abi-use-the-implementation-of-__num.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,179 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From c3520f9c833c6ae5d00530a54028ff4a5befc463 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 29 Dec 2014 22:05:22 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 2/2] Revert "Make libc++abi use the implementation of __numstr
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from libc++. No functionality change, just removal of duplicated code."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This reverts commit f7a83f7f3b5788e3ead1c7f2063994699df55085.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/stdexcept.cpp | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 127 insertions(+), 6 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/stdexcept.cpp b/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index bd6789e..246eea4 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- a/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ b/src/stdexcept.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -7,7 +7,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //===----------------------------------------------------------------------===//
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include "__refstring"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "stdexcept"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "new"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstdlib>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -15,25 +14,147 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstdint>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <cstddef>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static_assert(sizeof(std::__libcpp_refstring) == sizeof(const char *), "");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <dlfcn.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <mach-o/dyld.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Note:  optimize for size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#pragma GCC visibility push(hidden)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+namespace
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+class __libcpp_nmstr
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const char* str_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    typedef int count_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    struct _Rep_base
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        std::size_t len;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        std::size_t cap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        count_t     count;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    static const std::ptrdiff_t offset = static_cast<std::ptrdiff_t>(sizeof(_Rep_base));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    count_t& count() const _NOEXCEPT {return ((_Rep_base*)(str_ - offset))->count;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    static
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const void*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    compute_gcc_empty_string_storage() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        void* handle = dlopen("/usr/lib/libstdc++.6.dylib", RTLD_NOLOAD);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (handle == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return (const char*)dlsym(handle, "_ZNSs4_Rep20_S_empty_rep_storageE") + offset;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    static
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const void*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    get_gcc_empty_string_storage() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        static const void* p = compute_gcc_empty_string_storage();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    explicit __libcpp_nmstr(const char* msg);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr(const __libcpp_nmstr& s) _NOEXCEPT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr& operator=(const __libcpp_nmstr& s) _NOEXCEPT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ~__libcpp_nmstr();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const char* c_str() const _NOEXCEPT {return str_;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+__libcpp_nmstr::__libcpp_nmstr(const char* msg)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    std::size_t len = strlen(msg);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    str_ = static_cast<const char*>(::operator new(len + 1 + offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    _Rep_base* c = (_Rep_base*)str_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    c->len = c->cap = len;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    str_ += offset;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    count() = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    std::memcpy(const_cast<char*>(c_str()), msg, len + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+__libcpp_nmstr::__libcpp_nmstr(const __libcpp_nmstr& s) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    : str_(s.str_)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (str_ != get_gcc_empty_string_storage())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        __sync_add_and_fetch(&count(), 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+__libcpp_nmstr&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+__libcpp_nmstr::operator=(const __libcpp_nmstr& s) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const char* p = str_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    str_ = s.str_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (str_ != get_gcc_empty_string_storage())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        __sync_add_and_fetch(&count(), 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (p != get_gcc_empty_string_storage())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (__sync_add_and_fetch((count_t*)(p-sizeof(count_t)), count_t(-1)) < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            ::operator delete(const_cast<char*>(p-offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return *this;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+__libcpp_nmstr::~__libcpp_nmstr()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if __APPLE__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (str_ != get_gcc_empty_string_storage())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if (__sync_add_and_fetch(&count(), count_t(-1)) < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            ::operator delete(const_cast<char*>(str_ - offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#pragma GCC visibility pop
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace std  // purposefully not using versioning namespace
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--logic_error::~logic_error() _NOEXCEPT {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+logic_error::~logic_error() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr& s = (__libcpp_nmstr&)__imp_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    s.~__libcpp_nmstr();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const char*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- logic_error::what() const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return __imp_.c_str();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr& s = (__libcpp_nmstr&)__imp_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return s.c_str();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--runtime_error::~runtime_error() _NOEXCEPT {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+runtime_error::~runtime_error() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr& s = (__libcpp_nmstr&)__imp_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    s.~__libcpp_nmstr();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const char*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- runtime_error::what() const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return __imp_.c_str();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    __libcpp_nmstr& s = (__libcpp_nmstr&)__imp_;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return s.c_str();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- domain_error::~domain_error() _NOEXCEPT {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.6.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxxabi/files/0001-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch b/lang/libcxxabi/files/0002-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch
</span>similarity index 69%
rename from lang/libcxxabi/files/0001-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch
rename to lang/libcxxabi/files/0002-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch
<span style='display:block; white-space:pre;color:#808080;'>index 1b76508..d7ce5c8 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/lang/libcxxabi/files/0001-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libcxxabi/files/0002-Update-buildit-script-to-read-EXTRA_LDFLAGS-from-the.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,16 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From d499463febbff8eba10949c7810221d491bdddff Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b4ad47fdfcab865f279272f7e0efe245578370b8 Mon Sep 17 00:00:00 2001
</span> From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
 Date: Sun, 11 Jan 2015 14:31:06 -0800
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH 1/2] Update buildit script to read EXTRA_LDFLAGS from the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/3] Update buildit script to read EXTRA_LDFLAGS from the
</span>  environment
 
 Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+(cherry picked from commit 327c4e313aa524e95707b04cf6059d30dc797ba2)
</span> ---
  lib/buildit | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/buildit b/lib/buildit
<span style='display:block; white-space:pre;background:#ffe0e0;'>-index 5a4a710..610e92b 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5a4a710..f63acd0 100755
</span> --- a/lib/buildit
 +++ b/lib/buildit
 @@ -91,7 +91,7 @@ case $TRIPLE in
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,5 +24,5 @@ index 5a4a710..610e92b 100755
</span>  if [ -z $RC_XBS ]
  then
 -- 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-2.6.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.15.1
</span> 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/libcxxabi/files/0003-Define-_LIBCPP_BUILDING_LIBRARY-during-build-to-supp.patch b/lang/libcxxabi/files/0003-Define-_LIBCPP_BUILDING_LIBRARY-during-build-to-supp.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..698f8f5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/libcxxabi/files/0003-Define-_LIBCPP_BUILDING_LIBRARY-during-build-to-supp.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 7e73b0568532743d94470e0cf8617d0d39687efa Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 28 Dec 2017 10:20:30 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/3] Define _LIBCPP_BUILDING_LIBRARY during build to support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using newer STL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lib/buildit | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/buildit b/lib/buildit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f63acd0..508a805 100755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/lib/buildit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/lib/buildit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,7 +32,7 @@ EXTRA_FLAGS="-std=c++11 -stdlib=libc++ -fstrict-aliasing -Wstrict-aliasing=2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              -Wmissing-field-initializers -Wchar-subscripts -Wmismatched-tags \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              -Wmissing-braces -Wshorten-64-to-32 -Wsign-compare \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              -Wstrict-aliasing=2 -Wstrict-overflow=4 -Wunused-parameter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-             -Wnewline-eof"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             -Wnewline-eof -D_LIBCPP_BUILDING_LIBRARY"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case $TRIPLE in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   *-apple-*)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.15.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span></pre><pre style='margin:0'>

</pre>