<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/27e383a1d38b8109a27734905c98c8cf59bbfbcb">https://github.com/macports/macports-ports/commit/27e383a1d38b8109a27734905c98c8cf59bbfbcb</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 27e383a1d38 clang-11-bootstrap: new port
</span>27e383a1d38 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 27e383a1d38b8109a27734905c98c8cf59bbfbcb
</span>Author: Kirill A. Korinsky <kirill@korins.ky>
AuthorDate: Tue Aug 2 16:40:01 2022 +0200

<span style='display:block; white-space:pre;color:#404040;'>    clang-11-bootstrap: new port
</span>---
 lang/clang-11-bootstrap/Portfile                   | 282 ++++++++++++++++++
 ...MASK_CRASH-and-MACH_EXCEPTION_CODES-if-th.patch |  36 +++
 ...ly-Don-t-embed-the-deployment-target-in-t.patch |  33 +++
 ...ssues-pre-Lion-due-to-missing-a-strnlen-d.patch |  70 +++++
 ...nly-call-pthread_setname_np-on-SnowLeopar.patch |  36 +++
 ...etpriority-PRIO_DARWIN_THREAD-0-PRIO_DARW.patch |  29 ++
 ...p-use-older-cfname-and-fix-uuid-on-leopard.diff |  23 ++
 ...t-unix-path-copyfileclone-on-older-systems.diff |  15 +
 ...ly-Fix-name-of-scan-view-executable-insid.patch |  19 ++
 ...fragile-ObjC-runtime-when-targeting-darwi.patch |  31 ++
 ...dc-header-search-paths-for-older-versions.patch |  41 +++
 ...ssues-pre-Lion-due-to-missing-a-strnlen-d.patch |  42 +++
 ...oat.h-to-work-on-Snow-Leopard-and-earlier.patch |  34 +++
 .../files/1008-compilerrt-fuzzer-missingdefs.diff  |  17 ++
 .../1009-compilerrt-sanitizer-missingdefs.diff     |  14 +
 .../2002-Work-around-no-libdispatch-on-10.6.patch  |  50 ++++
 ...-long-long-math-prototypes-when-using-the.patch |  51 ++++
 ...tomic-using-mutex-lock_guard-for-64b-ops-.patch | 316 +++++++++++++++++++++
 ...libcxx-chrono-restore-steadyclock-fallback.diff |  87 ++++++
 ...ompilerrtdarwinutils-find-macosxsdkversion.diff |  30 ++
 ...lchains-darwin-add-back-pre-10.6-link-libs.diff |  30 ++
 ...libcxx-reexport-symbols-lionorgreater-only.diff |  27 ++
 ...libcxx-includes-disable-availability-tests.diff |  13 +
 .../9000-patch-clang-7.0-support-emulated-tls.diff |  26 ++
 .../9000-patch-llvm-7.0-support-emulated-tls.diff  |  13 +
 .../files/9001-macports-libstdcxx.diff             | 157 ++++++++++
 ...clang-7.0-default-to-libcxx-on-all-systems.diff |  15 +
 ...-issues-pre-Lion-due-to-missing-a-strnlen.patch | 226 +++++++++++++++
 .../files/fix-build-clang-by-gcc10.diff            |  11 +
 .../clang-11-bootstrap/files/leopard-no-asan.patch |  12 +
 .../files/leopard-no-blocks.patch                  |  26 ++
 ...clang-fix-include-next-sysroot-cpp-headers.diff | 251 ++++++++++++++++
 32 files changed, 2063 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/Portfile b/lang/clang-11-bootstrap/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7b60f7ba895
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,282 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           muniversal 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# clang-11 is the last clang which can be build with the last version of cmake to not require c++11.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                clang-11-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             11.1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+epoch               0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          lang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@catap korins.ky:kirill} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             NCSA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         clang-11 with minimal MacPorts patches pegged at version ${version}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    ${description} This port depends only on bootstrap dependencies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://llvm.org/
</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;'>+master_sites        https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            llvm-project-${version}.src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  f566b4b75c8f30418f19069a9a84864ead766401 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  74d2529159fd118c3eac6f90107b5611bccc6f647fdea104024183e8d5e25831 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    84065492
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# no Clang / LLVM for PowerPC yet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+supported_archs     arm64 i386 x86_64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_extract     port:xz-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_skip_archcheck-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    xz-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.suffix      .tar.xz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+extract.cmd         ${prefix}/libexec/xz-bootstrap/bin/xz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:python27-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_skip_archcheck-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    python27-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# clang is linked against gcc's libstdc++.6.dylib and libgcc_s.1.1.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:gcc10-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Use cmake-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:bin/cmake:cmake port:cmake-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_skip_archcheck-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    cmake-bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd       ${prefix}/libexec/cmake-bootstrap/bin/cmake
</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;'>+worksrcdir          llvm-project/llvm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.dir           ${workpath}/llvm-project/llvm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/${distname}                       ${workpath}/llvm-project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/clang                ${worksrcpath}/tools/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/compiler-rt          ${worksrcpath}/projects/compiler-rt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/libcxx               ${worksrcpath}/projects/libcxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/libcxxabi            ${worksrcpath}/projects/libcxxabi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/lld                  ${worksrcpath}/projects/lld
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ln -s ${workpath}/llvm-project/clang-tools-extra    ${worksrcpath}/tools/clang/tools/extra
</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;'>+patch.pre_args      -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          0002-Define-EXC_MASK_CRASH-and-MACH_EXCEPTION_CODES-if-th.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0003-MacPorts-Only-Don-t-embed-the-deployment-target-in-t.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0005-Threading-Only-call-pthread_setname_np-on-SnowLeopar.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0006-Only-call-setpriority-PRIO_DARWIN_THREAD-0-PRIO_DARW.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0007-patch-llvm8-tools-dsymutil-symbolmap-use-older-cfname-and-fix-uuid-on-leopard.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0008-patch-lib-support-unix-path-copyfileclone-on-older-systems.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1002-MacPorts-Only-Fix-name-of-scan-view-executable-insid.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1004-Default-to-fragile-ObjC-runtime-when-targeting-darwi.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1005-Fixup-libstdc-header-search-paths-for-older-versions.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1007-Fix-float.h-to-work-on-Snow-Leopard-and-earlier.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1008-compilerrt-fuzzer-missingdefs.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    1009-compilerrt-sanitizer-missingdefs.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    2002-Work-around-no-libdispatch-on-10.6.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    3001-Fix-missing-long-long-math-prototypes-when-using-the.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    3002-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    3003-patch-libcxx-chrono-restore-steadyclock-fallback.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    leopard-no-asan.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    5000-patch-compilerrtdarwinutils-find-macosxsdkversion.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    5002-patch-toolchains-darwin-add-back-pre-10.6-link-libs.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-clang-fix-include-next-sysroot-cpp-headers.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    Fix-build-issues-pre-Lion-due-to-missing-a-strnlen.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    fix-build-clang-by-gcc10.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# sterilize MacPorts build environment; we want nothing picked up from MP prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.library_path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx_stdlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxxflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cppflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ldflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cxxflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_cppflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_ldflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.universal_args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.ccache    no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.distcc    no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# sterilize PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    PATH=${workpath}/bins:/usr/bin:/bin:/usr/sbin:/sbin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env-append    PATH=${workpath}/bins:/usr/bin:/bin:/usr/sbin:/sbin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.build_type    Release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.generator     {Unix Makefiles}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Install everything into libexec
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_prefix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/libexec/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_rpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    {*}[cmake::system_prefix_path] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_SYSTEM_PREFIX_PATH="${cmake.install_prefix}\;/usr"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-replace \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    {*}[cmake::rpath_flags] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    {*}[cmake::module_path]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    {*}[cmake::ccaching]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pre_args-delete \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_NAME_DIR="${cmake.install_prefix}/lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${os.major} == 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Building Xray forces build of sanitizer_common, even if
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # COMPILER_RT_BUILD_SANITIZERS=OFF, and this fails on 10.10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # TODO: See why sanitizer_common fails on 10.10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCOMPILER_RT_BUILD_XRAY=OFF
</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 {${os.major} <= 14} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We unfortunately don't have an option to just turn off tsan
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # https://llvm.org/bugs/show_bug.cgi?id=27715
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCOMPILER_RT_BUILD_SANITIZERS=OFF
</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 {${os.major} <= 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # xpc.h available 10.7 but doesn't support nullable features
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # xpc.h works currently on 10.8+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # toggle enabled in https://reviews.llvm.org/D59808
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCLANGD_BUILD_XPC=OFF
</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 {${os.major} <= 10} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # avoid need for thread_local_storage
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCLANG_ENABLE_CLANGD=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_ENABLE_BACKTRACES=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # reexported_symbols_list is available on 10.7+ only, used by libcxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    5004-patch-libcxx-reexport-symbols-lionorgreater-only.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # the libcxx installed by MacPorts on darwin 10 and less does not correspond to Apple's builtin libcxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    5005-MacPorts-only-patch-libcxx-includes-disable-availability-tests.diff
</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 {${os.major} <= 9} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # TO DO: the blocks functionality can be replaced by libblocksruntime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # this might be integrated into clang on < 10.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    leopard-no-blocks.patch
</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;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCLANG_ENABLE_ARCMT=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCLANG_ENABLE_STATIC_ANALYZER=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DDARWIN_PREFER_PUBLIC_SDK=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_BINDINGS_LIST=none \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_BUILD_UTILS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_ENABLE_PROJECTS="clang\;compiler-rt" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_BENCHMARKS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_DOCS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_EXAMPLES=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_GO_TESTS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_TESTS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_INCLUDE_UTILS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DLLVM_TARGETS_TO_BUILD="AArch64\;X86" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DPYTHON_EXECUTABLE=${prefix}/libexec/python27-bootstrap/bin/python2.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${configure.sdkroot} ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DDARWIN_osx_SYSROOT="${configure.sdkroot}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DDEFAULT_SYSROOT="${configure.sdkroot}"
</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 {${os.major} <= 18} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # on systems that might build i386, we need atomic builtins
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://trac.macports.org/ticket/58712
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF
</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 {${os.major} < 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant emulated_tls description { enable c11/c++11 thread_local_storage support on older systems using emulated-tls } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # use emulated-tls to support thread_local on systems prior to 10.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    9000-patch-llvm-7.0-support-emulated-tls.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    9000-patch-clang-7.0-support-emulated-tls.diff
</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;'>+    default_variants-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    +emulated_tls
</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;'>+# Be default Catalina and Mojave support a single arch at MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.major} < 18 || ${os.major} > 19} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    default_variants-append     +universal
</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;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    file mkdir ${workpath}/bins
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set gcc [open "${workpath}/bins/gcc" w 0755]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts ${gcc} "#!/bin/sh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts ${gcc} "arch -arch $\{BUILD_ARCH:-${build_arch}\} ${prefix}/libexec/gcc10-bootstrap/bin/gcc \$@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    close ${gcc}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set gxx [open "${workpath}/bins/g++" w 0755]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts ${gxx} "#!/bin/sh"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts ${gxx} "arch -arch $\{BUILD_ARCH:-${build_arch}\} ${prefix}/libexec/gcc10-bootstrap/bin/g++ \$@"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    close ${gxx}
</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;'>+configure.cc        ${workpath}/bins/gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx       ${workpath}/bins/g++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${universal_possible} && [variant_isset universal]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach arch ${universal_archs_supported} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend merger_configure_env(${arch}) BUILD_ARCH=${arch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend merger_build_env(${arch}) BUILD_ARCH=${arch}
</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;'>+merger_arch_flag            yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+merger_arch_compiler        yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+merger_must_run_binaries    yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    system "ditto ${worksrcpath}/projects/libcxx/include ${destroot}${cmake.install_prefix}/include/c++/v1"
</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;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+To use this bootstrap version of clang instead of the default compiler, add the \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+following lines to the Portfile:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append    port:${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cc            \$\{prefix\}/libexec/${name}/bin/clang
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxx           \$\{prefix\}/libexec/${name}/bin/clang++
</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;'>+livecheck.type      none
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0002-Define-EXC_MASK_CRASH-and-MACH_EXCEPTION_CODES-if-th.patch b/lang/clang-11-bootstrap/files/0002-Define-EXC_MASK_CRASH-and-MACH_EXCEPTION_CODES-if-th.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5c22622a722
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0002-Define-EXC_MASK_CRASH-and-MACH_EXCEPTION_CODES-if-th.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 55278bd7f154686d9b9b8e31e4e526f8584468f6 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: Sun, 18 Jan 2015 11:18:13 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2/6] Define EXC_MASK_CRASH and MACH_EXCEPTION_CODES if they're
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ not defined in the SDK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The 10.4 SDK does not define these macros
</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/Support/Unix/Signals.inc | 9 +++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 9 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/lib/Support/Unix/Signals.inc macports_master/lib/Support/Unix/Signals.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ec3935928d2..529bbfb34c2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/lib/Support/Unix/Signals.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/lib/Support/Unix/Signals.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -565,6 +565,15 @@ void llvm::sys::PrintStackTraceOnErrorSignal(StringRef Argv0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   AddSignalHandler(PrintStackTraceSignalHandler, nullptr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__APPLE__) && ENABLE_CRASH_OVERRIDES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* These aren't defined in the 10.4 SDK, so provide them here */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef EXC_MASK_CRASH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define EXC_MASK_CRASH 0x400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef MACH_EXCEPTION_CODES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MACH_EXCEPTION_CODES 0x80000000
</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;'>+   // Environment variable to disable any kind of crash dialog.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (DisableCrashReporting || getenv("LLVM_DISABLE_CRASH_REPORT")) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     mach_port_t self = mach_task_self();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0003-MacPorts-Only-Don-t-embed-the-deployment-target-in-t.patch b/lang/clang-11-bootstrap/files/0003-MacPorts-Only-Don-t-embed-the-deployment-target-in-t.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a698bfb8741
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0003-MacPorts-Only-Don-t-embed-the-deployment-target-in-t.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,33 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 9b6ac68dbf1643543a3f1c4287255406069f061a 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: Sat, 17 Jan 2015 16:41:30 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3/6] MacPorts Only: Don't embed the deployment target in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm when using -fno-integrated-as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http://llvm.org/bugs/show_bug.cgi?id=21636
</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/CodeGen/AsmPrinter/AsmPrinter.cpp | 6 ++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/lib/CodeGen/AsmPrinter/AsmPrinter.cpp macports_master/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7adc59d096f..336d1384b8d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -272,8 +272,10 @@ bool AsmPrinter::doInitialization(Module &M) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // alternative is duplicated code in each of the target asm printers that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // use the directive, where it would need the same conditionalization
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // anyway.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  const Triple &Target = TM.getTargetTriple();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  OutStreamer->emitVersionForTarget(Target, M.getSDKVersion());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (MAI->useIntegratedAssembler()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const Triple &Target = TM.getTargetTriple();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    OutStreamer->emitVersionForTarget(Target, M.getSDKVersion());
</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;'>+   // Allow the target to emit any magic that it wants at the start of the file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   EmitStartOfAsmFile(M);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0004-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch b/lang/clang-11-bootstrap/files/0004-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..bb221aad0f4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0004-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,70 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e37fcfbad830c9bfe7375847f230f69899360444 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: Tue, 20 Dec 2016 12:41:21 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 4/6] Fix build issues pre-Lion due to missing a strnlen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ definition
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://trac.macports.org/ticket/51520
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://llvm.org/bugs/show_bug.cgi?id=27714
</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/ObjectYAML/MachOYAML.cpp  | 14 ++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tools/obj2yaml/macho2yaml.cpp | 16 +++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 29 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/lib/ObjectYAML/MachOYAML.cpp macports_master/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d12f12cf443..57464def3da 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstdint>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstring>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MachOYAML::LoadCommand::~LoadCommand() = default;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/tools/obj2yaml/macho2yaml.cpp macports_master/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 63e81686632..3c9b0cf8748 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,7 +14,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/ErrorHandling.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/LEB128.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <string.h> // for memcpy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <string.h> // for memcpy abd strnlen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace llvm;
</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;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0005-Threading-Only-call-pthread_setname_np-on-SnowLeopar.patch b/lang/clang-11-bootstrap/files/0005-Threading-Only-call-pthread_setname_np-on-SnowLeopar.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..292b4f778cb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0005-Threading-Only-call-pthread_setname_np-on-SnowLeopar.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From fc3f9d69c4a99764af0885335c10e5286be351e9 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: Wed, 27 Dec 2017 23:05:43 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 5/6] Threading: Only call pthread_setname_np() on SnowLeopard+
</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/Support/Unix/Threading.inc | 3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 3 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/lib/Support/Unix/Threading.inc macports_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ed9a9656305..e8f9a13860f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -14,6 +14,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/ADT/Twine.h"
</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;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_init.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <mach/mach_port.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -153,8 +154,10 @@ void llvm::set_thread_name(const Twine &Name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ::pthread_setname_np(::pthread_self(), "%s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const_cast<char *>(NameStr.data()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ::pthread_setname_np(NameStr.data());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</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;'>+ void llvm::get_thread_name(SmallVectorImpl<char> &Name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0006-Only-call-setpriority-PRIO_DARWIN_THREAD-0-PRIO_DARW.patch b/lang/clang-11-bootstrap/files/0006-Only-call-setpriority-PRIO_DARWIN_THREAD-0-PRIO_DARW.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..de0a8100a80
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0006-Only-call-setpriority-PRIO_DARWIN_THREAD-0-PRIO_DARW.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From e6f64b0058a576c78f7ad4dee747c269b0444006 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, 4 Jul 2019 13:23:19 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 6/6] Only call setpriority(PRIO_DARWIN_THREAD, 0,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PRIO_DARWIN_BG) if it is available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Tiger and earlier versions of darwin do not support this.
</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/Support/Unix/Threading.inc | 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 llvm_master/lib/Support/Unix/Threading.inc macports_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e8f9a13860f..e731f750c1d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/lib/Support/Unix/Threading.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -237,7 +237,7 @@ SetThreadPriorityResult llvm::set_thread_priority(ThreadPriority Priority) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              &priority)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              ? SetThreadPriorityResult::SUCCESS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              : SetThreadPriorityResult::FAILURE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif defined(__APPLE__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif defined(__APPLE__) && defined(PRIO_DARWIN_THREAD) && defined(PRIO_DARWIN_BG)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpriority.2.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // When setting a thread into background state the scheduling priority is set
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // to lowest value, disk and network IO are throttled. Network IO will be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0007-patch-llvm8-tools-dsymutil-symbolmap-use-older-cfname-and-fix-uuid-on-leopard.diff b/lang/clang-11-bootstrap/files/0007-patch-llvm8-tools-dsymutil-symbolmap-use-older-cfname-and-fix-uuid-on-leopard.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..122d21e7d05
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0007-patch-llvm8-tools-dsymutil-symbolmap-use-older-cfname-and-fix-uuid-on-leopard.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,23 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/dsymutil/SymbolMap.cpp b/tools/dsymutil/SymbolMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cab9374a..5c2377e4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/dsymutil/SymbolMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/dsymutil/SymbolMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,8 +18,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <CoreFoundation/CoreFoundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <uuid/uuid.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* declare a missing reference not found in SDK < 10.6 for function called below */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef char * uuid_string_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++typedef struct __CFError * CFErrorRef;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CFPropertyListCreateWithStream(A,B,C,D,E,F) CFPropertyListCreateFromStream(A,B,C,D,E,F)
</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;'>+ #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;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace dsymutil {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/0008-patch-lib-support-unix-path-copyfileclone-on-older-systems.diff b/lang/clang-11-bootstrap/files/0008-patch-lib-support-unix-path-copyfileclone-on-older-systems.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d3523285757
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/0008-patch-lib-support-unix-path-copyfileclone-on-older-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git trunk/lib/Support/Unix/Path.inc.orig trunk/lib/Support/Unix/Path.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c64c0df..aaa2226 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- trunk/lib/Support/Unix/Path.inc.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ trunk/lib/Support/Unix/Path.inc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -38,6 +38,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @@ -38,6 +38,9 @@
</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;'>+ #include <sys/attr.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <copyfile.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef COPYFILE_CLONE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define COPYFILE_CLONE            (1<<24)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(__FreeBSD__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <osreldate.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if __FreeBSD_version >= 1300057
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1002-MacPorts-Only-Fix-name-of-scan-view-executable-insid.patch b/lang/clang-11-bootstrap/files/1002-MacPorts-Only-Fix-name-of-scan-view-executable-insid.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b96c3c393e8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1002-MacPorts-Only-Fix-name-of-scan-view-executable-insid.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c391f668b5a767a3d003cf3fc7b8b4e7a321a06e 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: Sat, 17 Jan 2015 17:55:27 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1002/1007] MacPorts Only: Fix name of scan-view executable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ inside scan-build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+http://trac.macports.org/ticket/35006
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/tools/clang/tools/scan-build/bin/scan-build.orig  2020-05-06 08:57:03.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/tools/clang/tools/scan-build/bin/scan-build       2020-05-07 12:22:47.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -969,6 +969,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ($Options{ViewResults} and -r "$Options{OutputDir}/index.html") {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         Diag "Viewing analysis results in '$Options{OutputDir}' using scan-view.\n";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         my $ScanView = Cwd::realpath("$RealBin/scan-view");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/bin/scan-view"); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/../scan-view/scan-view"); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (! -x $ScanView) { $ScanView = "scan-view"; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/../../scan-view/bin/scan-view"); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         exec $ScanView, "$Options{OutputDir}";
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1004-Default-to-fragile-ObjC-runtime-when-targeting-darwi.patch b/lang/clang-11-bootstrap/files/1004-Default-to-fragile-ObjC-runtime-when-targeting-darwi.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..83fedd24c0b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1004-Default-to-fragile-ObjC-runtime-when-targeting-darwi.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a4f95a5ec1e6d615dbb246d3577735a3575d1179 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: Tue, 20 Jan 2015 00:09:16 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1004/1007] Default to fragile ObjC runtime when targeting
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ darwin/ppc
</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/Driver/ToolChains/Darwin.h | 6 ++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/tools/clang/lib/Driver/ToolChains/Darwin.h macports_master/tools/clang/lib/Driver/ToolChains/Darwin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2dc7c85880..639853df05 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/tools/clang/lib/Driver/ToolChains/Darwin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/tools/clang/lib/Driver/ToolChains/Darwin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -229,8 +229,10 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool IsEncodeExtendedBlockSignatureDefault() const override { return true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool IsObjCNonFragileABIDefault() const override {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // Non-fragile ABI is default for everything but i386.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return getTriple().getArch() != llvm::Triple::x86;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Non-fragile ABI is default for legacy architectures
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return getTriple().getArch() != llvm::Triple::x86 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           getTriple().getArch() != llvm::Triple::ppc &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           getTriple().getArch() != llvm::Triple::ppc64;
</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;'>+   bool UseObjCMixedDispatch() const override { return true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1005-Fixup-libstdc-header-search-paths-for-older-versions.patch b/lang/clang-11-bootstrap/files/1005-Fixup-libstdc-header-search-paths-for-older-versions.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f26118e36fc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1005-Fixup-libstdc-header-search-paths-for-older-versions.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c5863b6661267780e20f529edf4831e1e65aa6a3 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: Mon, 31 Oct 2016 15:06:36 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1005/1007] Fixup libstdc++ header search paths for older
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ versions of Mac OS X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The subpaths were removed in Lion.  Leopard and Snow Leopard had darwin8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+symlinks for compatibility.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://llvm.org/bugs/show_bug.cgi?id=30858
</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/Driver/ToolChains/Darwin.cpp | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 2 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/tools/clang/lib/Driver/ToolChains/Darwin.cpp macports_master/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5de7d7132d..165a331fe5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1958,7 +1958,7 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 "powerpc-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 arch == llvm::Triple::ppc64 ? "ppc64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                "4.0.0", "powerpc-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                "4.0.0", "powerpc-apple-darwin8",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                  arch == llvm::Triple::ppc64 ? "ppc64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1970,7 +1970,7 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 arch == llvm::Triple::x86_64 ? "x86_64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 "4.0.0", "i686-apple-darwin8",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                 "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 arch == llvm::Triple::x86_64 ? "x86_64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case llvm::Triple::arm:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1006-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch b/lang/clang-11-bootstrap/files/1006-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..fce3d3e1ab7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1006-Fix-build-issues-pre-Lion-due-to-missing-a-strnlen-d.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,42 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 175e835fb2403a9fe6a620c9a663b3045547dfe6 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: Tue, 20 Dec 2016 15:53:39 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1006/1007] Fix build issues pre-Lion due to missing a strnlen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ definition
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://trac.macports.org/ticket/51520
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://llvm.org/bugs/show_bug.cgi?id=27714
</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/Lex/HeaderMap.cpp | 14 ++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 14 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/tools/clang/lib/Lex/HeaderMap.cpp macports_master/tools/clang/lib/Lex/HeaderMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e0bf58b675..1db3380602 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/tools/clang/lib/Lex/HeaderMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/tools/clang/lib/Lex/HeaderMap.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <memory>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace clang;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// HashHMapKey - This is the 'well known' hash function required by the file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// format, used to look up keys in the hash table.  The hash table uses simple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// linear probing based on this function.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1007-Fix-float.h-to-work-on-Snow-Leopard-and-earlier.patch b/lang/clang-11-bootstrap/files/1007-Fix-float.h-to-work-on-Snow-Leopard-and-earlier.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c9bc6a47b15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1007-Fix-float.h-to-work-on-Snow-Leopard-and-earlier.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,34 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From eae229c3da65a256c168f3e36e00448812acbf9c 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, 20 Jul 2017 17:15:35 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 1007/1007] Fix float.h to work on Snow Leopard and earlier
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://bugs.llvm.org/show_bug.cgi?id=31504
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://trac.macports.org/ticket/54135
</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/Headers/float.h | 7 ++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 6 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/tools/clang/lib/Headers/float.h macports_master/tools/clang/lib/Headers/float.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ed610b24aa..9dc3c0a12a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/tools/clang/lib/Headers/float.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/tools/clang/lib/Headers/float.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,7 +17,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * Also fall back on Darwin to allow additional definitions and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * implementation-defined values.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if (defined(__APPLE__) || (defined(__MINGW32__) || defined(_MSC_VER))) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__APPLE__) && __has_include(<Availability.h>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.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;'>++#if ((defined(__APPLE__) && __has_include(<Availability.h>) && (!defined(__MAC_OS_X_VERSION_MAX_ALLOWED) || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101300)) || (defined(__MINGW32__) || defined(_MSC_VER))) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     __STDC_HOSTED__ && __has_include_next(<float.h>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Prior to Apple's 10.7 SDK, float.h SDK header used to apply an extra level
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1008-compilerrt-fuzzer-missingdefs.diff b/lang/clang-11-bootstrap/files/1008-compilerrt-fuzzer-missingdefs.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..808b7a19a2e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1008-compilerrt-fuzzer-missingdefs.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/projects/compiler-rt/lib/fuzzer/FuzzerUtilDarwin.cpp.orig 2020-05-14 15:23:11.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/projects/compiler-rt/lib/fuzzer/FuzzerUtilDarwin.cpp      2020-05-14 15:31:23.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,6 +19,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/wait.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// add definition missing on older systems
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef POSIX_SPAWN_SETSIGMASK
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POSIX_SPAWN_SETSIGMASK          0x0008
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef POSIX_SPAWN_SETSIGDEF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define POSIX_SPAWN_SETSIGDEF           0x0004
</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;'>+ // There is no header for this on macOS so declare here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern "C" char **environ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/1009-compilerrt-sanitizer-missingdefs.diff b/lang/clang-11-bootstrap/files/1009-compilerrt-sanitizer-missingdefs.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b7420d6c420
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/1009-compilerrt-sanitizer-missingdefs.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp.orig  2020-05-14 15:13:45.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp       2020-05-14 15:17:03.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -111,6 +111,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define VM_MEMORY_SANITIZER 99
</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;'>++// From <sys/spawn.h> but not in some SDKs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef POSIX_SPAWN_CLOEXEC_DEFAULT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define   POSIX_SPAWN_CLOEXEC_DEFAULT     0x4000
</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;'>+ // XNU on Darwin provides a mmap flag that optimizes allocation/deallocation of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // giant memory regions (i.e. shadow memory regions).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define kXnuFastMmapFd 0x4
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/2002-Work-around-no-libdispatch-on-10.6.patch b/lang/clang-11-bootstrap/files/2002-Work-around-no-libdispatch-on-10.6.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..961e37dcf7c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/2002-Work-around-no-libdispatch-on-10.6.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,50 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 2002/2002] Work around no libdispatch on < 10.6
</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;'>+ lib/builtins/os_version_check.c | 13 ++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 12 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/projects/compiler-rt/lib/builtins/os_version_check.c macports_master/projects/compiler-rt/lib/builtins/os_version_check.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3794b9794..e3877449a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/projects/compiler-rt/lib/builtins/os_version_check.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/projects/compiler-rt/lib/builtins/os_version_check.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,8 +13,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <TargetConditionals.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dispatch/dispatch.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dlfcn.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23,7 +26,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // These three variables hold the host's OS version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static int32_t GlobalMajor, GlobalMinor, GlobalSubminor;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-static dispatch_once_t DispatchOnceCounter;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static dispatch_once_t DispatchOnceCounter;
</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;'>+ // We can't include <CoreFoundation/CoreFoundation.h> directly from here, so
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // just forward declare everything that we need from it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -203,7 +208,13 @@ Fail:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int32_t __isOSVersionAtLeast(int32_t Major, int32_t Minor, int32_t Subminor) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Populate the global version variables, if they haven't already.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   dispatch_once_f(&DispatchOnceCounter, NULL, parseSystemVersionPList);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  /* expensive procedure, only do once. GlobalMajor will not be 0 once run. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (GlobalMajor == 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    parseSystemVersionPList(NULL);
</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;'>+   if (Major < GlobalMajor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/3001-Fix-missing-long-long-math-prototypes-when-using-the.patch b/lang/clang-11-bootstrap/files/3001-Fix-missing-long-long-math-prototypes-when-using-the.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4d2e8f07d71
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/3001-Fix-missing-long-long-math-prototypes-when-using-the.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,51 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From f632702961bff5e226cc09aa9f992e53b95697b2 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: Sat, 17 Jan 2015 16:26:20 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3001/3002] Fix missing long long math prototypes when using
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ the Snow Leopard SDK
</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;'>+ include/math.h | 26 ++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 26 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/projects/libcxx/include/math.h macports_master/projects/libcxx/include/math.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 194df2077..14d14fe08 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/projects/libcxx/include/math.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/projects/libcxx/include/math.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -302,6 +302,32 @@ long double    truncl(long double x);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include_next <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# if __has_include(<Availability.h>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#  include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#  if __MAC_OS_X_VERSION_MAX_ALLOWED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    define __APPLE_BAD_MATH_H 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#  else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#    define __APPLE_BAD_MATH_H 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#  endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++# else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#  define __APPLE_BAD_MATH_H 1
</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;'>++# if __APPLE_BAD_MATH_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++/* These prototypes are incorrectly omitted from <math.h> on Snow Leopard despite being available */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++extern "C" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llrintl(long double);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llrint(double);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llrintf(float);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llroundl(long double);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llround(double);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    extern long long int llroundf(float);
</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;'>++#endif // __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // We support including .h headers inside 'extern "C"' contexts, so switch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/3002-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch b/lang/clang-11-bootstrap/files/3002-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..2a8ae64c330
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/3002-implement-atomic-using-mutex-lock_guard-for-64b-ops-.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,316 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 6c90424e035a24f3653b1b44f7239925b9e932ac Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: David Fang <fang@csl.cornell.edu>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 15 Jan 2014 21:27:34 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 3002/3002] implement atomic<> using mutex/lock_guard for 64b
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ops on 32b PPC not pretty, not fast, but passes atomic tests
</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/__atomic_locked | 240 ++++++++++++++++++++++++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include/atomic          |  46 ++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 286 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 include/__atomic_locked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/projects/libcxx/include/__atomic_locked macports_master/projects/libcxx/include/__atomic_locked
</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 000000000..f10dd747e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/projects/libcxx/include/__atomic_locked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,240 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// -*- C++ -*-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//===--------------------------- __atomic_locked --------------------------===//
</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 distributed under the University of Illinois Open Source
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// License. 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;'>++#ifndef _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <__mutex_base>     // for mutex and lock_guard
</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;'>++  This provides slow-but-usable lock-based atomic access to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  structures for which atomic lock-free functions are missing.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  This is motivated by the desire for 64b atomic operations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  on 32b PowerPC architectures.  
</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(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#pragma GCC system_header
</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;'>++template <class _Tp, bool = is_integral<_Tp>::value && !is_same<_Tp, bool>::value>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct __atomic_mutex_locked  // false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mutable _Atomic(_Tp) __a_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mutable mutex __lock_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef lock_guard<mutex>       lock_type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp& na(void) const { return reinterpret_cast<_Tp&>(__a_); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    volatile _Tp& na(void) const volatile { return reinterpret_cast<volatile _Tp&>(__a_); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool is_lock_free() const volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return false;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool is_lock_free() const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return false;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void store(_Tp __d, memory_order = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_)); na() = __d; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    void store(_Tp __d, memory_order = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_); na() = __d; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp load(memory_order = memory_order_seq_cst) const volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_)); return na(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp load(memory_order = memory_order_seq_cst) const _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_); return na(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    operator _Tp() const volatile _NOEXCEPT {return load();}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    operator _Tp() const _NOEXCEPT          {return load();}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp exchange(_Tp __d, memory_order = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // or use std::swap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          const _Tp ret = na(); na() = __d; return ret; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp exchange(_Tp __d, memory_order = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // or use std::swap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          const _Tp ret = na(); na() = __d; return ret; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               memory_order __s, memory_order __f) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (na() == __e) { na() = __d; return true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else { __e = na(); return false; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               memory_order __s, memory_order __f) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (na() == __e) { na() = __d; return true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else { __e = na(); return false; }
</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;'>++    // for now, _weak inditinguishable from _strong
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 memory_order __s, memory_order __f) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_weak(__e, __d, __s, __f);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 memory_order __s, memory_order __f) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_weak(__e, __d, __s, __f);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_weak(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_weak(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_weak(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_strong(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bool compare_exchange_strong(_Tp& __e, _Tp __d,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                 memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {return compare_exchange_strong(__e, __d, __m, __m);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked() _NOEXCEPT = default;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked() _NOEXCEPT : __a_() {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_CONSTEXPR __atomic_mutex_locked(_Tp __d) _NOEXCEPT : __a_(__d) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked(const __atomic_mutex_locked&) = delete;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) = delete;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) volatile = delete;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked(const __atomic_mutex_locked&);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked& operator=(const __atomic_mutex_locked&) volatile;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif  // _LIBCPP_HAS_NO_DELETED_FUNCTIONS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++};        // end struct __atomic_mutex_locked
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// atomic<Integral>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++template <class _Tp>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct __atomic_mutex_locked<_Tp, true>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    : public __atomic_mutex_locked<_Tp, false>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef __atomic_mutex_locked<_Tp, false> __base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef       typename __base::lock_type      lock_type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    using __base::__lock_;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    using __base::na;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    __atomic_mutex_locked() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_CONSTEXPR __atomic_mutex_locked(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() += __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_add(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() += __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() -= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_sub(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() -= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() &= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_and(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() &= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() |= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_or(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() |= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(const_cast<mutex&>(__lock_));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() ^= __op; return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp fetch_xor(_Tp __op, memory_order __m = memory_order_seq_cst) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        { const lock_type g(__lock_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const _Tp ret = na(); na() ^= __op; return ret;
</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_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator++(int) volatile _NOEXCEPT      {return fetch_add(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator++(int) _NOEXCEPT               {return fetch_add(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator--(int) volatile _NOEXCEPT      {return fetch_sub(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator--(int) _NOEXCEPT               {return fetch_sub(_Tp(1));}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator++() volatile _NOEXCEPT         {return fetch_add(_Tp(1)) + _Tp(1);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator++() _NOEXCEPT                  {return fetch_add(_Tp(1)) + _Tp(1);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator--() volatile _NOEXCEPT         {return fetch_sub(_Tp(1)) - _Tp(1);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator--() _NOEXCEPT                  {return fetch_sub(_Tp(1)) - _Tp(1);}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator+=(_Tp __op) volatile _NOEXCEPT {return fetch_add(__op) + __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator+=(_Tp __op) _NOEXCEPT          {return fetch_add(__op) + __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator-=(_Tp __op) volatile _NOEXCEPT {return fetch_sub(__op) - __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator-=(_Tp __op) _NOEXCEPT          {return fetch_sub(__op) - __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator&=(_Tp __op) volatile _NOEXCEPT {return fetch_and(__op) & __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator&=(_Tp __op) _NOEXCEPT          {return fetch_and(__op) & __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator|=(_Tp __op) volatile _NOEXCEPT {return fetch_or(__op) | __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator|=(_Tp __op) _NOEXCEPT          {return fetch_or(__op) | __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator^=(_Tp __op) volatile _NOEXCEPT {return fetch_xor(__op) ^ __op;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator^=(_Tp __op) _NOEXCEPT          {return fetch_xor(__op) ^ __op;}
</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  // _LIBCPP_ATOMIC_LOCKED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm_master/projects/libcxx/include/atomic macports_master/projects/libcxx/include/atomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index afb431eda..b87307977 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm_master/projects/libcxx/include/atomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ macports_master/projects/libcxx/include/atomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2439,4 +2439,50 @@ typedef atomic<uintmax_t> atomic_uintmax_t;
</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;'>++#if       defined(__ppc__) && !defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// specialize fallback implementation where 64b atomics are missing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <__atomic_locked>
</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;'>++template <>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct atomic<long long> : public __atomic_mutex_locked<long long>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef long long             _Tp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef __atomic_mutex_locked<_Tp> __base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    atomic() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator=(_Tp __d) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator=(_Tp __d) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {__base::store(__d); return __d;}
</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;'>++template <>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct atomic<unsigned long long> :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  public __atomic_mutex_locked<unsigned long long>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef unsigned long long            _Tp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    typedef __atomic_mutex_locked<_Tp> __base;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    atomic() _NOEXCEPT _LIBCPP_DEFAULT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_CONSTEXPR atomic(_Tp __d) _NOEXCEPT : __base(__d) {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator=(_Tp __d) volatile _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {__base::store(__d); return __d;}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _LIBCPP_INLINE_VISIBILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _Tp operator=(_Tp __d) _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {__base::store(__d); return __d;}
</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;'>++#endif    // defined(__ppc__) && !defined(__ppc64__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif  // _LIBCPP_ATOMIC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.21.0 (Apple Git-120)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/3003-patch-libcxx-chrono-restore-steadyclock-fallback.diff b/lang/clang-11-bootstrap/files/3003-patch-libcxx-chrono-restore-steadyclock-fallback.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..bf1363122a9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/3003-patch-libcxx-chrono-restore-steadyclock-fallback.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,87 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/projects/libcxx/src/chrono.cpp b/projects/libcxx/src/chrono.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f0a5d50..c7fbd90 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/projects/libcxx/src/chrono.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/projects/libcxx/src/chrono.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,6 +33,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #  endif // !defined(CLOCK_REALTIME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // defined(_LIBCPP_WIN32API)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // restore previous libcxx fallback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/mach_time.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;'>+ #if defined(__ELF__) && defined(_LIBCPP_LINK_RT_LIB)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #  pragma comment(lib, "rt")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -110,6 +115,8 @@ const bool steady_clock::is_steady;
</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;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !defined(CLOCK_MONOTONIC_RAW)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #  error "Building libc++ on Apple platforms requires CLOCK_MONOTONIC_RAW"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -127,6 +134,61 @@ steady_clock::now() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         __throw_system_error(errno, "clock_gettime(CLOCK_MONOTONIC_RAW) failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return time_point(seconds(tp.tv_sec) + nanoseconds(tp.tv_nsec));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // restore previous libcxx fallback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //   mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //   nanoseconds since the computer booted up.  MachInfo.numer and MachInfo.denom
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //   are run time constants supplied by the OS.  This clock has no relationship
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //   to the Gregorian calendar.  It's main use is as a high resolution timer.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // MachInfo.numer / MachInfo.denom is often 1 on the latest equipment.  Specialize
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //   for that case as an optimization.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ steady_clock::rep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ steady_simplified()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     return static_cast<steady_clock::rep>(mach_absolute_time());
</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;'>++ static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ double
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ compute_steady_factor()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     mach_timebase_info_data_t MachInfo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     mach_timebase_info(&MachInfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     return static_cast<double>(MachInfo.numer) / MachInfo.denom;
</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;'>++ static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ steady_clock::rep
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ steady_full()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     static const double factor = compute_steady_factor();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     return static_cast<steady_clock::rep>(mach_absolute_time() * factor);
</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;'>++ typedef steady_clock::rep (*FP)();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ init_steady_clock()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     mach_timebase_info_data_t MachInfo;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     mach_timebase_info(&MachInfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     if (MachInfo.numer == MachInfo.denom)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         return &steady_simplified;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     return &steady_full;
</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;'>++ steady_clock::time_point
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ steady_clock::now() _NOEXCEPT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     static FP fp = init_steady_clock();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     return time_point(duration(fp()));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // restore previous libcxx fallback
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(_LIBCPP_WIN32API)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/5000-patch-compilerrtdarwinutils-find-macosxsdkversion.diff b/lang/clang-11-bootstrap/files/5000-patch-compilerrtdarwinutils-find-macosxsdkversion.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..95737ab7dde
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/5000-patch-compilerrtdarwinutils-find-macosxsdkversion.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,30 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/projects/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake.orig  2020-04-20 17:14:08.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/projects/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake       2020-04-20 17:31:44.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,15 +66,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       ERROR_FILE /dev/null
</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;'>+-  if(NOT result_process EQUAL 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    message(FATAL_ERROR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      "Failed to determine SDK version for \"${sdk_name}\" SDK")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  # Check reported version looks sane.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (NOT "${var_internal}" MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+)?$")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    message(FATAL_ERROR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      "Reported SDK version \"${var_internal}\" does not look like a version")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(${var} ${var_internal} PARENT_SCOPE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endfunction()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -125,6 +116,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     # binaries.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ("${os}" STREQUAL "osx")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       find_darwin_sdk_version(macosx_sdk_version "macosx")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      # if there is no sdk that responds to "macosx" use the CMAKE passed in deployment target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if(NOT macosx_sdk_version)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        message(WARNING "Could not determine MacOSX SDK Version, trying CMAKE_OSX_DEPLOYMENT_TARGET")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        set(macosx_sdk_version CMAKE_OSX_DEPLOYMENT_TARGET)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ("${macosx_sdk_version}" VERSION_GREATER 10.15 OR "${macosx_sdk_version}" VERSION_EQUAL 10.15)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         message(STATUS "Disabling i386 slice for ${valid_archs}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         list(REMOVE_ITEM archs "i386")
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/5002-patch-toolchains-darwin-add-back-pre-10.6-link-libs.diff b/lang/clang-11-bootstrap/files/5002-patch-toolchains-darwin-add-back-pre-10.6-link-libs.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..a91b4cd4f6a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/5002-patch-toolchains-darwin-add-back-pre-10.6-link-libs.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,30 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+add back runtime libraries used on 10.4 and 10.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+removed in https://github.com/llvm/llvm-project/commit/3434ade2b7ca351b61522f7da4b55070d811b83f
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+related, the following code used to add libclang_rt_10.4.a to Tiger, but this library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+is no longer built in the runtime library collections. If building for Tiger, it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+may be required to replace this library at some point.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+The line below this, adding "builtins" adds libclang_rt.osx.a, does the second part of this.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+it may be easiest to just add Tiger functions to libclang_rt.osx.a directly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // if (isMacosxVersionLT(10, 5))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   //   AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.10.4.a");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   //   AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.osx.a");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/clang/lib/Driver/ToolChains/Darwin.cpp b/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index bea877ae9..26f1ad714 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1140,6 +1140,12 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         getTriple().getArch() != llvm::Triple::aarch64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       CmdArgs.push_back("-lgcc_s.1");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (isTargetMacOS()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (isMacosxVersionLT(10, 5))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      CmdArgs.push_back("-lgcc_s.10.4");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else if (isMacosxVersionLT(10, 6))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      CmdArgs.push_back("-lgcc_s.10.5");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   AddLinkRuntimeLib(Args, CmdArgs, "builtins");
</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;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/5004-patch-libcxx-reexport-symbols-lionorgreater-only.diff b/lang/clang-11-bootstrap/files/5004-patch-libcxx-reexport-symbols-lionorgreater-only.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..956c6f1fb51
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/5004-patch-libcxx-reexport-symbols-lionorgreater-only.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/projects/libcxx/src/CMakeLists.txt.orig      2021-02-21 12:43:30.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/projects/libcxx/src/CMakeLists.txt   2021-02-21 12:48:27.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,11 +209,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (LIBCXX_OSX_REEXPORT_LIBCXXABI_SYMBOLS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     target_link_libraries(cxx_shared PRIVATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "-Wl,-unexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++unexp.exp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi.v${LIBCXX_LIBCPPABI_VERSION}.exp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      "-Wl,-reexport_library,/usr/lib/libc++abi.dylib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "-Wl,-force_symbols_not_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/notweak.exp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "-Wl,-force_symbols_weak_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/weak.exp")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (LIBCXX_ENABLE_EXCEPTIONS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (LIBCXX_ENABLE_EXCEPTIONS AND (CMAKE_OSX_DEPLOYMENT_TARGET GREATER_EQUAL 10.7))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ("${CMAKE_OSX_ARCHITECTURES}" MATCHES "^(armv6|armv7|armv7s)$")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-exceptions.sjlj.exp")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       else()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -222,7 +222,9 @@
</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;'>+     if (NOT LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-new-delete.exp")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       if (CMAKE_OSX_DEPLOYMENT_TARGET GREATER_EQUAL 10.7)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         target_link_libraries(cxx_shared PRIVATE "-Wl,-reexported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/../lib/libc++abi-new-delete.exp")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     endif()
</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;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/5005-MacPorts-only-patch-libcxx-includes-disable-availability-tests.diff b/lang/clang-11-bootstrap/files/5005-MacPorts-only-patch-libcxx-includes-disable-availability-tests.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..6ada840f3e1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/5005-MacPorts-only-patch-libcxx-includes-disable-availability-tests.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm-10.0.0.src/projects/libcxx/include/__config.orig  2020-04-28 09:59:15.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm-10.0.0.src/projects/libcxx/include/__config       2020-04-28 10:00:33.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,6 +10,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef _LIBCPP_CONFIG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define _LIBCPP_CONFIG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// for MacPorts, our installed libcxx does not require Apple system
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Availability tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define _LIBCPP_DISABLE_AVAILABILITY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(_MSC_VER) && !defined(__clang__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #    define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/9000-patch-clang-7.0-support-emulated-tls.diff b/lang/clang-11-bootstrap/files/9000-patch-clang-7.0-support-emulated-tls.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0459630fd68
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/9000-patch-clang-7.0-support-emulated-tls.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/clang/lib/Basic/Targets/OSTargets.h b/tools/clang/lib/Basic/Targets/OSTargets.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d0354784..102605fe 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/Basic/Targets/OSTargets.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/Basic/Targets/OSTargets.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -93,7 +93,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     this->TLSSupported = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (Triple.isMacOSX())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      this->TLSSupported = !Triple.isMacOSXVersionLT(10, 7);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      this->TLSSupported = !Triple.isMacOSXVersionLT(10, 4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else if (Triple.isiOS()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       // 64-bit iOS supported it from 8 onwards, 32-bit device from 9 onwards,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       // 32-bit simulator from 10 onwards.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp b/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 00fff144..052924ab 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2255,7 +2255,7 @@ static void emitGlobalDtorWithCXAAtExit(CodeGenFunction &CGF,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const char *Name = "__cxa_atexit";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (TLS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const llvm::Triple &T = CGF.getTarget().getTriple();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    Name = T.isOSDarwin() ?  "_tlv_atexit" : "__cxa_thread_atexit";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Name = (T.isOSDarwin() && !T.isMacOSXVersionLT(10, 7)) ?  "_tlv_atexit" : "__cxa_thread_atexit";
</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;'>+   // We're assuming that the destructor function is something we can
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/9000-patch-llvm-7.0-support-emulated-tls.diff b/lang/clang-11-bootstrap/files/9000-patch-llvm-7.0-support-emulated-tls.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..b96a36ee21a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/9000-patch-llvm-7.0-support-emulated-tls.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/include/llvm/ADT/Triple.h b/include/llvm/ADT/Triple.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c95b16dd..ecc0f148 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/include/llvm/ADT/Triple.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/include/llvm/ADT/Triple.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -682,7 +682,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /// Tests whether the target uses emulated TLS as default.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool hasDefaultEmulatedTLS() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return isAndroid() || isOSOpenBSD() || isWindowsCygwinEnvironment() || isMacOSXVersionLT(10, 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;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/9001-macports-libstdcxx.diff b/lang/clang-11-bootstrap/files/9001-macports-libstdcxx.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..dbff9c9da3b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/9001-macports-libstdcxx.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,157 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- orig/tools/clang/include/clang/Lex/HeaderSearchOptions.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/include/clang/Lex/HeaderSearchOptions.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -184,6 +184,9 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /// Use libc++ instead of the default libstdc++.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   unsigned UseLibcxx : 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  /// Use MacPorts libstdc++ instead of default system libstdc++.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  unsigned UseMacPortsLibstdcxx : 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /// Whether header search information should be output as for -v.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   unsigned Verbose : 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp.orig      2020-05-06 08:57:03.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp   2020-05-07 12:51:38.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2078,8 +2078,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Opts.UseBuiltinIncludes = !Args.hasArg(OPT_nobuiltininc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Opts.UseStandardSystemIncludes = !Args.hasArg(OPT_nostdsysteminc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Opts.UseStandardCXXIncludes = !Args.hasArg(OPT_nostdincxx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (const Arg *A = Args.getLastArg(OPT_stdlib_EQ))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (const Arg *A = Args.getLastArg(OPT_stdlib_EQ)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Opts.UseLibcxx = (strcmp(A->getValue(), "libc++") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    Opts.UseMacPortsLibstdcxx = (strcmp(A->getValue(), "macports-libstdc++") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Opts.ResourceDir = std::string(Args.getLastArgValue(OPT_resource_dir));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // Canonicalize -fmodules-cache-path before storing it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- orig/tools/clang/lib/Frontend/InitHeaderSearch.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/lib/Frontend/InitHeaderSearch.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -110,7 +110,7 @@ static bool CanPrefixSysroot(StringRef Path) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(_WIN32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return !Path.empty() && llvm::sys::path::is_separator(Path[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return llvm::sys::path::is_absolute(Path);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return llvm::sys::path::is_absolute(Path) && Path.find("@@MACPORTS_GCC_INCLUDE_DIR@@")!=0;
</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;'>+--- orig/tools/clang/include/clang/Driver/ToolChain.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/include/clang/Driver/ToolChain.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -91,7 +91,8 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   enum CXXStdlibType {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CST_Libcxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CST_Libstdcxx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CST_Libstdcxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    CST_MacPortsLibstdcxx
</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;'>+   enum RuntimeLibType {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- orig/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1921,8 +1921,9 @@ void DarwinClang::AddClangCXXStdlibInclu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   llvm::StringRef Sysroot = GetHeaderSysroot(DriverArgs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  CXXStdlibType Type = GetCXXStdlibType(DriverArgs);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  switch (GetCXXStdlibType(DriverArgs)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  switch (Type) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case ToolChain::CST_Libcxx: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // On Darwin, libc++ is installed alongside the compiler in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // include/c++/v1, so get from '<install>/bin' to '<install>/include/c++/v1'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1943,6 +1944,7 @@ void DarwinClang::AddClangCXXStdlibInclu
</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;'>+   case ToolChain::CST_Libstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  case ToolChain::CST_MacPortsLibstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     llvm::SmallString<128> UsrIncludeCxx = Sysroot;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     llvm::sys::path::append(UsrIncludeCxx, "usr", "include", "c++");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1953,10 +1955,17 @@ void DarwinClang::AddClangCXXStdlibInclu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case llvm::Triple::ppc:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case llvm::Triple::ppc64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      IsBaseFound = AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                "4.2.1",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                "powerpc-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                arch == llvm::Triple::ppc64 ? "ppc64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      IsBaseFound = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (Type==ToolChain::CST_MacPortsLibstdcxx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, llvm::StringRef("@@MACPORTS_GCC_INCLUDE_DIR@@"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  "",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  "@@MACPORTS_HOST_NAME@@",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  arch == llvm::Triple::ppc64 ? "@@MACPORTS_GCC_SUBDIRECTORY_ppc64@@" : "@@MACPORTS_GCC_SUBDIRECTORY_ppc@@");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 "4.2.1",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 "powerpc-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 arch == llvm::Triple::ppc64 ? "ppc64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 "4.0.0", "powerpc-apple-darwin8",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                  arch == llvm::Triple::ppc64 ? "ppc64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1964,10 +1973,17 @@ void DarwinClang::AddClangCXXStdlibInclu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case llvm::Triple::x86:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     case llvm::Triple::x86_64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      IsBaseFound = AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                "4.2.1",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                "i686-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                                arch == llvm::Triple::x86_64 ? "x86_64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      IsBaseFound = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (Type==ToolChain::CST_MacPortsLibstdcxx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        IsBaseFound = AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, llvm::StringRef("@@MACPORTS_GCC_INCLUDE_DIR@@"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  "",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  "@@MACPORTS_HOST_NAME@@",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                  arch == llvm::Triple::x86_64 ? "@@MACPORTS_GCC_SUBDIRECTORY_x86_64@@" : "@@MACPORTS_GCC_SUBDIRECTORY_i386@@");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 "4.2.1",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 "i686-apple-darwin10",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                                 arch == llvm::Triple::x86_64 ? "x86_64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       IsBaseFound |= AddGnuCPlusPlusIncludePaths(DriverArgs, CC1Args, UsrIncludeCxx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                 "4.0.0", "i686-apple-darwin8",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                  arch == llvm::Triple::x86_64 ? "x86_64" : "");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2010,6 +2026,12 @@ void DarwinClang::AddCXXStdlibLibArgs(co
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case ToolChain::CST_Libstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  case ToolChain::CST_MacPortsLibstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (Type==ToolChain::CST_MacPortsLibstdcxx && getVFS().exists("@@MACPORTS_libstdc++@@")) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      CmdArgs.push_back("@@MACPORTS_libstdc++@@");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return;
</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;'>+     // Unfortunately, -lstdc++ doesn't always exist in the standard search path;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // it was previously found in the gcc lib dir. However, for all the Darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // platforms we care about it was -lstdc++.6, so we search for that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- orig/tools/clang/lib/Driver/ToolChains/Hexagon.cpp.orig        2020-05-06 08:57:03.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/lib/Driver/ToolChains/Hexagon.cpp      2020-05-07 12:43:10.000000000 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -639,6 +639,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return ToolChain::CST_Libstdcxx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   StringRef Value = A->getValue();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (Value == "macports-libstdc++")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ToolChain::CST_MacPortsLibstdcxx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (Value != "libstdc++" && Value != "libc++")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     getDriver().Diag(diag::err_drv_invalid_stdlib_name) << A->getAsString(Args);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- orig/tools/clang/lib/Driver/ToolChain.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ new/tools/clang/lib/Driver/ToolChain.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -766,6 +766,8 @@ ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return ToolChain::CST_Libcxx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if (LibName == "libstdc++")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return ToolChain::CST_Libstdcxx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (LibName == "macports-libstdc++")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ToolChain::CST_MacPortsLibstdcxx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else if (LibName == "platform")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return GetDefaultCXXStdlibType();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -847,6 +849,7 @@ void ToolChain::AddCXXStdlibLibArgs(const ArgList &Args,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case ToolChain::CST_Libstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  case ToolChain::CST_MacPortsLibstdcxx:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CmdArgs.push_back("-lstdc++");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/9003-patch-clang-7.0-default-to-libcxx-on-all-systems.diff b/lang/clang-11-bootstrap/files/9003-patch-clang-7.0-default-to-libcxx-on-all-systems.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0b089626117
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/9003-patch-clang-7.0-default-to-libcxx-on-all-systems.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git llvm-7.0.1.src/tools/clang/lib/Driver/ToolChains/Darwin.cpp llvm-7.0.1.src/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dc540688..64adab5c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- llvm-7.0.1.src/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ llvm-7.0.1.src/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -700,8 +700,8 @@ types::ID MachO::LookupTypeForExtension(StringRef Ext) const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool MachO::HasNativeLLVMSupport() const { return true; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ToolChain::CXXStdlibType Darwin::GetDefaultCXXStdlibType() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // Default to use libc++ on OS X 10.9+ and iOS 7+.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if ((isTargetMacOS() && !isMacosxVersionLT(10, 9)) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  // Default to use libc++ on OS X 10.4+ and iOS 7+.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if ((isTargetMacOS() && !isMacosxVersionLT(10, 4)) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        (isTargetIOSBased() && !isIPhoneOSVersionLT(7, 0)) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        isTargetWatchOSBased())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return ToolChain::CST_Libcxx;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/Fix-build-issues-pre-Lion-due-to-missing-a-strnlen.patch b/lang/clang-11-bootstrap/files/Fix-build-issues-pre-Lion-due-to-missing-a-strnlen.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..aaad4f7ac7d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/Fix-build-issues-pre-Lion-due-to-missing-a-strnlen.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,226 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/ObjectYAML/MachOEmitter.cpp b/lib/ObjectYAML/MachOEmitter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dec9c9f696..92d788c4b6 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/lib/ObjectYAML/MachOEmitter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/lib/ObjectYAML/MachOEmitter.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace llvm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ class MachOWriter {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/lib/ObjectYAML/MachOYAML.cpp b/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5a27d37cb7..755d446381 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/lib/ObjectYAML/MachOYAML.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstdint>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstring>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MachOYAML::LoadCommand::~LoadCommand() = default;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp b/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8e2bf36238..1e721e4307 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/llvm-objcopy/MachO/MachOLayoutBuilder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,6 +11,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/Errc.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/ErrorHandling.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace objcopy {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace macho {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/llvm-objcopy/MachO/MachOReader.cpp b/tools/llvm-objcopy/MachO/MachOReader.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 548a85bd49..69594b9e5e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/llvm-objcopy/MachO/MachOReader.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/llvm-objcopy/MachO/MachOReader.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,6 +13,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/Errc.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <memory>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace objcopy {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace macho {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/llvm-objcopy/MachO/Object.cpp b/tools/llvm-objcopy/MachO/Object.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index cdb97531fb..6dd6298e2a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/llvm-objcopy/MachO/Object.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/llvm-objcopy/MachO/Object.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,6 +10,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/ADT/SmallPtrSet.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unordered_set>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace objcopy {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace macho {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0f508f8dc0..712d9d5e64 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/llvm-readobj/ELFDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/llvm-readobj/ELFDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -80,6 +80,20 @@ using namespace ELF;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define ENUM_ENT_1(enum)                                                       \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   { #enum, #enum, ELF::enum }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <class ELFT> struct RelSymbol {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/llvm-readobj/ObjDumper.cpp b/tools/llvm-readobj/ObjDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index fc91d81f07..3b08720c69 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/llvm-readobj/ObjDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/llvm-readobj/ObjDumper.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,6 +20,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/raw_ostream.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <map>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace llvm {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static inline Error createError(const Twine &Msg) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/tools/obj2yaml/macho2yaml.cpp b/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 49347431b9..bfd6e56be2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/obj2yaml/macho2yaml.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -15,7 +15,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/ErrorHandling.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "llvm/Support/LEB128.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <string.h> // for memcpy
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <string.h> // for memcpy and strnlen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace llvm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/Lex/HeaderMap.cpp    2022-02-15 18:50:25.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/Lex/HeaderMap.cpp    2022-02-15 18:51:08.000000000 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -25,6 +25,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <memory>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace clang;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __APPLE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++static size_t strnlen(const char *s, size_t maxlen) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t l = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  while (l < maxlen && *s) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    l++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    s++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return l;
</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;'>++#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;'>+ /// HashHMapKey - This is the 'well known' hash function required by the file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// format, used to look up keys in the hash table.  The hash table uses simple
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /// linear probing based on this function.
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/fix-build-clang-by-gcc10.diff b/lang/clang-11-bootstrap/files/fix-build-clang-by-gcc10.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0a3596e60d2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/fix-build-clang-by-gcc10.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/DirectoryWatcher/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/DirectoryWatcher/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS support)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(DIRECTORY_WATCHER_SOURCES DirectoryScanner.cpp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(DIRECTORY_WATCHER_LINK_LIBS "")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if(APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if(APPLE AND NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   check_include_files("CoreServices/CoreServices.h" HAVE_CORESERVICES)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if(HAVE_CORESERVICES)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     list(APPEND DIRECTORY_WATCHER_SOURCES mac/DirectoryWatcher-mac.cpp)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/leopard-no-asan.patch b/lang/clang-11-bootstrap/files/leopard-no-asan.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..1f6fecb438e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/leopard-no-asan.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/projects/compiler-rt/cmake/config-ix.cmake       2015-11-29 22:17:04.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/projects/compiler-rt/cmake/config-ix.cmake       2015-11-29 22:19:16.000000000 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -361,9 +361,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       set(SANITIZER_MIN_OSX_VERSION ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if(SANITIZER_MIN_OSX_VERSION VERSION_LESS "10.7")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      message(FATAL_ERROR "macOS deployment target '${SANITIZER_MIN_OSX_VERSION}' is too old.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if(SANITIZER_MIN_OSX_VERSION VERSION_GREATER ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       message(WARNING "macOS deployment target '${SANITIZER_MIN_OSX_VERSION}' is too new, setting to '${DEFAULT_SANITIZER_MIN_OSX_VERSION}' instead.")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       set(SANITIZER_MIN_OSX_VERSION ${DEFAULT_SANITIZER_MIN_OSX_VERSION})
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/clang-11-bootstrap/files/leopard-no-blocks.patch b/lang/clang-11-bootstrap/files/leopard-no-blocks.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..06d40c42e32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/leopard-no-blocks.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 2500edffc9f1f44983927351eb60d4fe1cee4bcd 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: Wed, 7 Jan 2015 03:42:15 -0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Leopard: Default to -fno-blocks
</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/Driver/ToolChains.h | 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/Driver/ToolChains.h b/lib/Driver/ToolChains.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 876bb01..27aa2ee 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/tools/clang/lib/Driver/ToolChains/Darwin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/Driver/ToolChains/Darwin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -257,7 +257,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool IsBlocksDefault() const override {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // Always allow blocks on Apple; users interested in versioning are
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // expected to use /usr/include/Block.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool IsIntegratedAssemblerDefault() const override {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // Default integrated assembler to on for Apple's MachO targets.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.2.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/clang-11-bootstrap/files/patch-clang-fix-include-next-sysroot-cpp-headers.diff b/lang/clang-11-bootstrap/files/patch-clang-fix-include-next-sysroot-cpp-headers.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8f5d699f597
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/clang-11-bootstrap/files/patch-clang-fix-include-next-sysroot-cpp-headers.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,251 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+https://reviews.llvm.org/D89001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Currently, Clang looks for libc++ headers alongside the installation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+directory of Clang, and it also adds a search path for headers in the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-isysroot. This is problematic if headers are found in both the toolchain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+and in the sysroot, since #include_next will end up finding the libc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+headers in the sysroot instead of the intended system headers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This patch changes the logic such that if the toolchain contains libc++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+headers, no C++ header paths are added in the sysroot. However, if the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+toolchain does *not* contain libc++ headers, the sysroot is searched as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+usual.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This should not be a breaking change, since any code that previously
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+relied on some libc++ headers being found in the sysroot suffered from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the #include_next issue described above, which renders any libc++ header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+basically useless.
</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;'>+--- a/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/lib/Driver/ToolChains/Darwin.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2021,21 +2021,42 @@ void DarwinClang::AddClangCXXStdlibIncludeArgs(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   switch (GetCXXStdlibType(DriverArgs)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   case ToolChain::CST_Libcxx: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // On Darwin, libc++ is installed alongside the compiler in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // include/c++/v1, so get from '<install>/bin' to '<install>/include/c++/v1'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      llvm::SmallString<128> P = llvm::StringRef(getDriver().getInstalledDir());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      // Note that P can be relative, so we have to '..' and not parent_path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      llvm::sys::path::append(P, "..", "include", "c++", "v1");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      addSystemInclude(DriverArgs, CC1Args, P);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // On Darwin, libc++ can be installed in one of the following two places:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // 1. Alongside the compiler in         <install>/include/c++/v1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // 2. In a SDK (or a custom sysroot) in <sysroot>/usr/include/c++/v1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // The precendence of paths is as listed above, i.e. we take the first path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // that exists. Also note that we never include libc++ twice -- we take the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // first path that exists and don't send the other paths to CC1 (otherwise
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // include_next could break).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Check for (1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Get from '<install>/bin' to '<install>/include/c++/v1'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Note that InstallBin can be relative, so we use '..' instead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // parent_path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    llvm::SmallString<128> InstallBin =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        llvm::StringRef(getDriver().getInstalledDir()); // <install>/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    llvm::sys::path::append(InstallBin, "..", "include", "c++", "v1");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (getVFS().exists(InstallBin)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      addSystemInclude(DriverArgs, CC1Args, InstallBin);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } else if (DriverArgs.hasArg(options::OPT_v)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      llvm::errs() << "ignoring nonexistent directory \"" << InstallBin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   << "\"\n";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // Also add <sysroot>/usr/include/c++/v1 unless -nostdinc is used,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    // to match the legacy behavior in CC1.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (!DriverArgs.hasArg(options::OPT_nostdinc)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      llvm::SmallString<128> P = Sysroot;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      llvm::sys::path::append(P, "usr", "include", "c++", "v1");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      addSystemInclude(DriverArgs, CC1Args, P);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    // Otherwise, check for (2)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    llvm::SmallString<128> SysrootUsr = Sysroot;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    llvm::sys::path::append(SysrootUsr, "usr", "include", "c++", "v1");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (getVFS().exists(SysrootUsr)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      addSystemInclude(DriverArgs, CC1Args, SysrootUsr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } else if (DriverArgs.hasArg(options::OPT_v)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      llvm::errs() << "ignoring nonexistent directory \"" << SysrootUsr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   << "\"\n";
</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;'>++    // Otherwise, don't add any path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     break;
</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;'>+--- a/tools/clang/test/Driver/darwin-header-search-libcxx.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/tools/clang/test/Driver/darwin-header-search-libcxx.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -13,39 +13,57 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:   | FileCheck --check-prefix=CHECK-LIBCXX-NONE %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-NONE: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// Check with only headers alongside the installation (those should be used,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// but we should still add /usr/include/c++/v1 after to preserve legacy).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Check with only headers alongside the installation (those should be used).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     --sysroot="" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain --check-prefix=CHECK-LIBCXX-TOOLCHAIN-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-TOOLCHAIN-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-TOOLCHAIN-1: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-TOOLCHAIN-1: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// CHECK-LIBCXX-TOOLCHAIN-1: "-internal-isystem" "/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-TOOLCHAIN-1-NOT: "-internal-isystem" "/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -isysroot %S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain --check-prefix=CHECK-LIBCXX-TOOLCHAIN-2 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               -DSYSROOT=%S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-TOOLCHAIN-2 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-TOOLCHAIN-2: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-TOOLCHAIN-2: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-TOOLCHAIN-2-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Check with only headers in the sysroot (those should be used).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain_no_libcxx/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-SYSROOT-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-SYSROOT-1: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-SYSROOT-1: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-SYSROOT-1-NOT: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Check with both headers in the sysroot and headers alongside the installation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// (the headers in <sysroot> should be added after the toolchain headers).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// Ensure that both -isysroot and --sysroot work, and that isysroot has precedence.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// (the headers in the toolchain should be preferred over the <sysroot> headers).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Ensure that both -isysroot and --sysroot work, and that isysroot has precedence
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// over --sysroot.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               --check-prefix=CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -54,8 +72,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:     --sysroot %S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     --sysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               --check-prefix=CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -64,32 +82,46 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     --sysroot %S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               --check-prefix=CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-SYSROOT_AND_TOOLCHAIN-1-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// Make sure that using -nostdinc will drop the sysroot C++ library include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// path, but not the toolchain one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Make sure that using -nostdinc does not drop any C++ library include path.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// This behavior is strange, but it is compatible with the legacy CC1 behavior.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -target x86_64-apple-darwin16 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=platform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -nostdinc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:               --check-prefix=CHECK-LIBCXX-NOSTDINC %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// CHECK-LIBCXX-NOSTDINC: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// CHECK-LIBCXX-NOSTDINC: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// CHECK-LIBCXX-NOSTDINC-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-NOSTDINC-1 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-1: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-1-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-1: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -target x86_64-apple-darwin16 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -stdlib=platform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -nostdinc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-NOSTDINC-2 %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-2: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-2: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-NOSTDINC-2-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Make sure that using -nostdinc++ or -nostdlib will drop both the toolchain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // C++ include path and the sysroot one.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,7 +130,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -target x86_64-apple-darwin16 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -resource-dir=%S/Inputs/resource_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_usr_cxx_v1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -stdlib=platform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:     -nostdinc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_usr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -121,3 +153,26 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-NOSTDLIBINC: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-NOSTDLIBINC-NOT: "-internal-isystem" "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // CHECK-LIBCXX-NOSTDLIBINC-NOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Make sure we explain that we considered a path but didn't add it when it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// doesn't exist.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN: %clang -no-canonical-prefixes %s -fsyntax-only -v 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain_no_libcxx/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-MISSING-TOOLCHAIN %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-MISSING-TOOLCHAIN: ignoring nonexistent directory "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN: %clang -no-canonical-prefixes %s -fsyntax-only -v 2>&1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -target x86_64-apple-darwin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -ccc-install-dir %S/Inputs/basic_darwin_toolchain_no_libcxx/usr/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -isysroot %S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:     -stdlib=libc++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:   | FileCheck -DSYSROOT=%S/Inputs/basic_darwin_sdk_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               -DTOOLCHAIN=%S/Inputs/basic_darwin_toolchain_no_libcxx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// RUN:               --check-prefix=CHECK-LIBCXX-MISSING-BOTH %s
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-MISSING-BOTH: ignoring nonexistent directory "[[TOOLCHAIN]]/usr/bin/../include/c++/v1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// CHECK-LIBCXX-MISSING-BOTH: ignoring nonexistent directory "[[SYSROOT]]/usr/include/c++/v1"
</span></pre><pre style='margin:0'>

</pre>