aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2017-04-01 13:29:14 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2017-04-01 13:29:14 +0000
commitaef5472d832fb0e83e624316fe1d2ab45ddf315d (patch)
tree5dd7a5d10ff5e646cbcbf5c84cdc3931873bd35c
parentba900c6b38c30f16aebdc1fbe28883f6ab1a5860 (diff)
downloadports-aef5472d832fb0e83e624316fe1d2ab45ddf315d.tar.gz
ports-aef5472d832fb0e83e624316fe1d2ab45ddf315d.zip
Notes
-rw-r--r--devel/llvm37/Makefile456
-rw-r--r--devel/llvm37/distinfo14
-rw-r--r--devel/llvm37/files/clang-patch-fformat_extensions.diff45
-rw-r--r--devel/llvm37/files/clang-patch-static-analizer.diff5332
-rw-r--r--devel/llvm37/files/clang-patch-svn-25041622
-rw-r--r--devel/llvm37/files/clang-patch-tools_clang_lib_Headers_CMakeLists.txt31
-rw-r--r--devel/llvm37/files/clang-patch-tools_clang_tools_clang-format_clang-format.py11
-rw-r--r--devel/llvm37/files/compiler-rt-patch-svn-24905118
-rw-r--r--devel/llvm37/files/compiler-rt-patch-svn-29480630
-rw-r--r--devel/llvm37/files/compiler-rt-patch-tools_compiler-rt_cmake_config-ix.cmake13
-rw-r--r--devel/llvm37/files/lldb-patch-svn-24711636
-rw-r--r--devel/llvm37/files/lldb-patch-svn-249467538
-rw-r--r--devel/llvm37/files/llvm-wrapper.sh.in10
-rw-r--r--devel/llvm37/files/openmp-patch-bug3227925
-rw-r--r--devel/llvm37/files/openmp-patch-tools_openmp_runtime_tools_expand-vars.pl11
-rw-r--r--devel/llvm37/files/patch-llvm-svn-24359073
-rw-r--r--devel/llvm37/files/patch-svn-28318826
-rw-r--r--devel/llvm37/files/patch-tools_llvm-config_llvm-config.cpp14
-rw-r--r--devel/llvm37/files/patch-utils_llvm-build_llvmbuild_main.py39
-rw-r--r--devel/llvm37/pkg-descr8
-rw-r--r--devel/llvm37/pkg-plist2489
-rw-r--r--lang/clang37/Makefile19
-rw-r--r--lang/clang37/pkg-descr7
23 files changed, 0 insertions, 9267 deletions
diff --git a/devel/llvm37/Makefile b/devel/llvm37/Makefile
deleted file mode 100644
index d5bc595c9c9b..000000000000
--- a/devel/llvm37/Makefile
+++ /dev/null
@@ -1,456 +0,0 @@
-# $FreeBSD$
-
-PORTNAME= llvm
-DISTVERSION= 3.7.1
-PORTREVISION= 5
-CATEGORIES= devel lang
-MASTER_SITES= http://llvm.org/${PRE_}releases/${LLVM_RELEASE}/${RCDIR}
-DISTNAME= ${PORTNAME}-${DISTVERSION}.src
-DISTFILES= ${PORTNAME}-${DISTVERSION}.src${EXTRACT_SUFX}
-PKGNAMESUFFIX= ${LLVM_SUFFIX}
-
-MAINTAINER= brooks@FreeBSD.org
-COMMENT= LLVM and Clang
-
-LLVM_RELEASE= ${DISTVERSION:C/rc.*//}
-RCDIR= ${DISTVERSION:S/${LLVM_RELEASE}//:C|(rc.*)|\1/|}
-PRE_= ${DISTVERSION:C/.*rc.*/pre-/:N*[0-9]*}
-LLVM_SUFFIX= ${DISTVERSION:R:S/.//}
-
-LLVM_PREFIX= ${PREFIX}/llvm${LLVM_SUFFIX}
-DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${LLVM_SUFFIX}
-DATADIR= ${PREFIX}/share/${PORTNAME}${LLVM_SUFFIX}
-
-USES= cmake:outsource compiler:c++11-lib libedit ninja perl5 shebangfix tar:xz
-USE_LDCONFIG= ${LLVM_PREFIX}/lib
-
-SUB_FILES= llvm-wrapper.sh
-SUB_LIST= LLVM_PREFIX="${LLVM_PREFIX}" LLVM_SUFFIX="${LLVM_SUFFIX}"
-
-CMAKE_INSTALL_PREFIX= ${LLVM_PREFIX}
-CMAKE_ARGS= -DBUILD_SHARED_LIBS=ON
-# Following commit https://github.com/kitware/cmake/commit/956054
-# we need to either change the whole man-shuffle below, or simply
-# redefine CMAKE_INSTALL_MANDIR
-CMAKE_ARGS+= -DCMAKE_INSTALL_MANDIR:PATH="share/man"
-
-OPTIONS_DEFINE= CLANG COMPILER_RT DOCS EXTRAS LIT LLD LLDB
-OPTIONS_DEFINE_amd64= OPENMP GOLD
-OPTIONS_DEFAULT= CLANG EXTRAS LIT LLD LLDB
-OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD OPENMP
-OPTIONS_DEFAULT_i386= COMPILER_RT
-OPTIONS_SUB= yes
-
-CLANG_DESC= Build clang
-CLANG_EXTRA_PATCHES= \
- ${PATCHDIR}/clang-patch-fformat_extensions.diff \
- ${PATCHDIR}/clang-patch-static-analizer.diff \
- ${PATCHDIR}/clang-patch-tools_clang_lib_Headers_CMakeLists.txt \
- ${PATCHDIR}/clang-patch-tools_clang_tools_clang-format_clang-format.py \
- ${PATCHDIR}/clang-patch-svn-250416
-CLANG_CONFLICTS_INSTALL= clang-devel-3.[1234567]*
-CLANG_DISTFILES= cfe-${DISTVERSION}.src${EXTRACT_SUFX}
-CLANG_CMAKE_ON= -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
-CLANG_PORTDOCS= clang
-COMPILER_RT_DESC= Build compiler-rt (sanitizers)
-COMPILER_RT_DISTFILES= compiler-rt-${DISTVERSION}.src${EXTRACT_SUFX}
-COMPILER_RT_EXTRA_PATCHES= \
- ${PATCHDIR}/compiler-rt-patch-svn-249051 \
- ${PATCHDIR}/compiler-rt-patch-svn-294806
-DOCS_PORTDOCS= llvm
-DOCS_CMAKE_ON= -DLLVM_ENABLE_SPHINX=ON \
- -DSPHINX_WARNINGS_AS_ERRORS=OFF \
- -DLLVM_BUILD_DOCS=ON
-DOCS_PLIST_FILES= ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
-EXTRAS_DESC= Extra clang tools
-EXTRAS_IMPLIES= CLANG
-EXTRAS_DISTFILES= clang-tools-extra-${DISTVERSION}.src${EXTRACT_SUFX}
-LIT_DESC= Install lit and FileCheck test tools
-LLD_DESC= Install lld, the LLVM linker
-LLD_DISTFILES= lld-${DISTVERSION}.src${EXTRACT_SUFX}
-LLDB_DESC= Install lldb, the LLVM debugger (ignored on 9.x)
-LLDB_BUILD_DEPENDS= swig:devel/swig13
-LLDB_DISTFILES= lldb-${DISTVERSION}.src${EXTRACT_SUFX}
-OPENMP_DESC= Install libomp, the LLVM OpenMP runtime library
-OPENMP_DISTFILES= openmp-${DISTVERSION}.src${EXTRACT_SUFX}
-OPENMP_EXTRA_PATCHES= \
- ${PATCHDIR}/openmp-patch-bug32279 \
- ${PATCHDIR}/openmp-patch-tools_openmp_runtime_tools_expand-vars.pl
-GOLD_DESC= Build the LLVM Gold plugin for LTO
-GOLD_CMAKE_ON= -DLLVM_BINUTILS_INCDIR=${LOCALBASE}/include
-GOLD_BUILD_DEPENDS= ${LOCALBASE}/bin/ld.gold:devel/binutils
-
-# Emulate USE_GITHUB's ${WRKSRC_tag} to reduce diffs to ../llvm-devel
-.for option in CLANG COMPILER_RT EXTRAS LLD LLDB OPENMP
-WRKSRC_${option:tl}= ${WRKDIR}/${${option}_DISTFILES:S/${EXTRACT_SUFX}//}
-.endfor
-
-OPTIONS_SUB= yes
-
-DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
-
-PLIST_SUB+= LLVM_RELEASE=${LLVM_RELEASE}
-
-COMMANDS= bugpoint \
- llc \
- lli \
- llvm-ar \
- llvm-as \
- llvm-bcanalyzer \
- llvm-config \
- llvm-cov \
- llvm-diff \
- llvm-dis \
- llvm-dwarfdump \
- llvm-extract \
- llvm-link \
- llvm-mc \
- llvm-mcmarkup \
- llvm-nm \
- llvm-objdump \
- llvm-profdata \
- llvm-ranlib \
- llvm-readobj \
- llvm-rtdyld \
- llvm-size \
- llvm-stress \
- llvm-symbolizer \
- llvm-tblgen \
- macho-dump \
- opt
-FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
-
-STRIP_LIBS= BugpointPasses.so \
- LLVMHello.so \
- ${LIBNAME}.0 \
- libLTO.so
-
-EXTRAS_COMMANDS+= \
- clang-apply-replacements \
- clang-modernize \
- clang-rename \
- clang-tidy
-EXTRAS_LIBS= libclangApplyReplacements \
- libclangQuery \
- libclangRename \
- libclangTidy \
- libclangTidyGoogleModule \
- libclangTidyLLVMModule \
- libclangTidyMiscModule \
- libclangTidyReadabilityModule \
- libclangTidyUtils \
- libmodernizeCore
-EXTRAS_PATTERN= ${EXTRAS_COMMANDS:tW:C/ */|/g}|${EXTRAS_LIBS:tW:C/ */|/g}
-
-.include <bsd.port.options.mk>
-
-# keep in sync with /usr/src/lib/clang/clang.build.mk
-CONFIGURE_TARGET:=${ARCH:C/amd64/x86_64/:C/armv6hf/armv6/}-portbld-${OPSYS:tl}${OSREL}
-
-.if ${PORT_OPTIONS:MCLANG}
-COMMANDS+= clang \
- clang++ \
- clang-check \
- clang-cpp \
- clang-format \
- clang-tblgen \
- scan-build \
- scan-view
-MAN1SRCS+= clang.1 \
- scan-build.1
-CLANG_PATTERN= (c-index-test|clang|scan-|Reporter.py|ScanView.py|scanview.css|sorttable.js|startfile.py|-analyzer)
-.endif
-
-.if ${PORT_OPTIONS:MEXTRAS}
-COMMANDS+= ${EXTRAS_COMMANDS}
-SHEBANG_FILES+= tools/clang/tools/extra/clang-tidy/tool/clang-tidy-diff.py
-.endif
-
-.if ${PORT_OPTIONS:MCOMPILER_RT}
-SAN_LIBDIR=${LLVM_PREFIX}/lib/clang/${LLVM_RELEASE}/lib/freebsd
-.if ${ARCH} == "amd64"
-# Disable i386 variants on amd64.
-EXTRA_PATCHES+= \
- ${PATCHDIR}/compiler-rt-patch-tools_compiler-rt_cmake_config-ix.cmake
-PLIST_FILES+= \
- ${SAN_LIBDIR}/libclang_rt.asan-preinit-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.asan-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.asan-x86_64.a.syms \
- ${SAN_LIBDIR}/libclang_rt.asan-x86_64.so \
- ${SAN_LIBDIR}/libclang_rt.asan_cxx-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.asan_cxx-x86_64.a.syms \
- ${SAN_LIBDIR}/libclang_rt.builtins-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.dd-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.dyndd-x86_64.so \
- ${SAN_LIBDIR}/libclang_rt.lsan-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.profile-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.safestack-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.tsan-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.tsan-x86_64.a.syms \
- ${SAN_LIBDIR}/libclang_rt.tsan_cxx-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.tsan_cxx-x86_64.a.syms \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone-x86_64.a.syms \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone_cxx-x86_64.a \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone_cxx-x86_64.a.syms
-.elif ${ARCH} == "i386"
-PLIST_FILES+= \
- ${SAN_LIBDIR}/libclang_rt.asan-i386.a \
- ${SAN_LIBDIR}/libclang_rt.asan-i386.so \
- ${SAN_LIBDIR}/libclang_rt.asan-preinit-i386.a \
- ${SAN_LIBDIR}/libclang_rt.asan_cxx-i386.a \
- ${SAN_LIBDIR}/libclang_rt.builtins-i386.a \
- ${SAN_LIBDIR}/libclang_rt.profile-i386.a \
- ${SAN_LIBDIR}/libclang_rt.safestack-i386.a \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone-i386.a \
- ${SAN_LIBDIR}/libclang_rt.ubsan_standalone_cxx-i386.a
-.else
-BROKEN= no packaging data for sanitizers on ${ARCH}; disable COMPILER_RT
-.endif
-.endif
-
-.if ${PORT_OPTIONS:MLIT}
-MAN1SRCS+= lit.1 FileCheck.1
-_USES_PYTHON= python
-LIT_COMMANDS= lit llvm-lit FileCheck
-.endif
-
-.if ${PORT_OPTIONS:MLLD}
-COMMANDS+= lld
-PORTDOCS+= lld
-.endif
-
-.if ${PORT_OPTIONS:MLLDB}
-COMMANDS+= argdumper \
- lldb \
- lldb-mi \
- lldb-server
-_USES_PYTHON= python
-.endif
-
-.if ! ${OPTIONS_DEFINE:MGOLD}
-# Hack to disable GOLD in plist of unsupported architectures
-PLIST_SUB+= GOLD="@comment "
-.endif
-
-.if ! ${OPTIONS_DEFINE:MOPENMP}
-# Hack to disable OPENMP in plist of unsupported architectures
-PLIST_SUB+= OPENMP="@comment "
-.else
-.endif
-
-_USES_PYTHON?= python:build
-USES+= ${_USES_PYTHON}
-
-MAN1SRCS+= bugpoint.1 llc.1 lli.1 llvm-ar.1 llvm-as.1 \
- llvm-bcanalyzer.1 llvm-build.1 llvm-config.1 llvm-cov.1 \
- llvm-diff.1 llvm-dis.1 llvm-dwarfdump.1 \
- llvm-extract.1 llvm-link.1 llvm-nm.1 \
- llvm-profdata.1 llvm-readobj.1 llvm-stress.1 llvm-symbolizer.1 \
- opt.1 tblgen.1
-
-NOT_FOR_ARCH= ia64
-
-.include <bsd.port.pre.mk>
-
-.if ${PYTHON_REL} < 3400
-LLDB_BUILD_DEPENDS+= \
- ${PYTHON_PKGNAMEPREFIX}enum34>0:devel/py-enum34
-.endif
-
-.if ${PORT_OPTIONS:MLLDB} && ${PYTHON_REL} >= 3000
-BROKEN= LLDB does not build with Python 3
-.endif
-
-.if ${OPSYS} == "FreeBSD" && ${COMPILER_TYPE} != clang
-# Evil hack around gcc48 not providing a usable c++11 environment on 9.x
-PLIST_SUB:= ${PLIST_SUB:NLLDB=*} LLDB="@comment "
-.else
-.if ${PORT_OPTIONS:MLLDB}
-EXTRA_PATCHES+= \
- ${PATCHDIR}/lldb-patch-svn-247116 \
- ${PATCHDIR}/lldb-patch-svn-249467
-.endif
-.endif
-
-post-extract-CLANG-on:
- ${MV} ${WRKSRC_clang} ${PATCH_WRKSRC}/tools/clang
- ${MKDIR} ${PATCH_WRKSRC}/tools/clang/tools/scan-view/share
- cd ${PATCH_WRKSRC}/tools/clang/tools/scan-view && \
- ${MV} Resources/bugcatcher.ico Resources/FileRadar.scpt \
- Resources/GetRadarVersion.scpt share
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/sorttable.js
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/scanview.css
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/set-xcode-analyzer
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/scan-build.1
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/scan-build.*
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/ccc-analyzer.*
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-build/c++-analyzer.*
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-view/Reporter.py
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-view/ScanView.py
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-view/scan-view
- ${RM} ${PATCH_WRKSRC}/tools/clang/tools/scan-view/startfile.py
-
-post-extract-EXTRAS-on:
- ${MV} ${WRKSRC_extras} ${PATCH_WRKSRC}/tools/clang/tools/extra
-
-post-extract-COMPILER_RT-on:
- ${MV} ${WRKSRC_compiler_rt} ${PATCH_WRKSRC}/tools/compiler-rt
-
-post-extract-LLD-on:
- ${MV} ${WRKSRC_lld} ${PATCH_WRKSRC}/tools/lld
-
-post-extract-LLDB-on:
-.if ${OPSYS} != "FreeBSD" || ${COMPILER_TYPE} == clang
- ${MV} ${WRKSRC_lldb} ${PATCH_WRKSRC}/tools/lldb
-.endif
-
-post-extract-OPENMP-on:
- ${MV} ${WRKSRC_openmp} ${PATCH_WRKSRC}/tools/openmp
-
-post-patch:
- ${REINPLACE_CMD} -e 's|import lit|import lit${LLVM_SUFFIX}|' \
- -e 's|from lit|from lit${LLVM_SUFFIX}|' \
- -e 's|lit\.|lit${LLVM_SUFFIX}.|' \
- ${WRKSRC}/utils/lit/lit.py ${WRKSRC}/utils/lit/lit/*.py
-
-post-install:
- ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/llvm/MC/MCAnalysis
- ${INSTALL_SCRIPT} ${WRKDIR}/llvm-wrapper.sh \
- ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX}
-.for command in ${COMMANDS:C/^/XXXX/1:NXXXX*}
- ${LN} -f ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX} \
- ${STAGEDIR}${PREFIX}/bin/${command}${LLVM_SUFFIX}
-.endfor
-
-post-install-DOCS-on:
- ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/doc ${STAGEDIR}${DOCSDIR}
-.for _man in ${MAN1SRCS}
- ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/${_man} \
- ${STAGEDIR}${MANPREFIX}/man/man1/${_man:R}${LLVM_SUFFIX}.1
-.endfor
-.if ! ${PORT_OPTIONS:MLIT}
- ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/lit.1
- ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/FileCheck.1
-.endif
- ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/
- ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/
-
-post-install-LLDB-on:
-.if ${OPSYS} != "FreeBSD" || ${COMPILER_TYPE} == clang
- ${RM} ${STAGEDIR}${LLVM_PREFIX}/lib/python*/site-packages/lib
-.endif
-
-post-install-CLANG-on:
- ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/clang \
- ${STAGEDIR}${LLVM_PREFIX}/bin/clang-cpp
- ${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/clang-tblgen \
- ${STAGEDIR}${LLVM_PREFIX}/bin/
-
-post-install-LIT-on:
- ${INSTALL_SCRIPT} ${PATCH_WRKSRC}/utils/lit/lit.py \
- ${STAGEDIR}${LLVM_PREFIX}/bin/lit
- ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
- ${STAGEDIR}${LLVM_PREFIX}/bin/llvm-lit
- ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
- ${STAGEDIR}${PREFIX}/bin/lit${LLVM_SUFFIX}
- ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
- ${STAGEDIR}${PREFIX}/bin/llvm-lit${LLVM_SUFFIX}
- ${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
- ${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/*.py \
- ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
- ${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/FileCheck \
- ${STAGEDIR}${LLVM_PREFIX}/bin/
- ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/FileCheck \
- ${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
-
-TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
-regression-test: ${BUILD_COOKIE}
- if [ `${ID} -u` = 0 ]; then \
- ${CHOWN} -R nobody ${WRKSRC}/test; \
- su -m nobody -c ${TEST_CMD}; \
- else \
- ${SH} -c ${TEST_CMD}; \
- fi
-
-build-plist:
- ${RM} ${PLIST} ${PLIST}.tmp
-.for command in ${COMMANDS}
- ${ECHO_CMD} bin/${command}${LLVM_SUFFIX} >> ${PLIST}.tmp
-.endfor
-.for command in ${LIT_COMMANDS}
- ${ECHO_CMD} %%LIT%%bin/${command}${LLVM_SUFFIX} >> ${PLIST}.tmp
- ${ECHO_CMD} %%LIT%%${LLVM_PREFIX:S|${PREFIX}/||}/bin/${command} >> ${PLIST}.tmp
-.endfor
-
- ${FIND} ${STAGEDIR}${LLVM_PREFIX} -type f -o -type l | \
- ${GREP} -v 'lit$$' | ${GREP} -v 'FileCheck$$' | \
- ${GREP} -v man/man1 | ${SED} -e 's|${STAGEDIR}${PREFIX}/||' \
- -e 's|${LLVM_RELEASE}|%%LLVM_RELEASE%%|' \
- -e 's|release.cmake|%%CMAKE_BUILD_TYPE%%.cmake|' | \
- ${SORT} >> ${PLIST}.tmp
- ${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX} -type f | \
- ${SED} -e 's|${STAGEDIR}${PYTHON_SITELIBDIR}|%%LIT%%%%PYTHON_SITELIBDIR%%|' | \
- ${SORT} >> ${PLIST}.tmp
- awk '{ \
- if ($$0 ~ /${CLANG_PATTERN}/ && $$0 !~ /(omp.h|libclang_rt|sanitizer|blacklist.txt|${EXTRAS_PATTERN})/) {printf "%%%%CLANG%%%%"} \
- if ($$0 ~ /(sanitizer|blacklist.txt)/) {printf "%%%%COMPILER_RT%%%%"} \
- if ($$0 ~ /(${EXTRAS_PATTERN})/) {printf "%%%%EXTRAS%%%%"} \
- if ($$0 ~ /lld/ && $$0 !~ /lldb/) {printf "%%%%LLD%%%%"} \
- if ($$0 ~ /(argdumper|lldb)/) {printf "%%%%LLDB%%%%"} \
- if ($$0 ~ /lib.*omp/) {printf "%%%%OPENMP%%%%"} \
- if ($$0 ~ /LLVMgold/) {printf "%%%%GOLD%%%%"} \
- if ($$0 !~ /libclang_rt/) {print}}' ${PLIST}.tmp >> ${PLIST}
- ${RM} ${PLIST}.tmp
-
-check-commands:
-.for command in ${COMMANDS}
- test -e ${STAGEDIR}${LLVM_PREFIX}/bin/${command}
-.endfor
-
-.if make(svn-patch-clang)
-.if !defined(PATCH_REV)
-.error svn-patch-clang requires that PATCH_REV be set
-.endif
-_PATCH_FILE=${FILESDIR}/clang-patch-svn-${PATCH_REV}
-_LLVM_BASE=http://llvm.org/svn/llvm-project/cfe/trunk
-svn-patch-clang:
- svn log -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
- svn diff -c ${PATCH_REV} ${_LLVM_BASE} | \
- sed -E -e 's;^(---|\+\+\+) ;\1 tools/clang/;' >> ${_PATCH_FILE}
-.endif
-.if make(svn-patch-compiler-rt)
-.if !defined(PATCH_REV)
-.error svn-patch-compiler-rt requires that PATCH_REV be set
-.endif
-_PATCH_FILE=${FILESDIR}/compiler-rt-patch-svn-${PATCH_REV}
-_LLVM_BASE=http://llvm.org/svn/llvm-project/compiler-rt/trunk
-svn-patch-compiler-rt:
- svn log -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
- svn diff -c ${PATCH_REV} ${_LLVM_BASE} | \
- sed -E -e 's;^(---|\+\+\+) ;\1 tools/compiler-rt/;' >> ${_PATCH_FILE}
-.endif
-.if make(svn-patch-lldb)
-.if !defined(PATCH_REV)
-.error svn-patch-lldb requires that PATCH_REV be set
-.endif
-_PATCH_FILE=${FILESDIR}/lldb-patch-svn-${PATCH_REV}
-_LLVM_BASE=http://llvm.org/svn/llvm-project/lldb/trunk
-svn-patch-lldb:
- svn log -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
- svn diff -c ${PATCH_REV} ${_LLVM_BASE} | \
- sed -E -e 's;^(---|\+\+\+) ;\1 tools/lldb/;' >> ${_PATCH_FILE}
-.endif
-.if make(svn-patch-llvm)
-.if !defined(PATCH_REV)
-.error svn-patch-llvm requires that PATCH_REV be set
-.endif
-_PATCH_FILE=${FILESDIR}/patch-llvm-svn-${PATCH_REV}
-_LLVM_BASE=http://llvm.org/svn/llvm-project/llvm/trunk
-svn-patch-llvm:
- svn log -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
- svn diff -c ${PATCH_REV} ${_LLVM_BASE} >> ${_PATCH_FILE}
-.endif
-
-
-.include <bsd.port.post.mk>
diff --git a/devel/llvm37/distinfo b/devel/llvm37/distinfo
deleted file mode 100644
index fb86c8f825b5..000000000000
--- a/devel/llvm37/distinfo
+++ /dev/null
@@ -1,14 +0,0 @@
-SHA256 (llvm-3.7.1.src.tar.xz) = be7794ed0cec42d6c682ca8e3517535b54555a3defabec83554dbc74db545ad5
-SIZE (llvm-3.7.1.src.tar.xz) = 14592544
-SHA256 (cfe-3.7.1.src.tar.xz) = 56e2164c7c2a1772d5ed2a3e57485ff73ff06c97dff12edbeea1acc4412b0674
-SIZE (cfe-3.7.1.src.tar.xz) = 9110616
-SHA256 (compiler-rt-3.7.1.src.tar.xz) = 9d4769e4a927d3824bcb7a9c82b01e307c68588e6de4e7f04ab82d82c5af8181
-SIZE (compiler-rt-3.7.1.src.tar.xz) = 1181772
-SHA256 (clang-tools-extra-3.7.1.src.tar.xz) = 4a91edaccad1ce984c7c49a4a87db186b7f7b21267b2b03bcf4bd7820715bc6b
-SIZE (clang-tools-extra-3.7.1.src.tar.xz) = 277476
-SHA256 (lld-3.7.1.src.tar.xz) = a929cb44b45e3181a0ad02d8c9df1d3fc71e001139455c6805f3abf2835ef3ac
-SIZE (lld-3.7.1.src.tar.xz) = 586008
-SHA256 (lldb-3.7.1.src.tar.xz) = 9a0bc315ef55f44c98cdf92d064df0847f453ed156dd0ef6a87e04f5fd6a0e01
-SIZE (lldb-3.7.1.src.tar.xz) = 10650524
-SHA256 (openmp-3.7.1.src.tar.xz) = 9a702e20c247014f6de8c45b738c6ea586eca0559304520f565ac9a7cba4bf9a
-SIZE (openmp-3.7.1.src.tar.xz) = 2026988
diff --git a/devel/llvm37/files/clang-patch-fformat_extensions.diff b/devel/llvm37/files/clang-patch-fformat_extensions.diff
deleted file mode 100644
index 4e62dcf46d9f..000000000000
--- a/devel/llvm37/files/clang-patch-fformat_extensions.diff
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -ruN tools/clang/include/clang/Basic/LangOptions.def tools/clang/include/clang/Basic/LangOptions.def
---- tools/clang/include/clang/Basic/LangOptions.def 2015-07-30 22:47:41 UTC
-+++ tools/clang/include/clang/Basic/LangOptions.def
-@@ -114,6 +114,7 @@
- LANGOPT(RTTIData , 1, 1, "emit run-time type information data")
- LANGOPT(MSBitfields , 1, 0, "Microsoft-compatible structure layout")
- LANGOPT(Freestanding, 1, 0, "freestanding implementation")
-+LANGOPT(FormatExtensions , 1, 0, "FreeBSD format extensions")
- LANGOPT(NoBuiltin , 1, 0, "disable builtin functions")
- LANGOPT(NoMathBuiltin , 1, 0, "disable math builtin functions")
- LANGOPT(GNUAsm , 1, 1, "GNU-style inline assembly")
-diff -ruN tools/clang/include/clang/Driver/Options.td tools/clang/include/clang/Driver/Options.td
---- tools/clang/include/clang/Driver/Options.td 2015-07-30 22:47:41 UTC
-+++ tools/clang/include/clang/Driver/Options.td
-@@ -644,6 +644,8 @@
-
- def ffreestanding : Flag<["-"], "ffreestanding">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Assert that the compilation takes place in a freestanding environment">;
-+def fformat_extensions: Flag<["-"], "fformat-extensions">, Group<f_Group>, Flags<[CC1Option]>,
-+ HelpText<"Enable FreeBSD kernel specific format string extensions">;
- def fgnu_keywords : Flag<["-"], "fgnu-keywords">, Group<f_Group>, Flags<[CC1Option]>,
- HelpText<"Allow GNU-extension keywords regardless of language standard">;
- def fgnu89_inline : Flag<["-"], "fgnu89-inline">, Group<f_Group>, Flags<[CC1Option]>,
-diff -ruN tools/clang/lib/Driver/Tools.cpp tools/clang/lib/Driver/Tools.cpp
---- tools/clang/lib/Driver/Tools.cpp 2015-07-30 22:47:41 UTC
-+++ tools/clang/lib/Driver/Tools.cpp
-@@ -4045,6 +4045,7 @@
-
- // Forward -f (flag) options which we can pass directly.
- Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
-+ Args.AddLastArg(CmdArgs, options::OPT_fformat_extensions);
- Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
- Args.AddLastArg(CmdArgs, options::OPT_fstandalone_debug);
- Args.AddLastArg(CmdArgs, options::OPT_fno_standalone_debug);
-diff -ruN tools/clang/lib/Frontend/CompilerInvocation.cpp tools/clang/lib/Frontend/CompilerInvocation.cpp
---- tools/clang/lib/Frontend/CompilerInvocation.cpp 2015-07-30 22:47:41 UTC
-+++ tools/clang/lib/Frontend/CompilerInvocation.cpp
-@@ -1543,6 +1543,7 @@
- Opts.ShortWChar = Args.hasFlag(OPT_fshort_wchar, OPT_fno_short_wchar, false);
- Opts.ShortEnums = Args.hasArg(OPT_fshort_enums);
- Opts.Freestanding = Args.hasArg(OPT_ffreestanding);
-+ Opts.FormatExtensions = Args.hasArg(OPT_fformat_extensions);
- Opts.NoBuiltin = Args.hasArg(OPT_fno_builtin) || Opts.Freestanding;
- Opts.NoMathBuiltin = Args.hasArg(OPT_fno_math_builtin);
- Opts.AssumeSaneOperatorNew = !Args.hasArg(OPT_fno_assume_sane_operator_new);
diff --git a/devel/llvm37/files/clang-patch-static-analizer.diff b/devel/llvm37/files/clang-patch-static-analizer.diff
deleted file mode 100644
index f57e0efe04a4..000000000000
--- a/devel/llvm37/files/clang-patch-static-analizer.diff
+++ /dev/null
@@ -1,5332 +0,0 @@
-diff --git tools/clang/tools/CMakeLists.txt tools/clang/tools/CMakeLists.txt.orig
-index 891bf84..dba676a 100644
---- tools/clang/tools/CMakeLists.txt.orig
-+++ tools/clang/tools/CMakeLists.txt
-@@ -5,6 +5,8 @@ add_clang_subdirectory(driver)
- add_subdirectory(clang-format)
- add_subdirectory(clang-format-vs)
- add_subdirectory(clang-fuzzer)
-+add_subdirectory(scan-build)
-+add_subdirectory(scan-view)
-
- add_subdirectory(c-index-test)
- add_subdirectory(libclang)
-diff --git tools/clang/tools/scan-build/CMakeLists.txt tools/clang/tools/scan-build/CMakeLists.txt.orig
-new file mode 100644
-index 0000000..78c243d
---- /dev/null
-+++ tools/clang/tools/scan-build/CMakeLists.txt
-@@ -0,0 +1,82 @@
-+option(CLANG_INSTALL_SCANBUILD "Install the scan-build tool" ON)
-+
-+include(GNUInstallDirs)
-+
-+if (WIN32 AND NOT CYGWIN)
-+ set(BinFiles
-+ scan-build.bat)
-+ set(LibexecFiles
-+ ccc-analyzer.bat
-+ c++-analyzer.bat)
-+else()
-+ set(BinFiles
-+ scan-build)
-+ set(LibexecFiles
-+ ccc-analyzer
-+ c++-analyzer)
-+ if (APPLE)
-+ list(APPEND BinFiles
-+ set-xcode-analyzer)
-+ endif()
-+endif()
-+
-+set(ManPages
-+ scan-build.1)
-+
-+set(ShareFiles
-+ scanview.css
-+ sorttable.js)
-+
-+
-+if(CLANG_INSTALL_SCANBUILD)
-+ foreach(BinFile ${BinFiles})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/bin
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
-+ ${CMAKE_BINARY_DIR}/bin/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
-+ install(PROGRAMS bin/${BinFile} DESTINATION bin)
-+ endforeach()
-+
-+ foreach(LibexecFile ${LibexecFiles})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/libexec/${LibexecFile}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/libexec
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile}
-+ ${CMAKE_BINARY_DIR}/libexec/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/libexec/${LibexecFile})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/libexec/${LibexecFile})
-+ install(PROGRAMS libexec/${LibexecFile} DESTINATION libexec)
-+ endforeach()
-+
-+ foreach(ManPage ${ManPages})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage}
-+ ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man/${ManPage})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_MANDIR}/man1/${ManPage})
-+ install(PROGRAMS man/${ManPage} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
-+ endforeach()
-+
-+ foreach(ShareFile ${ShareFiles})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/share/scan-build
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile}
-+ ${CMAKE_BINARY_DIR}/share/scan-build/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/scan-build/${ShareFile})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-build/${ShareFile})
-+ install(FILES share/scan-build/${ShareFile} DESTINATION share/scan-build)
-+ endforeach()
-+
-+ add_custom_target(scan-build ALL DEPENDS ${Depends})
-+ set_target_properties(scan-build PROPERTIES FOLDER "Misc")
-+endif()
-diff --git tools/clang/tools/scan-build/Makefile tools/clang/tools/scan-build/Makefile.orig
-new file mode 100644
-index 0000000..23aa198
---- /dev/null
-+++ tools/clang/tools/scan-build/Makefile
-@@ -0,0 +1,53 @@
-+##===- tools/scan-build/Makefile ---------------------------*- Makefile -*-===##
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+
-+CLANG_LEVEL := ../..
-+
-+include $(CLANG_LEVEL)/../../Makefile.config
-+include $(CLANG_LEVEL)/Makefile
-+
-+ifeq ($(HOST_OS),MingW)
-+ Suffix := .bat
-+endif
-+
-+CLANG_INSTALL_SCANBUILD ?= 1
-+
-+ifeq ($(CLANG_INSTALL_SCANBUILD), 1)
-+ InstallTargets := $(ToolDir)/scan-build$(Suffix) \
-+ $(LibexecDir)/c++-analyzer$(Suffix) \
-+ $(LibexecDir)/ccc-analyzer$(Suffix) \
-+ $(ShareDir)/scan-build/scanview.css \
-+ $(ShareDir)/scan-build/sorttable.js \
-+ $(ShareDir)/man/man1/scan-build.1
-+
-+ ifeq ($(HOST_OS),Darwin)
-+ InstallTargets := $(InstallTargets) $(ToolDir)/set-xcode-analyzer
-+ endif
-+endif
-+
-+all:: $(InstallTargets)
-+
-+$(ToolDir)/%: bin/% Makefile $(ToolDir)/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'bin' directory..."
-+ $(Verb)cp $< $@
-+ $(Verb)chmod +x $@
-+
-+$(LibexecDir)/%: libexec/% Makefile $(LibexecDir)/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'libexec' directory..."
-+ $(Verb)cp $< $@
-+ $(Verb)chmod +x $@
-+
-+$(ShareDir)/man/man1/%: man/% Makefile $(ShareDir)/man/man1/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'man' directory..."
-+ $(Verb)cp $< $@
-+
-+$(ShareDir)/scan-build/%: share/scan-build/% Makefile $(ShareDir)/scan-build/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'share' directory..."
-+ $(Verb)cp $< $@
-+
-diff --git tools/clang/tools/scan-build/bin/scan-build tools/clang/tools/scan-build/bin/scan-build.orig
-new file mode 100755
-index 0000000..6a14484
---- /dev/null
-+++ tools/clang/tools/scan-build/bin/scan-build
-@@ -0,0 +1,1832 @@
-+#!/usr/bin/env perl
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+#
-+# A script designed to wrap a build so that all calls to gcc are intercepted
-+# and piped to the static analyzer.
-+#
-+##===----------------------------------------------------------------------===##
-+
-+use strict;
-+use warnings;
-+use FindBin qw($RealBin);
-+use Digest::MD5;
-+use File::Basename;
-+use File::Find;
-+use File::Copy qw(copy);
-+use File::Path qw( rmtree mkpath );
-+use Term::ANSIColor;
-+use Term::ANSIColor qw(:constants);
-+use Cwd qw/ getcwd abs_path /;
-+use Sys::Hostname;
-+use Hash::Util qw(lock_keys);
-+
-+my $Prog = "scan-build";
-+my $BuildName;
-+my $BuildDate;
-+
-+my $TERM = $ENV{'TERM'};
-+my $UseColor = (defined $TERM and $TERM =~ 'xterm-.*color' and -t STDOUT
-+ and defined $ENV{'SCAN_BUILD_COLOR'});
-+
-+# Portability: getpwuid is not implemented for Win32 (see Perl language
-+# reference, perlport), use getlogin instead.
-+my $UserName = HtmlEscape(getlogin() || getpwuid($<) || 'unknown');
-+my $HostName = HtmlEscape(hostname() || 'unknown');
-+my $CurrentDir = HtmlEscape(getcwd());
-+
-+my $CmdArgs;
-+
-+my $Date = localtime();
-+
-+# Command-line/config arguments.
-+my %Options = (
-+ Verbose => 0, # Verbose output from this script.
-+ AnalyzeHeaders => 0,
-+ OutputDir => undef, # Parent directory to store HTML files.
-+ HtmlTitle => basename($CurrentDir)." - scan-build results",
-+ IgnoreErrors => 0, # Ignore build errors.
-+ ViewResults => 0, # View results when the build terminates.
-+ ExitStatusFoundBugs => 0, # Exit status reflects whether bugs were found
-+ KeepEmpty => 0, # Don't remove output directory even with 0 results.
-+ EnableCheckers => {},
-+ DisableCheckers => {},
-+ UseCC => undef, # C compiler to use for compilation.
-+ UseCXX => undef, # C++ compiler to use for compilation.
-+ AnalyzerTarget => undef,
-+ StoreModel => undef,
-+ ConstraintsModel => undef,
-+ InternalStats => undef,
-+ OutputFormat => "html",
-+ ConfigOptions => [], # Options to pass through to the analyzer's -analyzer-config flag.
-+ ReportFailures => undef,
-+ AnalyzerStats => 0,
-+ MaxLoop => 0,
-+ PluginsToLoad => [],
-+ AnalyzerDiscoveryMethod => undef,
-+ OverrideCompiler => 0 # The flag corresponding to the --override-compiler command line option.
-+);
-+lock_keys(%Options);
-+
-+##----------------------------------------------------------------------------##
-+# Diagnostics
-+##----------------------------------------------------------------------------##
-+
-+sub Diag {
-+ if ($UseColor) {
-+ print BOLD, MAGENTA "$Prog: @_";
-+ print RESET;
-+ }
-+ else {
-+ print "$Prog: @_";
-+ }
-+}
-+
-+sub ErrorDiag {
-+ if ($UseColor) {
-+ print STDERR BOLD, RED "$Prog: ";
-+ print STDERR RESET, RED @_;
-+ print STDERR RESET;
-+ } else {
-+ print STDERR "$Prog: @_";
-+ }
-+}
-+
-+sub DiagCrashes {
-+ my $Dir = shift;
-+ Diag ("The analyzer encountered problems on some source files.\n");
-+ Diag ("Preprocessed versions of these sources were deposited in '$Dir/failures'.\n");
-+ Diag ("Please consider submitting a bug report using these files:\n");
-+ Diag (" http://clang-analyzer.llvm.org/filing_bugs.html\n")
-+}
-+
-+sub DieDiag {
-+ if ($UseColor) {
-+ print STDERR BOLD, RED "$Prog: ";
-+ print STDERR RESET, RED @_;
-+ print STDERR RESET;
-+ }
-+ else {
-+ print STDERR "$Prog: ", @_;
-+ }
-+ exit 1;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Print default checker names
-+##----------------------------------------------------------------------------##
-+
-+if (grep /^--help-checkers$/, @ARGV) {
-+ my @options = qx($0 -h);
-+ foreach (@options) {
-+ next unless /^ \+/;
-+ s/^\s*//;
-+ my ($sign, $name, @text) = split ' ', $_;
-+ print $name, $/ if $sign eq '+';
-+ }
-+ exit 0;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Declaration of Clang options. Populated later.
-+##----------------------------------------------------------------------------##
-+
-+my $Clang;
-+my $ClangSB;
-+my $ClangCXX;
-+my $ClangVersion;
-+
-+##----------------------------------------------------------------------------##
-+# GetHTMLRunDir - Construct an HTML directory name for the current sub-run.
-+##----------------------------------------------------------------------------##
-+
-+sub GetHTMLRunDir {
-+ die "Not enough arguments." if (@_ == 0);
-+ my $Dir = shift @_;
-+ my $TmpMode = 0;
-+ if (!defined $Dir) {
-+ $Dir = $ENV{'TMPDIR'} || $ENV{'TEMP'} || $ENV{'TMP'} || "/tmp";
-+ $TmpMode = 1;
-+ }
-+
-+ # Chop off any trailing '/' characters.
-+ while ($Dir =~ /\/$/) { chop $Dir; }
-+
-+ # Get current date and time.
-+ my @CurrentTime = localtime();
-+ my $year = $CurrentTime[5] + 1900;
-+ my $day = $CurrentTime[3];
-+ my $month = $CurrentTime[4] + 1;
-+ my $hour = $CurrentTime[2];
-+ my $min = $CurrentTime[1];
-+ my $sec = $CurrentTime[0];
-+
-+ my $TimeString = sprintf("%02d%02d%02d", $hour, $min, $sec);
-+ my $DateString = sprintf("%d-%02d-%02d-%s-$$",
-+ $year, $month, $day, $TimeString);
-+
-+ # Determine the run number.
-+ my $RunNumber;
-+
-+ if (-d $Dir) {
-+ if (! -r $Dir) {
-+ DieDiag("directory '$Dir' exists but is not readable.\n");
-+ }
-+ # Iterate over all files in the specified directory.
-+ my $max = 0;
-+ opendir(DIR, $Dir);
-+ my @FILES = grep { -d "$Dir/$_" } readdir(DIR);
-+ closedir(DIR);
-+
-+ foreach my $f (@FILES) {
-+ # Strip the prefix '$Prog-' if we are dumping files to /tmp.
-+ if ($TmpMode) {
-+ next if (!($f =~ /^$Prog-(.+)/));
-+ $f = $1;
-+ }
-+
-+ my @x = split/-/, $f;
-+ next if (scalar(@x) != 4);
-+ next if ($x[0] != $year);
-+ next if ($x[1] != $month);
-+ next if ($x[2] != $day);
-+ next if ($x[3] != $TimeString);
-+ next if ($x[4] != $$);
-+
-+ if ($x[5] > $max) {
-+ $max = $x[5];
-+ }
-+ }
-+
-+ $RunNumber = $max + 1;
-+ }
-+ else {
-+
-+ if (-x $Dir) {
-+ DieDiag("'$Dir' exists but is not a directory.\n");
-+ }
-+
-+ if ($TmpMode) {
-+ DieDiag("The directory '/tmp' does not exist or cannot be accessed.\n");
-+ }
-+
-+ # $Dir does not exist. It will be automatically created by the
-+ # clang driver. Set the run number to 1.
-+
-+ $RunNumber = 1;
-+ }
-+
-+ die "RunNumber must be defined!" if (!defined $RunNumber);
-+
-+ # Append the run number.
-+ my $NewDir;
-+ if ($TmpMode) {
-+ $NewDir = "$Dir/$Prog-$DateString-$RunNumber";
-+ }
-+ else {
-+ $NewDir = "$Dir/$DateString-$RunNumber";
-+ }
-+
-+ # Make sure that the directory does not exist in order to avoid hijack.
-+ if (-e $NewDir) {
-+ DieDiag("The directory '$NewDir' already exists.\n");
-+ }
-+
-+ mkpath($NewDir);
-+ return $NewDir;
-+}
-+
-+sub SetHtmlEnv {
-+
-+ die "Wrong number of arguments." if (scalar(@_) != 2);
-+
-+ my $Args = shift;
-+ my $Dir = shift;
-+
-+ die "No build command." if (scalar(@$Args) == 0);
-+
-+ my $Cmd = $$Args[0];
-+
-+ if ($Cmd =~ /configure/ || $Cmd =~ /autogen/) {
-+ return;
-+ }
-+
-+ if ($Options{Verbose}) {
-+ Diag("Emitting reports for this run to '$Dir'.\n");
-+ }
-+
-+ $ENV{'CCC_ANALYZER_HTML'} = $Dir;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# ComputeDigest - Compute a digest of the specified file.
-+##----------------------------------------------------------------------------##
-+
-+sub ComputeDigest {
-+ my $FName = shift;
-+ DieDiag("Cannot read $FName to compute Digest.\n") if (! -r $FName);
-+
-+ # Use Digest::MD5. We don't have to be cryptographically secure. We're
-+ # just looking for duplicate files that come from a non-malicious source.
-+ # We use Digest::MD5 because it is a standard Perl module that should
-+ # come bundled on most systems.
-+ open(FILE, $FName) or DieDiag("Cannot open $FName when computing Digest.\n");
-+ binmode FILE;
-+ my $Result = Digest::MD5->new->addfile(*FILE)->hexdigest;
-+ close(FILE);
-+
-+ # Return the digest.
-+ return $Result;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# UpdatePrefix - Compute the common prefix of files.
-+##----------------------------------------------------------------------------##
-+
-+my $Prefix;
-+
-+sub UpdatePrefix {
-+ my $x = shift;
-+ my $y = basename($x);
-+ $x =~ s/\Q$y\E$//;
-+
-+ if (!defined $Prefix) {
-+ $Prefix = $x;
-+ return;
-+ }
-+
-+ chop $Prefix while (!($x =~ /^\Q$Prefix/));
-+}
-+
-+sub GetPrefix {
-+ return $Prefix;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# UpdateInFilePath - Update the path in the report file.
-+##----------------------------------------------------------------------------##
-+
-+sub UpdateInFilePath {
-+ my $fname = shift;
-+ my $regex = shift;
-+ my $newtext = shift;
-+
-+ open (RIN, $fname) or die "cannot open $fname";
-+ open (ROUT, ">", "$fname.tmp") or die "cannot open $fname.tmp";
-+
-+ while (<RIN>) {
-+ s/$regex/$newtext/;
-+ print ROUT $_;
-+ }
-+
-+ close (ROUT);
-+ close (RIN);
-+ rename("$fname.tmp", $fname)
-+}
-+
-+##----------------------------------------------------------------------------##
-+# AddStatLine - Decode and insert a statistics line into the database.
-+##----------------------------------------------------------------------------##
-+
-+sub AddStatLine {
-+ my $Line = shift;
-+ my $Stats = shift;
-+ my $File = shift;
-+
-+ print $Line . "\n";
-+
-+ my $Regex = qr/(.*?)\ ->\ Total\ CFGBlocks:\ (\d+)\ \|\ Unreachable
-+ \ CFGBlocks:\ (\d+)\ \|\ Exhausted\ Block:\ (yes|no)\ \|\ Empty\ WorkList:
-+ \ (yes|no)/x;
-+
-+ if ($Line !~ $Regex) {
-+ return;
-+ }
-+
-+ # Create a hash of the interesting fields
-+ my $Row = {
-+ Filename => $File,
-+ Function => $1,
-+ Total => $2,
-+ Unreachable => $3,
-+ Aborted => $4,
-+ Empty => $5
-+ };
-+
-+ # Add them to the stats array
-+ push @$Stats, $Row;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# ScanFile - Scan a report file for various identifying attributes.
-+##----------------------------------------------------------------------------##
-+
-+# Sometimes a source file is scanned more than once, and thus produces
-+# multiple error reports. We use a cache to solve this problem.
-+
-+my %AlreadyScanned;
-+
-+sub ScanFile {
-+
-+ my $Index = shift;
-+ my $Dir = shift;
-+ my $FName = shift;
-+ my $Stats = shift;
-+
-+ # Compute a digest for the report file. Determine if we have already
-+ # scanned a file that looks just like it.
-+
-+ my $digest = ComputeDigest("$Dir/$FName");
-+
-+ if (defined $AlreadyScanned{$digest}) {
-+ # Redundant file. Remove it.
-+ unlink("$Dir/$FName");
-+ return;
-+ }
-+
-+ $AlreadyScanned{$digest} = 1;
-+
-+ # At this point the report file is not world readable. Make it happen.
-+ chmod(0644, "$Dir/$FName");
-+
-+ # Scan the report file for tags.
-+ open(IN, "$Dir/$FName") or DieDiag("Cannot open '$Dir/$FName'\n");
-+
-+ my $BugType = "";
-+ my $BugFile = "";
-+ my $BugFunction = "";
-+ my $BugCategory = "";
-+ my $BugDescription = "";
-+ my $BugPathLength = 1;
-+ my $BugLine = 0;
-+
-+ while (<IN>) {
-+ last if (/<!-- BUGMETAEND -->/);
-+
-+ if (/<!-- BUGTYPE (.*) -->$/) {
-+ $BugType = $1;
-+ }
-+ elsif (/<!-- BUGFILE (.*) -->$/) {
-+ $BugFile = abs_path($1);
-+ if (!defined $BugFile) {
-+ # The file no longer exists: use the original path.
-+ $BugFile = $1;
-+ }
-+ UpdatePrefix($BugFile);
-+ }
-+ elsif (/<!-- BUGPATHLENGTH (.*) -->$/) {
-+ $BugPathLength = $1;
-+ }
-+ elsif (/<!-- BUGLINE (.*) -->$/) {
-+ $BugLine = $1;
-+ }
-+ elsif (/<!-- BUGCATEGORY (.*) -->$/) {
-+ $BugCategory = $1;
-+ }
-+ elsif (/<!-- BUGDESC (.*) -->$/) {
-+ $BugDescription = $1;
-+ }
-+ elsif (/<!-- FUNCTIONNAME (.*) -->$/) {
-+ $BugFunction = $1;
-+ }
-+
-+ }
-+
-+
-+ close(IN);
-+
-+ if (!defined $BugCategory) {
-+ $BugCategory = "Other";
-+ }
-+
-+ # Don't add internal statistics to the bug reports
-+ if ($BugCategory =~ /statistics/i) {
-+ AddStatLine($BugDescription, $Stats, $BugFile);
-+ return;
-+ }
-+
-+ push @$Index,[ $FName, $BugCategory, $BugType, $BugFile, $BugFunction, $BugLine,
-+ $BugPathLength ];
-+}
-+
-+##----------------------------------------------------------------------------##
-+# CopyFiles - Copy resource files to target directory.
-+##----------------------------------------------------------------------------##
-+
-+sub CopyFiles {
-+
-+ my $Dir = shift;
-+
-+ my $JS = Cwd::realpath("$RealBin/../share/scan-build/sorttable.js");
-+
-+ DieDiag("Cannot find 'sorttable.js'.\n")
-+ if (! -r $JS);
-+
-+ copy($JS, "$Dir");
-+
-+ DieDiag("Could not copy 'sorttable.js' to '$Dir'.\n")
-+ if (! -r "$Dir/sorttable.js");
-+
-+ my $CSS = Cwd::realpath("$RealBin/../share/scan-build/scanview.css");
-+
-+ DieDiag("Cannot find 'scanview.css'.\n")
-+ if (! -r $CSS);
-+
-+ copy($CSS, "$Dir");
-+
-+ DieDiag("Could not copy 'scanview.css' to '$Dir'.\n")
-+ if (! -r $CSS);
-+}
-+
-+##----------------------------------------------------------------------------##
-+# CalcStats - Calculates visitation statistics and returns the string.
-+##----------------------------------------------------------------------------##
-+
-+sub CalcStats {
-+ my $Stats = shift;
-+
-+ my $TotalBlocks = 0;
-+ my $UnreachedBlocks = 0;
-+ my $TotalFunctions = scalar(@$Stats);
-+ my $BlockAborted = 0;
-+ my $WorkListAborted = 0;
-+ my $Aborted = 0;
-+
-+ # Calculate the unique files
-+ my $FilesHash = {};
-+
-+ foreach my $Row (@$Stats) {
-+ $FilesHash->{$Row->{Filename}} = 1;
-+ $TotalBlocks += $Row->{Total};
-+ $UnreachedBlocks += $Row->{Unreachable};
-+ $BlockAborted++ if $Row->{Aborted} eq 'yes';
-+ $WorkListAborted++ if $Row->{Empty} eq 'no';
-+ $Aborted++ if $Row->{Aborted} eq 'yes' || $Row->{Empty} eq 'no';
-+ }
-+
-+ my $TotalFiles = scalar(keys(%$FilesHash));
-+
-+ # Calculations
-+ my $PercentAborted = sprintf("%.2f", $Aborted / $TotalFunctions * 100);
-+ my $PercentBlockAborted = sprintf("%.2f", $BlockAborted / $TotalFunctions
-+ * 100);
-+ my $PercentWorkListAborted = sprintf("%.2f", $WorkListAborted /
-+ $TotalFunctions * 100);
-+ my $PercentBlocksUnreached = sprintf("%.2f", $UnreachedBlocks / $TotalBlocks
-+ * 100);
-+
-+ my $StatsString = "Analyzed $TotalBlocks blocks in $TotalFunctions functions"
-+ . " in $TotalFiles files\n"
-+ . "$Aborted functions aborted early ($PercentAborted%)\n"
-+ . "$BlockAborted had aborted blocks ($PercentBlockAborted%)\n"
-+ . "$WorkListAborted had unfinished worklists ($PercentWorkListAborted%)\n"
-+ . "$UnreachedBlocks blocks were never reached ($PercentBlocksUnreached%)\n";
-+
-+ return $StatsString;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Postprocess - Postprocess the results of an analysis scan.
-+##----------------------------------------------------------------------------##
-+
-+my @filesFound;
-+my $baseDir;
-+sub FileWanted {
-+ my $baseDirRegEx = quotemeta $baseDir;
-+ my $file = $File::Find::name;
-+
-+ # The name of the file is generated by clang binary (HTMLDiagnostics.cpp)
-+ if ($file =~ /report-.*\.html$/) {
-+ my $relative_file = $file;
-+ $relative_file =~ s/$baseDirRegEx//g;
-+ push @filesFound, $relative_file;
-+ }
-+}
-+
-+sub Postprocess {
-+
-+ my $Dir = shift;
-+ my $BaseDir = shift;
-+ my $AnalyzerStats = shift;
-+ my $KeepEmpty = shift;
-+
-+ die "No directory specified." if (!defined $Dir);
-+
-+ if (! -d $Dir) {
-+ Diag("No bugs found.\n");
-+ return 0;
-+ }
-+
-+ $baseDir = $Dir . "/";
-+ find({ wanted => \&FileWanted, follow => 0}, $Dir);
-+
-+ if (scalar(@filesFound) == 0 and ! -e "$Dir/failures") {
-+ if (! $KeepEmpty) {
-+ Diag("Removing directory '$Dir' because it contains no reports.\n");
-+ rmtree($Dir) or die "Cannot rmtree '$Dir' : $!";
-+ }
-+ Diag("No bugs found.\n");
-+ return 0;
-+ }
-+
-+ # Scan each report file and build an index.
-+ my @Index;
-+ my @Stats;
-+ foreach my $file (@filesFound) { ScanFile(\@Index, $Dir, $file, \@Stats); }
-+
-+ # Scan the failures directory and use the information in the .info files
-+ # to update the common prefix directory.
-+ my @failures;
-+ my @attributes_ignored;
-+ if (-d "$Dir/failures") {
-+ opendir(DIR, "$Dir/failures");
-+ @failures = grep { /[.]info.txt$/ && !/attribute_ignored/; } readdir(DIR);
-+ closedir(DIR);
-+ opendir(DIR, "$Dir/failures");
-+ @attributes_ignored = grep { /^attribute_ignored/; } readdir(DIR);
-+ closedir(DIR);
-+ foreach my $file (@failures) {
-+ open IN, "$Dir/failures/$file" or DieDiag("cannot open $file\n");
-+ my $Path = <IN>;
-+ if (defined $Path) { UpdatePrefix($Path); }
-+ close IN;
-+ }
-+ }
-+
-+ # Generate an index.html file.
-+ my $FName = "$Dir/index.html";
-+ open(OUT, ">", $FName) or DieDiag("Cannot create file '$FName'\n");
-+
-+ # Print out the header.
-+
-+print OUT <<ENDTEXT;
-+<html>
-+<head>
-+<title>${Options{HtmlTitle}}</title>
-+<link type="text/css" rel="stylesheet" href="scanview.css"/>
-+<script src="sorttable.js"></script>
-+<script language='javascript' type="text/javascript">
-+function SetDisplay(RowClass, DisplayVal)
-+{
-+ var Rows = document.getElementsByTagName("tr");
-+ for ( var i = 0 ; i < Rows.length; ++i ) {
-+ if (Rows[i].className == RowClass) {
-+ Rows[i].style.display = DisplayVal;
-+ }
-+ }
-+}
-+
-+function CopyCheckedStateToCheckButtons(SummaryCheckButton) {
-+ var Inputs = document.getElementsByTagName("input");
-+ for ( var i = 0 ; i < Inputs.length; ++i ) {
-+ if (Inputs[i].type == "checkbox") {
-+ if(Inputs[i] != SummaryCheckButton) {
-+ Inputs[i].checked = SummaryCheckButton.checked;
-+ Inputs[i].onclick();
-+ }
-+ }
-+ }
-+}
-+
-+function returnObjById( id ) {
-+ if (document.getElementById)
-+ var returnVar = document.getElementById(id);
-+ else if (document.all)
-+ var returnVar = document.all[id];
-+ else if (document.layers)
-+ var returnVar = document.layers[id];
-+ return returnVar;
-+}
-+
-+var NumUnchecked = 0;
-+
-+function ToggleDisplay(CheckButton, ClassName) {
-+ if (CheckButton.checked) {
-+ SetDisplay(ClassName, "");
-+ if (--NumUnchecked == 0) {
-+ returnObjById("AllBugsCheck").checked = true;
-+ }
-+ }
-+ else {
-+ SetDisplay(ClassName, "none");
-+ NumUnchecked++;
-+ returnObjById("AllBugsCheck").checked = false;
-+ }
-+}
-+</script>
-+<!-- SUMMARYENDHEAD -->
-+</head>
-+<body>
-+<h1>${Options{HtmlTitle}}</h1>
-+
-+<table>
-+<tr><th>User:</th><td>${UserName}\@${HostName}</td></tr>
-+<tr><th>Working Directory:</th><td>${CurrentDir}</td></tr>
-+<tr><th>Command Line:</th><td>${CmdArgs}</td></tr>
-+<tr><th>Clang Version:</th><td>${ClangVersion}</td></tr>
-+<tr><th>Date:</th><td>${Date}</td></tr>
-+ENDTEXT
-+
-+print OUT "<tr><th>Version:</th><td>${BuildName} (${BuildDate})</td></tr>\n"
-+ if (defined($BuildName) && defined($BuildDate));
-+
-+print OUT <<ENDTEXT;
-+</table>
-+ENDTEXT
-+
-+ if (scalar(@filesFound)) {
-+ # Print out the summary table.
-+ my %Totals;
-+
-+ for my $row ( @Index ) {
-+ my $bug_type = ($row->[2]);
-+ my $bug_category = ($row->[1]);
-+ my $key = "$bug_category:$bug_type";
-+
-+ if (!defined $Totals{$key}) { $Totals{$key} = [1,$bug_category,$bug_type]; }
-+ else { $Totals{$key}->[0]++; }
-+ }
-+
-+ print OUT "<h2>Bug Summary</h2>";
-+
-+ if (defined $BuildName) {
-+ print OUT "\n<p>Results in this analysis run are based on analyzer build <b>$BuildName</b>.</p>\n"
-+ }
-+
-+ my $TotalBugs = scalar(@Index);
-+print OUT <<ENDTEXT;
-+<table>
-+<thead><tr><td>Bug Type</td><td>Quantity</td><td class="sorttable_nosort">Display?</td></tr></thead>
-+<tr style="font-weight:bold"><td class="SUMM_DESC">All Bugs</td><td class="Q">$TotalBugs</td><td><center><input type="checkbox" id="AllBugsCheck" onClick="CopyCheckedStateToCheckButtons(this);" checked/></center></td></tr>
-+ENDTEXT
-+
-+ my $last_category;
-+
-+ for my $key (
-+ sort {
-+ my $x = $Totals{$a};
-+ my $y = $Totals{$b};
-+ my $res = $x->[1] cmp $y->[1];
-+ $res = $x->[2] cmp $y->[2] if ($res == 0);
-+ $res
-+ } keys %Totals )
-+ {
-+ my $val = $Totals{$key};
-+ my $category = $val->[1];
-+ if (!defined $last_category or $last_category ne $category) {
-+ $last_category = $category;
-+ print OUT "<tr><th>$category</th><th colspan=2></th></tr>\n";
-+ }
-+ my $x = lc $key;
-+ $x =~ s/[ ,'":\/()]+/_/g;
-+ print OUT "<tr><td class=\"SUMM_DESC\">";
-+ print OUT $val->[2];
-+ print OUT "</td><td class=\"Q\">";
-+ print OUT $val->[0];
-+ print OUT "</td><td><center><input type=\"checkbox\" onClick=\"ToggleDisplay(this,'bt_$x');\" checked/></center></td></tr>\n";
-+ }
-+
-+ # Print out the table of errors.
-+
-+print OUT <<ENDTEXT;
-+</table>
-+<h2>Reports</h2>
-+
-+<table class="sortable" style="table-layout:automatic">
-+<thead><tr>
-+ <td>Bug Group</td>
-+ <td class="sorttable_sorted">Bug Type<span id="sorttable_sortfwdind">&nbsp;&#x25BE;</span></td>
-+ <td>File</td>
-+ <td>Function/Method</td>
-+ <td class="Q">Line</td>
-+ <td class="Q">Path Length</td>
-+ <td class="sorttable_nosort"></td>
-+ <!-- REPORTBUGCOL -->
-+</tr></thead>
-+<tbody>
-+ENDTEXT
-+
-+ my $prefix = GetPrefix();
-+ my $regex;
-+ my $InFileRegex;
-+ my $InFilePrefix = "File:</td><td>";
-+
-+ if (defined $prefix) {
-+ $regex = qr/^\Q$prefix\E/is;
-+ $InFileRegex = qr/\Q$InFilePrefix$prefix\E/is;
-+ }
-+
-+ for my $row ( sort { $a->[2] cmp $b->[2] } @Index ) {
-+ my $x = "$row->[1]:$row->[2]";
-+ $x = lc $x;
-+ $x =~ s/[ ,'":\/()]+/_/g;
-+
-+ my $ReportFile = $row->[0];
-+
-+ print OUT "<tr class=\"bt_$x\">";
-+ print OUT "<td class=\"DESC\">";
-+ print OUT $row->[1];
-+ print OUT "</td>";
-+ print OUT "<td class=\"DESC\">";
-+ print OUT $row->[2];
-+ print OUT "</td>";
-+
-+ # Update the file prefix.
-+ my $fname = $row->[3];
-+
-+ if (defined $regex) {
-+ $fname =~ s/$regex//;
-+ UpdateInFilePath("$Dir/$ReportFile", $InFileRegex, $InFilePrefix)
-+ }
-+
-+ print OUT "<td>";
-+ my @fname = split /\//,$fname;
-+ if ($#fname > 0) {
-+ while ($#fname >= 0) {
-+ my $x = shift @fname;
-+ print OUT $x;
-+ if ($#fname >= 0) {
-+ print OUT "/";
-+ }
-+ }
-+ }
-+ else {
-+ print OUT $fname;
-+ }
-+ print OUT "</td>";
-+
-+ print OUT "<td class=\"DESC\">";
-+ print OUT $row->[4];
-+ print OUT "</td>";
-+
-+ # Print out the quantities.
-+ for my $j ( 5 .. 6 ) {
-+ print OUT "<td class=\"Q\">$row->[$j]</td>";
-+ }
-+
-+ # Print the rest of the columns.
-+ for (my $j = 7; $j <= $#{$row}; ++$j) {
-+ print OUT "<td>$row->[$j]</td>"
-+ }
-+
-+ # Emit the "View" link.
-+ print OUT "<td><a href=\"$ReportFile#EndPath\">View Report</a></td>";
-+
-+ # Emit REPORTBUG markers.
-+ print OUT "\n<!-- REPORTBUG id=\"$ReportFile\" -->\n";
-+
-+ # End the row.
-+ print OUT "</tr>\n";
-+ }
-+
-+ print OUT "</tbody>\n</table>\n\n";
-+ }
-+
-+ if (scalar (@failures) || scalar(@attributes_ignored)) {
-+ print OUT "<h2>Analyzer Failures</h2>\n";
-+
-+ if (scalar @attributes_ignored) {
-+ print OUT "The analyzer's parser ignored the following attributes:<p>\n";
-+ print OUT "<table>\n";
-+ print OUT "<thead><tr><td>Attribute</td><td>Source File</td><td>Preprocessed File</td><td>STDERR Output</td></tr></thead>\n";
-+ foreach my $file (sort @attributes_ignored) {
-+ die "cannot demangle attribute name\n" if (! ($file =~ /^attribute_ignored_(.+).txt/));
-+ my $attribute = $1;
-+ # Open the attribute file to get the first file that failed.
-+ next if (!open (ATTR, "$Dir/failures/$file"));
-+ my $ppfile = <ATTR>;
-+ chomp $ppfile;
-+ close ATTR;
-+ next if (! -e "$Dir/failures/$ppfile");
-+ # Open the info file and get the name of the source file.
-+ open (INFO, "$Dir/failures/$ppfile.info.txt") or
-+ die "Cannot open $Dir/failures/$ppfile.info.txt\n";
-+ my $srcfile = <INFO>;
-+ chomp $srcfile;
-+ close (INFO);
-+ # Print the information in the table.
-+ my $prefix = GetPrefix();
-+ if (defined $prefix) { $srcfile =~ s/^\Q$prefix//; }
-+ print OUT "<tr><td>$attribute</td><td>$srcfile</td><td><a href=\"failures/$ppfile\">$ppfile</a></td><td><a href=\"failures/$ppfile.stderr.txt\">$ppfile.stderr.txt</a></td></tr>\n";
-+ my $ppfile_clang = $ppfile;
-+ $ppfile_clang =~ s/[.](.+)$/.clang.$1/;
-+ print OUT " <!-- REPORTPROBLEM src=\"$srcfile\" file=\"failures/$ppfile\" clangfile=\"failures/$ppfile_clang\" stderr=\"failures/$ppfile.stderr.txt\" info=\"failures/$ppfile.info.txt\" -->\n";
-+ }
-+ print OUT "</table>\n";
-+ }
-+
-+ if (scalar @failures) {
-+ print OUT "<p>The analyzer had problems processing the following files:</p>\n";
-+ print OUT "<table>\n";
-+ print OUT "<thead><tr><td>Problem</td><td>Source File</td><td>Preprocessed File</td><td>STDERR Output</td></tr></thead>\n";
-+ foreach my $file (sort @failures) {
-+ $file =~ /(.+).info.txt$/;
-+ # Get the preprocessed file.
-+ my $ppfile = $1;
-+ # Open the info file and get the name of the source file.
-+ open (INFO, "$Dir/failures/$file") or
-+ die "Cannot open $Dir/failures/$file\n";
-+ my $srcfile = <INFO>;
-+ chomp $srcfile;
-+ my $problem = <INFO>;
-+ chomp $problem;
-+ close (INFO);
-+ # Print the information in the table.
-+ my $prefix = GetPrefix();
-+ if (defined $prefix) { $srcfile =~ s/^\Q$prefix//; }
-+ print OUT "<tr><td>$problem</td><td>$srcfile</td><td><a href=\"failures/$ppfile\">$ppfile</a></td><td><a href=\"failures/$ppfile.stderr.txt\">$ppfile.stderr.txt</a></td></tr>\n";
-+ my $ppfile_clang = $ppfile;
-+ $ppfile_clang =~ s/[.](.+)$/.clang.$1/;
-+ print OUT " <!-- REPORTPROBLEM src=\"$srcfile\" file=\"failures/$ppfile\" clangfile=\"failures/$ppfile_clang\" stderr=\"failures/$ppfile.stderr.txt\" info=\"failures/$ppfile.info.txt\" -->\n";
-+ }
-+ print OUT "</table>\n";
-+ }
-+ print OUT "<p>Please consider submitting preprocessed files as <a href=\"http://clang-analyzer.llvm.org/filing_bugs.html\">bug reports</a>. <!-- REPORTCRASHES --> </p>\n";
-+ }
-+
-+ print OUT "</body></html>\n";
-+ close(OUT);
-+ CopyFiles($Dir);
-+
-+ # Make sure $Dir and $BaseDir are world readable/executable.
-+ chmod(0755, $Dir);
-+ if (defined $BaseDir) { chmod(0755, $BaseDir); }
-+
-+ # Print statistics
-+ print CalcStats(\@Stats) if $AnalyzerStats;
-+
-+ my $Num = scalar(@Index);
-+ if ($Num == 1) {
-+ Diag("$Num bug found.\n");
-+ } else {
-+ Diag("$Num bugs found.\n");
-+ }
-+ if ($Num > 0 && -r "$Dir/index.html") {
-+ Diag("Run 'scan-view $Dir' to examine bug reports.\n");
-+ }
-+
-+ DiagCrashes($Dir) if (scalar @failures || scalar @attributes_ignored);
-+
-+ return $Num;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# RunBuildCommand - Run the build command.
-+##----------------------------------------------------------------------------##
-+
-+sub AddIfNotPresent {
-+ my $Args = shift;
-+ my $Arg = shift;
-+ my $found = 0;
-+
-+ foreach my $k (@$Args) {
-+ if ($k eq $Arg) {
-+ $found = 1;
-+ last;
-+ }
-+ }
-+
-+ if ($found == 0) {
-+ push @$Args, $Arg;
-+ }
-+}
-+
-+sub SetEnv {
-+ my $EnvVars = shift @_;
-+ foreach my $var ('CC', 'CXX', 'CLANG', 'CLANG_CXX',
-+ 'CCC_ANALYZER_ANALYSIS', 'CCC_ANALYZER_PLUGINS',
-+ 'CCC_ANALYZER_CONFIG') {
-+ die "$var is undefined\n" if (!defined $var);
-+ $ENV{$var} = $EnvVars->{$var};
-+ }
-+ foreach my $var ('CCC_ANALYZER_STORE_MODEL',
-+ 'CCC_ANALYZER_CONSTRAINTS_MODEL',
-+ 'CCC_ANALYZER_INTERNAL_STATS',
-+ 'CCC_ANALYZER_OUTPUT_FORMAT',
-+ 'CCC_CC',
-+ 'CCC_CXX',
-+ 'CCC_REPORT_FAILURES',
-+ 'CLANG_ANALYZER_TARGET') {
-+ my $x = $EnvVars->{$var};
-+ if (defined $x) { $ENV{$var} = $x }
-+ }
-+ my $Verbose = $EnvVars->{'VERBOSE'};
-+ if ($Verbose >= 2) {
-+ $ENV{'CCC_ANALYZER_VERBOSE'} = 1;
-+ }
-+ if ($Verbose >= 3) {
-+ $ENV{'CCC_ANALYZER_LOG'} = 1;
-+ }
-+}
-+
-+sub RunXcodebuild {
-+ my $Args = shift;
-+ my $IgnoreErrors = shift;
-+ my $CCAnalyzer = shift;
-+ my $CXXAnalyzer = shift;
-+ my $EnvVars = shift;
-+
-+ if ($IgnoreErrors) {
-+ AddIfNotPresent($Args,"-PBXBuildsContinueAfterErrors=YES");
-+ }
-+
-+ # Detect the version of Xcode. If Xcode 4.6 or higher, use new
-+ # in situ support for analyzer interposition without needed to override
-+ # the compiler.
-+ open(DETECT_XCODE, "-|", $Args->[0], "-version") or
-+ die "error: cannot detect version of xcodebuild\n";
-+
-+ my $oldBehavior = 1;
-+
-+ while(<DETECT_XCODE>) {
-+ if (/^Xcode (.+)$/) {
-+ my $ver = $1;
-+ if ($ver =~ /^([0-9]+[.][0-9]+)[^0-9]?/) {
-+ if ($1 >= 4.6) {
-+ $oldBehavior = 0;
-+ last;
-+ }
-+ }
-+ }
-+ }
-+ close(DETECT_XCODE);
-+
-+ # If --override-compiler is explicitely requested, resort to the old
-+ # behavior regardless of Xcode version.
-+ if ($Options{OverrideCompiler}) {
-+ $oldBehavior = 1;
-+ }
-+
-+ if ($oldBehavior == 0) {
-+ my $OutputDir = $EnvVars->{"OUTPUT_DIR"};
-+ my $CLANG = $EnvVars->{"CLANG"};
-+ my $OtherFlags = $EnvVars->{"CCC_ANALYZER_ANALYSIS"};
-+ push @$Args,
-+ "RUN_CLANG_STATIC_ANALYZER=YES",
-+ "CLANG_ANALYZER_OUTPUT=plist-html",
-+ "CLANG_ANALYZER_EXEC=$CLANG",
-+ "CLANG_ANALYZER_OUTPUT_DIR=$OutputDir",
-+ "CLANG_ANALYZER_OTHER_FLAGS=$OtherFlags";
-+
-+ return (system(@$Args) >> 8);
-+ }
-+
-+ # Default to old behavior where we insert a bogus compiler.
-+ SetEnv($EnvVars);
-+
-+ # Check if using iPhone SDK 3.0 (simulator). If so the compiler being
-+ # used should be gcc-4.2.
-+ if (!defined $ENV{"CCC_CC"}) {
-+ for (my $i = 0 ; $i < scalar(@$Args); ++$i) {
-+ if ($Args->[$i] eq "-sdk" && $i + 1 < scalar(@$Args)) {
-+ if (@$Args[$i+1] =~ /^iphonesimulator3/) {
-+ $ENV{"CCC_CC"} = "gcc-4.2";
-+ $ENV{"CCC_CXX"} = "g++-4.2";
-+ }
-+ }
-+ }
-+ }
-+
-+ # Disable PCH files until clang supports them.
-+ AddIfNotPresent($Args,"GCC_PRECOMPILE_PREFIX_HEADER=NO");
-+
-+ # When 'CC' is set, xcodebuild uses it to do all linking, even if we are
-+ # linking C++ object files. Set 'LDPLUSPLUS' so that xcodebuild uses 'g++'
-+ # (via c++-analyzer) when linking such files.
-+ $ENV{"LDPLUSPLUS"} = $CXXAnalyzer;
-+
-+ return (system(@$Args) >> 8);
-+}
-+
-+sub RunBuildCommand {
-+ my $Args = shift;
-+ my $IgnoreErrors = shift;
-+ my $Cmd = $Args->[0];
-+ my $CCAnalyzer = shift;
-+ my $CXXAnalyzer = shift;
-+ my $EnvVars = shift;
-+
-+ if ($Cmd =~ /\bxcodebuild$/) {
-+ return RunXcodebuild($Args, $IgnoreErrors, $CCAnalyzer, $CXXAnalyzer, $EnvVars);
-+ }
-+
-+ # Setup the environment.
-+ SetEnv($EnvVars);
-+
-+ if ($Cmd =~ /(.*\/?gcc[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?cc[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?llvm-gcc[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?clang$)/ or
-+ $Cmd =~ /(.*\/?ccc-analyzer[^\/]*$)/) {
-+
-+ if (!($Cmd =~ /ccc-analyzer/) and !defined $ENV{"CCC_CC"}) {
-+ $ENV{"CCC_CC"} = $1;
-+ }
-+
-+ shift @$Args;
-+ unshift @$Args, $CCAnalyzer;
-+ }
-+ elsif ($Cmd =~ /(.*\/?g\+\+[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?c\+\+[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?llvm-g\+\+[^\/]*$)/ or
-+ $Cmd =~ /(.*\/?clang\+\+$)/ or
-+ $Cmd =~ /(.*\/?c\+\+-analyzer[^\/]*$)/) {
-+ if (!($Cmd =~ /c\+\+-analyzer/) and !defined $ENV{"CCC_CXX"}) {
-+ $ENV{"CCC_CXX"} = $1;
-+ }
-+ shift @$Args;
-+ unshift @$Args, $CXXAnalyzer;
-+ }
-+ elsif ($Cmd eq "make" or $Cmd eq "gmake" or $Cmd eq "mingw32-make") {
-+ AddIfNotPresent($Args, "CC=$CCAnalyzer");
-+ AddIfNotPresent($Args, "CXX=$CXXAnalyzer");
-+ if ($IgnoreErrors) {
-+ AddIfNotPresent($Args,"-k");
-+ AddIfNotPresent($Args,"-i");
-+ }
-+ }
-+
-+ return (system(@$Args) >> 8);
-+}
-+
-+##----------------------------------------------------------------------------##
-+# DisplayHelp - Utility function to display all help options.
-+##----------------------------------------------------------------------------##
-+
-+sub DisplayHelp {
-+
-+ my $ArgClangNotFoundErrMsg = shift;
-+print <<ENDTEXT;
-+USAGE: $Prog [options] <build command> [build options]
-+
-+ENDTEXT
-+
-+ if (defined $BuildName) {
-+ print "ANALYZER BUILD: $BuildName ($BuildDate)\n\n";
-+ }
-+
-+print <<ENDTEXT;
-+OPTIONS:
-+
-+ -analyze-headers
-+
-+ Also analyze functions in #included files. By default, such functions
-+ are skipped unless they are called by functions within the main source file.
-+
-+ -o <output location>
-+
-+ Specifies the output directory for analyzer reports. Subdirectories will be
-+ created as needed to represent separate "runs" of the analyzer. If this
-+ option is not specified, a directory is created in /tmp (TMPDIR on Mac OS X)
-+ to store the reports.
-+
-+ -h
-+ --help
-+
-+ Display this message.
-+
-+ -k
-+ --keep-going
-+
-+ Add a "keep on going" option to the specified build command. This option
-+ currently supports make and xcodebuild. This is a convenience option; one
-+ can specify this behavior directly using build options.
-+
-+ --html-title [title]
-+ --html-title=[title]
-+
-+ Specify the title used on generated HTML pages. If not specified, a default
-+ title will be used.
-+
-+ -plist
-+
-+ By default the output of scan-build is a set of HTML files. This option
-+ outputs the results as a set of .plist files.
-+
-+ -plist-html
-+
-+ By default the output of scan-build is a set of HTML files. This option
-+ outputs the results as a set of HTML and .plist files.
-+
-+ --status-bugs
-+
-+ By default, the exit status of scan-build is the same as the executed build
-+ command. Specifying this option causes the exit status of scan-build to be 1
-+ if it found potential bugs and 0 otherwise.
-+
-+ --use-cc [compiler path]
-+ --use-cc=[compiler path]
-+
-+ scan-build analyzes a project by interposing a "fake compiler", which
-+ executes a real compiler for compilation and the static analyzer for analysis.
-+ Because of the current implementation of interposition, scan-build does not
-+ know what compiler your project normally uses. Instead, it simply overrides
-+ the CC environment variable, and guesses your default compiler.
-+
-+ In the future, this interposition mechanism to be improved, but if you need
-+ scan-build to use a specific compiler for *compilation* then you can use
-+ this option to specify a path to that compiler.
-+
-+ If the given compiler is a cross compiler, you may also need to provide
-+ --analyzer-target option to properly analyze the source code because static
-+ analyzer runs as if the code is compiled for the host machine by default.
-+
-+ --use-c++ [compiler path]
-+ --use-c++=[compiler path]
-+
-+ This is the same as "--use-cc" but for C++ code.
-+
-+ --analyzer-target [target triple name for analysis]
-+ --analyzer-target=[target triple name for analysis]
-+
-+ This provides target triple information to clang static analyzer.
-+ It only changes the target for analysis but doesn't change the target of a
-+ real compiler given by --use-cc and --use-c++ options.
-+
-+ -v
-+
-+ Enable verbose output from scan-build. A second and third '-v' increases
-+ verbosity.
-+
-+ -V
-+ --view
-+
-+ View analysis results in a web browser when the build completes.
-+
-+ADVANCED OPTIONS:
-+
-+ -no-failure-reports
-+
-+ Do not create a 'failures' subdirectory that includes analyzer crash reports
-+ and preprocessed source files.
-+
-+ -stats
-+
-+ Generates visitation statistics for the project being analyzed.
-+
-+ -maxloop <loop count>
-+
-+ Specifiy the number of times a block can be visited before giving up.
-+ Default is 4. Increase for more comprehensive coverage at a cost of speed.
-+
-+ -internal-stats
-+
-+ Generate internal analyzer statistics.
-+
-+ --use-analyzer [Xcode|path to clang]
-+ --use-analyzer=[Xcode|path to clang]
-+
-+ scan-build uses the 'clang' executable relative to itself for static
-+ analysis. One can override this behavior with this option by using the
-+ 'clang' packaged with Xcode (on OS X) or from the PATH.
-+
-+ --keep-empty
-+
-+ Don't remove the build results directory even if no issues were reported.
-+
-+ --override-compiler
-+ Always resort to the ccc-analyzer even when better interposition methods
-+ are available.
-+
-+ -analyzer-config <options>
-+
-+ Provide options to pass through to the analyzer's -analyzer-config flag.
-+ Several options are separated with comma: 'key1=val1,key2=val2'
-+
-+ Available options:
-+ * stable-report-filename=true or false (default)
-+ Switch the page naming to:
-+ report-<filename>-<function/method name>-<id>.html
-+ instead of report-XXXXXX.html
-+
-+CONTROLLING CHECKERS:
-+
-+ A default group of checkers are always run unless explicitly disabled.
-+ Checkers may be enabled/disabled using the following options:
-+
-+ -enable-checker [checker name]
-+ -disable-checker [checker name]
-+
-+LOADING CHECKERS:
-+
-+ Loading external checkers using the clang plugin interface:
-+
-+ -load-plugin [plugin library]
-+ENDTEXT
-+
-+ if (defined $Clang && -x $Clang) {
-+ # Query clang for list of checkers that are enabled.
-+
-+ # create a list to load the plugins via the 'Xclang' command line
-+ # argument
-+ my @PluginLoadCommandline_xclang;
-+ foreach my $param ( @{$Options{PluginsToLoad}} ) {
-+ push ( @PluginLoadCommandline_xclang, "-Xclang" );
-+ push ( @PluginLoadCommandline_xclang, "-load" );
-+ push ( @PluginLoadCommandline_xclang, "-Xclang" );
-+ push ( @PluginLoadCommandline_xclang, $param );
-+ }
-+
-+ my %EnabledCheckers;
-+ foreach my $lang ("c", "objective-c", "objective-c++", "c++") {
-+ my $ExecLine = join(' ', qq/"$Clang"/, @PluginLoadCommandline_xclang, "--analyze", "-x", $lang, "-", "-###", "2>&1", "|");
-+ open(PS, $ExecLine);
-+ while (<PS>) {
-+ foreach my $val (split /\s+/) {
-+ $val =~ s/\"//g;
-+ if ($val =~ /-analyzer-checker\=([^\s]+)/) {
-+ $EnabledCheckers{$1} = 1;
-+ }
-+ }
-+ }
-+ }
-+
-+ # Query clang for complete list of checkers.
-+ my @PluginLoadCommandline;
-+ foreach my $param ( @{$Options{PluginsToLoad}} ) {
-+ push ( @PluginLoadCommandline, "-load" );
-+ push ( @PluginLoadCommandline, $param );
-+ }
-+
-+ my $ExecLine = join(' ', qq/"$Clang"/, "-cc1", @PluginLoadCommandline, "-analyzer-checker-help", "2>&1", "|");
-+ open(PS, $ExecLine);
-+ my $foundCheckers = 0;
-+ while (<PS>) {
-+ if (/CHECKERS:/) {
-+ $foundCheckers = 1;
-+ last;
-+ }
-+ }
-+ if (!$foundCheckers) {
-+ print " *** Could not query Clang for the list of available checkers.";
-+ }
-+ else {
-+ print("\nAVAILABLE CHECKERS:\n\n");
-+ my $skip = 0;
-+ while(<PS>) {
-+ if (/experimental/) {
-+ $skip = 1;
-+ next;
-+ }
-+ if ($skip) {
-+ next if (!/^\s\s[^\s]/);
-+ $skip = 0;
-+ }
-+ s/^\s\s//;
-+ if (/^([^\s]+)/) {
-+ # Is the checker enabled?
-+ my $checker = $1;
-+ my $enabled = 0;
-+ my $aggregate = "";
-+ foreach my $domain (split /\./, $checker) {
-+ $aggregate .= $domain;
-+ if ($EnabledCheckers{$aggregate}) {
-+ $enabled =1;
-+ last;
-+ }
-+ # append a dot, if an additional domain is added in the next iteration
-+ $aggregate .= ".";
-+ }
-+
-+ if ($enabled) {
-+ print " + ";
-+ }
-+ else {
-+ print " ";
-+ }
-+ }
-+ else {
-+ print " ";
-+ }
-+ print $_;
-+ }
-+ print "\nNOTE: \"+\" indicates that an analysis is enabled by default.\n";
-+ }
-+ close PS;
-+ }
-+ else {
-+ print " *** Could not query Clang for the list of available checkers.\n";
-+ if (defined $ArgClangNotFoundErrMsg) {
-+ print " *** Reason: $ArgClangNotFoundErrMsg\n";
-+ }
-+ }
-+
-+print <<ENDTEXT
-+
-+BUILD OPTIONS
-+
-+ You can specify any build option acceptable to the build command.
-+
-+EXAMPLE
-+
-+ scan-build -o /tmp/myhtmldir make -j4
-+
-+The above example causes analysis reports to be deposited into a subdirectory
-+of "/tmp/myhtmldir" and to run "make" with the "-j4" option. A different
-+subdirectory is created each time scan-build analyzes a project. The analyzer
-+should support most parallel builds, but not distributed builds.
-+
-+ENDTEXT
-+}
-+
-+##----------------------------------------------------------------------------##
-+# HtmlEscape - HTML entity encode characters that are special in HTML
-+##----------------------------------------------------------------------------##
-+
-+sub HtmlEscape {
-+ # copy argument to new variable so we don't clobber the original
-+ my $arg = shift || '';
-+ my $tmp = $arg;
-+ $tmp =~ s/&/&amp;/g;
-+ $tmp =~ s/</&lt;/g;
-+ $tmp =~ s/>/&gt;/g;
-+ return $tmp;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# ShellEscape - backslash escape characters that are special to the shell
-+##----------------------------------------------------------------------------##
-+
-+sub ShellEscape {
-+ # copy argument to new variable so we don't clobber the original
-+ my $arg = shift || '';
-+ if ($arg =~ /["\s]/) { return "'" . $arg . "'"; }
-+ return $arg;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# FindClang - searches for 'clang' executable.
-+##----------------------------------------------------------------------------##
-+
-+sub FindClang {
-+ if (!defined $Options{AnalyzerDiscoveryMethod}) {
-+ $Clang = Cwd::realpath("$RealBin/bin/clang") if (-f "$RealBin/bin/clang");
-+ if (!defined $Clang || ! -x $Clang) {
-+ $Clang = Cwd::realpath("$RealBin/clang") if (-f "$RealBin/clang");
-+ }
-+ if (!defined $Clang || ! -x $Clang) {
-+ return "error: Cannot find an executable 'clang' relative to" .
-+ " scan-build. Consider using --use-analyzer to pick a version of" .
-+ " 'clang' to use for static analysis.\n";
-+ }
-+ }
-+ else {
-+ if ($Options{AnalyzerDiscoveryMethod} =~ /^[Xx]code$/) {
-+ my $xcrun = `which xcrun`;
-+ chomp $xcrun;
-+ if ($xcrun eq "") {
-+ return "Cannot find 'xcrun' to find 'clang' for analysis.\n";
-+ }
-+ $Clang = `$xcrun -toolchain XcodeDefault -find clang`;
-+ chomp $Clang;
-+ if ($Clang eq "") {
-+ return "No 'clang' executable found by 'xcrun'\n";
-+ }
-+ }
-+ else {
-+ $Clang = $Options{AnalyzerDiscoveryMethod};
-+ if (!defined $Clang or not -x $Clang) {
-+ return "Cannot find an executable clang at '$Options{AnalyzerDiscoveryMethod}'\n";
-+ }
-+ }
-+ }
-+ return undef;
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Process command-line arguments.
-+##----------------------------------------------------------------------------##
-+
-+my $RequestDisplayHelp = 0;
-+my $ForceDisplayHelp = 0;
-+
-+sub ProcessArgs {
-+ my $Args = shift;
-+ my $NumArgs = 0;
-+
-+ while (@$Args) {
-+
-+ $NumArgs++;
-+
-+ # Scan for options we recognize.
-+
-+ my $arg = $Args->[0];
-+
-+ if ($arg eq "-h" or $arg eq "--help") {
-+ $RequestDisplayHelp = 1;
-+ shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq '-analyze-headers') {
-+ shift @$Args;
-+ $Options{AnalyzeHeaders} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "-o") {
-+ shift @$Args;
-+
-+ if (!@$Args) {
-+ DieDiag("'-o' option requires a target directory name.\n");
-+ }
-+
-+ # Construct an absolute path. Uses the current working directory
-+ # as a base if the original path was not absolute.
-+ my $OutDir = shift @$Args;
-+ mkpath($OutDir) unless (-e $OutDir); # abs_path wants existing dir
-+ $Options{OutputDir} = abs_path($OutDir);
-+
-+ next;
-+ }
-+
-+ if ($arg =~ /^--html-title(=(.+))?$/) {
-+ shift @$Args;
-+
-+ if (!defined $2 || $2 eq '') {
-+ if (!@$Args) {
-+ DieDiag("'--html-title' option requires a string.\n");
-+ }
-+
-+ $Options{HtmlTitle} = shift @$Args;
-+ } else {
-+ $Options{HtmlTitle} = $2;
-+ }
-+
-+ next;
-+ }
-+
-+ if ($arg eq "-k" or $arg eq "--keep-going") {
-+ shift @$Args;
-+ $Options{IgnoreErrors} = 1;
-+ next;
-+ }
-+
-+ if ($arg =~ /^--use-cc(=(.+))?$/) {
-+ shift @$Args;
-+ my $cc;
-+
-+ if (!defined $2 || $2 eq "") {
-+ if (!@$Args) {
-+ DieDiag("'--use-cc' option requires a compiler executable name.\n");
-+ }
-+ $cc = shift @$Args;
-+ }
-+ else {
-+ $cc = $2;
-+ }
-+
-+ $Options{UseCC} = $cc;
-+ next;
-+ }
-+
-+ if ($arg =~ /^--use-c\+\+(=(.+))?$/) {
-+ shift @$Args;
-+ my $cxx;
-+
-+ if (!defined $2 || $2 eq "") {
-+ if (!@$Args) {
-+ DieDiag("'--use-c++' option requires a compiler executable name.\n");
-+ }
-+ $cxx = shift @$Args;
-+ }
-+ else {
-+ $cxx = $2;
-+ }
-+
-+ $Options{UseCXX} = $cxx;
-+ next;
-+ }
-+
-+ if ($arg =~ /^--analyzer-target(=(.+))?$/) {
-+ shift @ARGV;
-+ my $AnalyzerTarget;
-+
-+ if (!defined $2 || $2 eq "") {
-+ if (!@ARGV) {
-+ DieDiag("'--analyzer-target' option requires a target triple name.\n");
-+ }
-+ $AnalyzerTarget = shift @ARGV;
-+ }
-+ else {
-+ $AnalyzerTarget = $2;
-+ }
-+
-+ $Options{AnalyzerTarget} = $AnalyzerTarget;
-+ next;
-+ }
-+
-+ if ($arg eq "-v") {
-+ shift @$Args;
-+ $Options{Verbose}++;
-+ next;
-+ }
-+
-+ if ($arg eq "-V" or $arg eq "--view") {
-+ shift @$Args;
-+ $Options{ViewResults} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "--status-bugs") {
-+ shift @$Args;
-+ $Options{ExitStatusFoundBugs} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "-store") {
-+ shift @$Args;
-+ $Options{StoreModel} = shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq "-constraints") {
-+ shift @$Args;
-+ $Options{ConstraintsModel} = shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq "-internal-stats") {
-+ shift @$Args;
-+ $Options{InternalStats} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "-plist") {
-+ shift @$Args;
-+ $Options{OutputFormat} = "plist";
-+ next;
-+ }
-+
-+ if ($arg eq "-plist-html") {
-+ shift @$Args;
-+ $Options{OutputFormat} = "plist-html";
-+ next;
-+ }
-+
-+ if ($arg eq "-analyzer-config") {
-+ shift @$Args;
-+ push @{$Options{ConfigOptions}}, shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq "-no-failure-reports") {
-+ shift @$Args;
-+ $Options{ReportFailures} = 0;
-+ next;
-+ }
-+
-+ if ($arg eq "-stats") {
-+ shift @$Args;
-+ $Options{AnalyzerStats} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "-maxloop") {
-+ shift @$Args;
-+ $Options{MaxLoop} = shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq "-enable-checker") {
-+ shift @$Args;
-+ my $Checker = shift @$Args;
-+ # Store $NumArgs to preserve the order the checkers were enabled.
-+ $Options{EnableCheckers}{$Checker} = $NumArgs;
-+ delete $Options{DisableCheckers}{$Checker};
-+ next;
-+ }
-+
-+ if ($arg eq "-disable-checker") {
-+ shift @$Args;
-+ my $Checker = shift @$Args;
-+ # Store $NumArgs to preserve the order the checkers were disabled.
-+ $Options{DisableCheckers}{$Checker} = $NumArgs;
-+ delete $Options{EnableCheckers}{$Checker};
-+ next;
-+ }
-+
-+ if ($arg eq "-load-plugin") {
-+ shift @$Args;
-+ push @{$Options{PluginsToLoad}}, shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg eq "--use-analyzer") {
-+ shift @$Args;
-+ $Options{AnalyzerDiscoveryMethod} = shift @$Args;
-+ next;
-+ }
-+
-+ if ($arg =~ /^--use-analyzer=(.+)$/) {
-+ shift @$Args;
-+ $Options{AnalyzerDiscoveryMethod} = $1;
-+ next;
-+ }
-+
-+ if ($arg eq "--keep-empty") {
-+ shift @$Args;
-+ $Options{KeepEmpty} = 1;
-+ next;
-+ }
-+
-+ if ($arg eq "--override-compiler") {
-+ shift @$Args;
-+ $Options{OverrideCompiler} = 1;
-+ next;
-+ }
-+
-+ DieDiag("unrecognized option '$arg'\n") if ($arg =~ /^-/);
-+
-+ $NumArgs--;
-+ last;
-+ }
-+ return $NumArgs;
-+}
-+
-+if (!@ARGV) {
-+ $ForceDisplayHelp = 1
-+}
-+
-+ProcessArgs(\@ARGV);
-+# All arguments are now shifted from @ARGV. The rest is a build command, if any.
-+
-+if (!@ARGV and !$RequestDisplayHelp) {
-+ ErrorDiag("No build command specified.\n\n");
-+ $ForceDisplayHelp = 1;
-+}
-+
-+my $ClangNotFoundErrMsg = FindClang();
-+
-+if ($ForceDisplayHelp || $RequestDisplayHelp) {
-+ DisplayHelp($ClangNotFoundErrMsg);
-+ exit $ForceDisplayHelp;
-+}
-+
-+DieDiag($ClangNotFoundErrMsg) if (defined $ClangNotFoundErrMsg);
-+
-+$ClangCXX = $Clang;
-+if ($Clang !~ /\+\+(\.exe)?$/) {
-+ # If $Clang holds the name of the clang++ executable then we leave
-+ # $ClangCXX and $Clang equal, otherwise construct the name of the clang++
-+ # executable from the clang executable name.
-+
-+ # Determine operating system under which this copy of Perl was built.
-+ my $IsWinBuild = ($^O =~/msys|cygwin|MSWin32/);
-+ if($IsWinBuild) {
-+ $ClangCXX =~ s/.exe$/++.exe/;
-+ }
-+ else {
-+ $ClangCXX =~ s/\-\d+\.\d+$//;
-+ $ClangCXX .= "++";
-+ }
-+}
-+
-+# Make sure to use "" to handle paths with spaces.
-+$ClangVersion = HtmlEscape(`"$Clang" --version`);
-+
-+# Determine where results go.
-+$CmdArgs = HtmlEscape(join(' ', map(ShellEscape($_), @ARGV)));
-+
-+# Determine the output directory for the HTML reports.
-+my $BaseDir = $Options{OutputDir};
-+$Options{OutputDir} = GetHTMLRunDir($Options{OutputDir});
-+
-+# Determine the location of ccc-analyzer.
-+my $AbsRealBin = Cwd::realpath($RealBin);
-+my $Cmd = "$AbsRealBin/../libexec/ccc-analyzer";
-+my $CmdCXX = "$AbsRealBin/../libexec/c++-analyzer";
-+
-+# Portability: use less strict but portable check -e (file exists) instead of
-+# non-portable -x (file is executable). On some windows ports -x just checks
-+# file extension to determine if a file is executable (see Perl language
-+# reference, perlport)
-+if (!defined $Cmd || ! -e $Cmd) {
-+ $Cmd = "$AbsRealBin/ccc-analyzer";
-+ DieDiag("'ccc-analyzer' does not exist at '$Cmd'\n") if(! -e $Cmd);
-+}
-+if (!defined $CmdCXX || ! -e $CmdCXX) {
-+ $CmdCXX = "$AbsRealBin/c++-analyzer";
-+ DieDiag("'c++-analyzer' does not exist at '$CmdCXX'\n") if(! -e $CmdCXX);
-+}
-+
-+Diag("Using '$Clang' for static analysis\n");
-+
-+SetHtmlEnv(\@ARGV, $Options{OutputDir});
-+
-+my @AnalysesToRun;
-+foreach (sort { $Options{EnableCheckers}{$a} <=> $Options{EnableCheckers}{$b} }
-+ keys %{$Options{EnableCheckers}}) {
-+ # Push checkers in order they were enabled.
-+ push @AnalysesToRun, "-analyzer-checker", $_;
-+}
-+foreach (sort { $Options{DisableCheckers}{$a} <=> $Options{DisableCheckers}{$b} }
-+ keys %{$Options{DisableCheckers}}) {
-+ # Push checkers in order they were disabled.
-+ push @AnalysesToRun, "-analyzer-disable-checker", $_;
-+}
-+if ($Options{AnalyzeHeaders}) { push @AnalysesToRun, "-analyzer-opt-analyze-headers"; }
-+if ($Options{AnalyzerStats}) { push @AnalysesToRun, '-analyzer-checker=debug.Stats'; }
-+if ($Options{MaxLoop} > 0) { push @AnalysesToRun, "-analyzer-max-loop $Options{MaxLoop}"; }
-+
-+# Delay setting up other environment variables in case we can do true
-+# interposition.
-+my $CCC_ANALYZER_ANALYSIS = join ' ', @AnalysesToRun;
-+my $CCC_ANALYZER_PLUGINS = join ' ', map { "-load ".$_ } @{$Options{PluginsToLoad}};
-+my $CCC_ANALYZER_CONFIG = join ' ', map { "-analyzer-config ".$_ } @{$Options{ConfigOptions}};
-+my %EnvVars = (
-+ 'CC' => $Cmd,
-+ 'CXX' => $CmdCXX,
-+ 'CLANG' => $Clang,
-+ 'CLANG_CXX' => $ClangCXX,
-+ 'VERBOSE' => $Options{Verbose},
-+ 'CCC_ANALYZER_ANALYSIS' => $CCC_ANALYZER_ANALYSIS,
-+ 'CCC_ANALYZER_PLUGINS' => $CCC_ANALYZER_PLUGINS,
-+ 'CCC_ANALYZER_CONFIG' => $CCC_ANALYZER_CONFIG,
-+ 'OUTPUT_DIR' => $Options{OutputDir},
-+ 'CCC_CC' => $Options{UseCC},
-+ 'CCC_CXX' => $Options{UseCXX},
-+ 'CCC_REPORT_FAILURES' => $Options{ReportFailures},
-+ 'CCC_ANALYZER_STORE_MODEL' => $Options{StoreModel},
-+ 'CCC_ANALYZER_CONSTRAINTS_MODEL' => $Options{ConstraintsModel},
-+ 'CCC_ANALYZER_INTERNAL_STATS' => $Options{InternalStats},
-+ 'CCC_ANALYZER_OUTPUT_FORMAT' => $Options{OutputFormat},
-+ 'CLANG_ANALYZER_TARGET' => $Options{AnalyzerTarget}
-+);
-+
-+# Run the build.
-+my $ExitStatus = RunBuildCommand(\@ARGV, $Options{IgnoreErrors}, $Cmd, $CmdCXX,
-+ \%EnvVars);
-+
-+if (defined $Options{OutputFormat}) {
-+ if ($Options{OutputFormat} =~ /plist/) {
-+ Diag "Analysis run complete.\n";
-+ Diag "Analysis results (plist files) deposited in '$Options{OutputDir}'\n";
-+ }
-+ if ($Options{OutputFormat} =~ /html/) {
-+ # Postprocess the HTML directory.
-+ my $NumBugs = Postprocess($Options{OutputDir}, $BaseDir,
-+ $Options{AnalyzerStats}, $Options{KeepEmpty});
-+
-+ if ($Options{ViewResults} and -r "$Options{OutputDir}/index.html") {
-+ Diag "Analysis run complete.\n";
-+ Diag "Viewing analysis results in '$Options{OutputDir}' using scan-view.\n";
-+ my $ScanView = Cwd::realpath("$RealBin/scan-view");
-+ if (! -x $ScanView) { $ScanView = "scan-view"; }
-+ if (! -x $ScanView) { $ScanView = Cwd::realpath("$RealBin/../../scan-view/bin/scan-view"); }
-+ exec $ScanView, "$Options{OutputDir}";
-+ }
-+
-+ if ($Options{ExitStatusFoundBugs}) {
-+ exit 1 if ($NumBugs > 0);
-+ exit 0;
-+ }
-+ }
-+}
-+
-+exit $ExitStatus;
-diff --git tools/clang/tools/scan-build/bin/scan-build.bat tools/clang/tools/scan-build/bin/scan-build.bat.orig
-new file mode 100644
-index 0000000..77be674
---- /dev/null
-+++ tools/clang/tools/scan-build/bin/scan-build.bat
-@@ -0,0 +1 @@
-+perl -S scan-build %*
-diff --git tools/clang/tools/scan-build/bin/set-xcode-analyzer tools/clang/tools/scan-build/bin/set-xcode-analyzer.orig
-new file mode 100755
-index 0000000..8e67482
---- /dev/null
-+++ tools/clang/tools/scan-build/bin/set-xcode-analyzer
-@@ -0,0 +1,114 @@
-+#!/usr/bin/python
-+
-+# [PR 11661] Note that we hardwire to /usr/bin/python because we
-+# want to the use the system version of Python on Mac OS X.
-+# This one has the scripting bridge enabled.
-+
-+import sys
-+if sys.version_info < (2, 7):
-+ print "set-xcode-analyzer requires Python 2.7 or later"
-+ sys.exit(1)
-+
-+import os
-+import subprocess
-+import re
-+import tempfile
-+import shutil
-+import stat
-+from AppKit import *
-+
-+def FindClangSpecs(path):
-+ print "(+) Searching for xcspec file in: ", path
-+ for root, dirs, files in os.walk(path):
-+ for f in files:
-+ if f.endswith(".xcspec") and f.startswith("Clang LLVM"):
-+ yield os.path.join(root, f)
-+
-+def ModifySpec(path, isBuiltinAnalyzer, pathToChecker):
-+ t = tempfile.NamedTemporaryFile(delete=False)
-+ foundAnalyzer = False
-+ with open(path) as f:
-+ if isBuiltinAnalyzer:
-+ # First search for CLANG_ANALYZER_EXEC. Newer
-+ # versions of Xcode set EXEC_PATH to be CLANG_ANALYZER_EXEC.
-+ with open(path) as f2:
-+ for line in f2:
-+ if line.find("CLANG_ANALYZER_EXEC") >= 0:
-+ pathToChecker = "$(CLANG_ANALYZER_EXEC)"
-+ break
-+ # Now create a new file.
-+ for line in f:
-+ if not foundAnalyzer:
-+ if line.find("Static Analyzer") >= 0:
-+ foundAnalyzer = True
-+ else:
-+ m = re.search('^(\s*ExecPath\s*=\s*")', line)
-+ if m:
-+ line = "".join([m.group(0), pathToChecker, '";\n'])
-+ # Do not modify further ExecPath's later in the xcspec.
-+ foundAnalyzer = False
-+ t.write(line)
-+ t.close()
-+ print "(+) processing:", path
-+ try:
-+ shutil.copy(t.name, path)
-+ os.chmod(path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IROTH)
-+ except IOError, why:
-+ print " (-) Cannot update file:", why, "\n"
-+ except OSError, why:
-+ print " (-) Cannot update file:", why, "\n"
-+ os.unlink(t.name)
-+
-+def main():
-+ from optparse import OptionParser
-+ parser = OptionParser('usage: %prog [options]')
-+ parser.set_description(__doc__)
-+ parser.add_option("--use-checker-build", dest="path",
-+ help="Use the Clang located at the provided absolute path, e.g. /Users/foo/checker-1")
-+ parser.add_option("--use-xcode-clang", action="store_const",
-+ const="$(CLANG)", dest="default",
-+ help="Use the Clang bundled with Xcode")
-+ (options, args) = parser.parse_args()
-+ if options.path is None and options.default is None:
-+ parser.error("You must specify a version of Clang to use for static analysis. Specify '-h' for details")
-+
-+ # determine if Xcode is running
-+ for x in NSWorkspace.sharedWorkspace().runningApplications():
-+ if x.localizedName().find("Xcode") >= 0:
-+ print "(-) You must quit Xcode first before modifying its configuration files."
-+ sys.exit(1)
-+
-+ isBuiltinAnalyzer = False
-+ if options.path:
-+ # Expand tildes.
-+ path = os.path.expanduser(options.path)
-+ if not path.endswith("clang"):
-+ print "(+) Using Clang bundled with checker build:", path
-+ path = os.path.join(path, "bin", "clang");
-+ else:
-+ print "(+) Using Clang located at:", path
-+ else:
-+ print "(+) Using the Clang bundled with Xcode"
-+ path = options.default
-+ isBuiltinAnalyzer = True
-+
-+ try:
-+ xcode_path = subprocess.check_output(["xcode-select", "-print-path"])
-+ except AttributeError:
-+ # Fall back to the default install location when using Python < 2.7.0
-+ xcode_path = "/Developer"
-+ if (xcode_path.find(".app/") != -1):
-+ # Cut off the 'Developer' dir, as the xcspec lies in another part
-+ # of the Xcode.app subtree.
-+ xcode_path = xcode_path.rsplit('/Developer', 1)[0]
-+
-+ foundSpec = False
-+ for x in FindClangSpecs(xcode_path):
-+ foundSpec = True
-+ ModifySpec(x, isBuiltinAnalyzer, path)
-+
-+ if foundSpec == False:
-+ print "(-) No compiler configuration file was found. Xcode's analyzer has not been updated."
-+
-+if __name__ == '__main__':
-+ main()
-diff --git tools/clang/tools/scan-build/libexec/c++-analyzer tools/clang/tools/scan-build/libexec/c++-analyzer.orig
-new file mode 100755
-index 0000000..dda5db9
---- /dev/null
-+++ tools/clang/tools/scan-build/libexec/c++-analyzer
-@@ -0,0 +1,8 @@
-+#!/usr/bin/env perl
-+
-+use Cwd qw/ abs_path /;
-+use File::Basename qw/ dirname /;
-+# Add scan-build dir to the list of places where perl looks for modules.
-+use lib dirname(abs_path($0));
-+
-+do 'ccc-analyzer';
-diff --git tools/clang/tools/scan-build/libexec/c++-analyzer.bat tools/clang/tools/scan-build/libexec/c++-analyzer.bat.orig
-new file mode 100644
-index 0000000..69f048a
---- /dev/null
-+++ tools/clang/tools/scan-build/libexec/c++-analyzer.bat
-@@ -0,0 +1 @@
-+perl -S c++-analyzer %*
-diff --git tools/clang/tools/scan-build/libexec/ccc-analyzer tools/clang/tools/scan-build/libexec/ccc-analyzer.orig
-new file mode 100755
-index 0000000..831dd42
---- /dev/null
-+++ tools/clang/tools/scan-build/libexec/ccc-analyzer
-@@ -0,0 +1,777 @@
-+#!/usr/bin/env perl
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+#
-+# A script designed to interpose between the build system and gcc. It invokes
-+# both gcc and the static analyzer.
-+#
-+##===----------------------------------------------------------------------===##
-+
-+use strict;
-+use warnings;
-+use FindBin;
-+use Cwd qw/ getcwd abs_path /;
-+use File::Temp qw/ tempfile /;
-+use File::Path qw / mkpath /;
-+use File::Basename;
-+use Text::ParseWords;
-+
-+##===----------------------------------------------------------------------===##
-+# List form 'system' with STDOUT and STDERR captured.
-+##===----------------------------------------------------------------------===##
-+
-+sub silent_system {
-+ my $HtmlDir = shift;
-+ my $Command = shift;
-+
-+ # Save STDOUT and STDERR and redirect to a temporary file.
-+ open OLDOUT, ">&", \*STDOUT;
-+ open OLDERR, ">&", \*STDERR;
-+ my ($TmpFH, $TmpFile) = tempfile("temp_buf_XXXXXX",
-+ DIR => $HtmlDir,
-+ UNLINK => 1);
-+ open(STDOUT, ">$TmpFile");
-+ open(STDERR, ">&", \*STDOUT);
-+
-+ # Invoke 'system', STDOUT and STDERR are output to a temporary file.
-+ system $Command, @_;
-+
-+ # Restore STDOUT and STDERR.
-+ open STDOUT, ">&", \*OLDOUT;
-+ open STDERR, ">&", \*OLDERR;
-+
-+ return $TmpFH;
-+}
-+
-+##===----------------------------------------------------------------------===##
-+# Compiler command setup.
-+##===----------------------------------------------------------------------===##
-+
-+# Search in the PATH if the compiler exists
-+sub SearchInPath {
-+ my $file = shift;
-+ foreach my $dir (split (':', $ENV{PATH})) {
-+ if (-x "$dir/$file") {
-+ return 1;
-+ }
-+ }
-+ return 0;
-+}
-+
-+my $Compiler;
-+my $Clang;
-+my $DefaultCCompiler;
-+my $DefaultCXXCompiler;
-+my $IsCXX;
-+my $AnalyzerTarget;
-+
-+# If on OSX, use xcrun to determine the SDK root.
-+my $UseXCRUN = 0;
-+
-+if (`uname -a` =~ m/Darwin/) {
-+ $DefaultCCompiler = 'clang';
-+ $DefaultCXXCompiler = 'clang++';
-+ # Older versions of OSX do not have xcrun to
-+ # query the SDK location.
-+ if (-x "/usr/bin/xcrun") {
-+ $UseXCRUN = 1;
-+ }
-+} else {
-+ $DefaultCCompiler = 'gcc';
-+ $DefaultCXXCompiler = 'g++';
-+}
-+
-+if ($FindBin::Script =~ /c\+\+-analyzer/) {
-+ $Compiler = $ENV{'CCC_CXX'};
-+ if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCXXCompiler; }
-+
-+ $Clang = $ENV{'CLANG_CXX'};
-+ if (!defined $Clang || ! -x $Clang) { $Clang = 'clang++'; }
-+
-+ $IsCXX = 1
-+}
-+else {
-+ $Compiler = $ENV{'CCC_CC'};
-+ if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCCompiler; }
-+
-+ $Clang = $ENV{'CLANG'};
-+ if (!defined $Clang || ! -x $Clang) { $Clang = 'clang'; }
-+
-+ $IsCXX = 0
-+}
-+
-+$AnalyzerTarget = $ENV{'CLANG_ANALYZER_TARGET'};
-+
-+##===----------------------------------------------------------------------===##
-+# Cleanup.
-+##===----------------------------------------------------------------------===##
-+
-+my $ReportFailures = $ENV{'CCC_REPORT_FAILURES'};
-+if (!defined $ReportFailures) { $ReportFailures = 1; }
-+
-+my $CleanupFile;
-+my $ResultFile;
-+
-+# Remove any stale files at exit.
-+END {
-+ if (defined $ResultFile && -z $ResultFile) {
-+ unlink($ResultFile);
-+ }
-+ if (defined $CleanupFile) {
-+ unlink($CleanupFile);
-+ }
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Process Clang Crashes.
-+##----------------------------------------------------------------------------##
-+
-+sub GetPPExt {
-+ my $Lang = shift;
-+ if ($Lang =~ /objective-c\+\+/) { return ".mii" };
-+ if ($Lang =~ /objective-c/) { return ".mi"; }
-+ if ($Lang =~ /c\+\+/) { return ".ii"; }
-+ return ".i";
-+}
-+
-+# Set this to 1 if we want to include 'parser rejects' files.
-+my $IncludeParserRejects = 0;
-+my $ParserRejects = "Parser Rejects";
-+my $AttributeIgnored = "Attribute Ignored";
-+my $OtherError = "Other Error";
-+
-+sub ProcessClangFailure {
-+ my ($Clang, $Lang, $file, $Args, $HtmlDir, $ErrorType, $ofile) = @_;
-+ my $Dir = "$HtmlDir/failures";
-+ mkpath $Dir;
-+
-+ my $prefix = "clang_crash";
-+ if ($ErrorType eq $ParserRejects) {
-+ $prefix = "clang_parser_rejects";
-+ }
-+ elsif ($ErrorType eq $AttributeIgnored) {
-+ $prefix = "clang_attribute_ignored";
-+ }
-+ elsif ($ErrorType eq $OtherError) {
-+ $prefix = "clang_other_error";
-+ }
-+
-+ # Generate the preprocessed file with Clang.
-+ my ($PPH, $PPFile) = tempfile( $prefix . "_XXXXXX",
-+ SUFFIX => GetPPExt($Lang),
-+ DIR => $Dir);
-+ close ($PPH);
-+ system $Clang, @$Args, "-E", "-o", $PPFile;
-+
-+ # Create the info file.
-+ open (OUT, ">", "$PPFile.info.txt") or die "Cannot open $PPFile.info.txt\n";
-+ print OUT abs_path($file), "\n";
-+ print OUT "$ErrorType\n";
-+ print OUT "@$Args\n";
-+ close OUT;
-+ `uname -a >> $PPFile.info.txt 2>&1`;
-+ `"$Compiler" -v >> $PPFile.info.txt 2>&1`;
-+ rename($ofile, "$PPFile.stderr.txt");
-+ return (basename $PPFile);
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Running the analyzer.
-+##----------------------------------------------------------------------------##
-+
-+sub GetCCArgs {
-+ my $HtmlDir = shift;
-+ my $mode = shift;
-+ my $Args = shift;
-+ my $line;
-+ my $OutputStream = silent_system($HtmlDir, $Clang, "-###", $mode, @$Args);
-+ while (<$OutputStream>) {
-+ next if (!/\s"?-cc1"?\s/);
-+ $line = $_;
-+ }
-+ die "could not find clang line\n" if (!defined $line);
-+ # Strip leading and trailing whitespace characters.
-+ $line =~ s/^\s+|\s+$//g;
-+ my @items = quotewords('\s+', 0, $line);
-+ my $cmd = shift @items;
-+ die "cannot find 'clang' in 'clang' command\n" if (!($cmd =~ /clang/));
-+ return \@items;
-+}
-+
-+sub Analyze {
-+ my ($Clang, $OriginalArgs, $AnalyzeArgs, $Lang, $Output, $Verbose, $HtmlDir,
-+ $file) = @_;
-+
-+ my @Args = @$OriginalArgs;
-+ my $Cmd;
-+ my @CmdArgs;
-+ my @CmdArgsSansAnalyses;
-+
-+ if ($Lang =~ /header/) {
-+ exit 0 if (!defined ($Output));
-+ $Cmd = 'cp';
-+ push @CmdArgs, $file;
-+ # Remove the PCH extension.
-+ $Output =~ s/[.]gch$//;
-+ push @CmdArgs, $Output;
-+ @CmdArgsSansAnalyses = @CmdArgs;
-+ }
-+ else {
-+ $Cmd = $Clang;
-+
-+ # Create arguments for doing regular parsing.
-+ my $SyntaxArgs = GetCCArgs($HtmlDir, "-fsyntax-only", \@Args);
-+ @CmdArgsSansAnalyses = @$SyntaxArgs;
-+
-+ # Create arguments for doing static analysis.
-+ if (defined $ResultFile) {
-+ push @Args, '-o', $ResultFile;
-+ }
-+ elsif (defined $HtmlDir) {
-+ push @Args, '-o', $HtmlDir;
-+ }
-+ if ($Verbose) {
-+ push @Args, "-Xclang", "-analyzer-display-progress";
-+ }
-+
-+ foreach my $arg (@$AnalyzeArgs) {
-+ push @Args, "-Xclang", $arg;
-+ }
-+
-+ # Display Ubiviz graph?
-+ if (defined $ENV{'CCC_UBI'}) {
-+ push @Args, "-Xclang", "-analyzer-viz-egraph-ubigraph";
-+ }
-+
-+ if (defined $AnalyzerTarget) {
-+ push @Args, "-target", $AnalyzerTarget;
-+ }
-+
-+ my $AnalysisArgs = GetCCArgs($HtmlDir, "--analyze", \@Args);
-+ @CmdArgs = @$AnalysisArgs;
-+ }
-+
-+ my @PrintArgs;
-+ my $dir;
-+
-+ if ($Verbose) {
-+ $dir = getcwd();
-+ print STDERR "\n[LOCATION]: $dir\n";
-+ push @PrintArgs,"'$Cmd'";
-+ foreach my $arg (@CmdArgs) {
-+ push @PrintArgs,"\'$arg\'";
-+ }
-+ }
-+ if ($Verbose == 1) {
-+ # We MUST print to stderr. Some clients use the stdout output of
-+ # gcc for various purposes.
-+ print STDERR join(' ', @PrintArgs);
-+ print STDERR "\n";
-+ }
-+ elsif ($Verbose == 2) {
-+ print STDERR "#SHELL (cd '$dir' && @PrintArgs)\n";
-+ }
-+
-+ # Save STDOUT and STDERR of clang to a temporary file and reroute
-+ # all clang output to ccc-analyzer's STDERR.
-+ # We save the output file in the 'crashes' directory if clang encounters
-+ # any problems with the file.
-+ my ($ofh, $ofile) = tempfile("clang_output_XXXXXX", DIR => $HtmlDir);
-+
-+ my $OutputStream = silent_system($HtmlDir, $Cmd, @CmdArgs);
-+ while ( <$OutputStream> ) {
-+ print $ofh $_;
-+ print STDERR $_;
-+ }
-+ my $Result = $?;
-+ close $ofh;
-+
-+ # Did the command die because of a signal?
-+ if ($ReportFailures) {
-+ if ($Result & 127 and $Cmd eq $Clang and defined $HtmlDir) {
-+ ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-+ $HtmlDir, "Crash", $ofile);
-+ }
-+ elsif ($Result) {
-+ if ($IncludeParserRejects && !($file =~/conftest/)) {
-+ ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-+ $HtmlDir, $ParserRejects, $ofile);
-+ } else {
-+ ProcessClangFailure($Clang, $Lang, $file, \@CmdArgsSansAnalyses,
-+ $HtmlDir, $OtherError, $ofile);
-+ }
-+ }
-+ else {
-+ # Check if there were any unhandled attributes.
-+ if (open(CHILD, $ofile)) {
-+ my %attributes_not_handled;
-+
-+ # Don't flag warnings about the following attributes that we
-+ # know are currently not supported by Clang.
-+ $attributes_not_handled{"cdecl"} = 1;
-+
-+ my $ppfile;
-+ while (<CHILD>) {
-+ next if (! /warning: '([^\']+)' attribute ignored/);
-+
-+ # Have we already spotted this unhandled attribute?
-+ next if (defined $attributes_not_handled{$1});
-+ $attributes_not_handled{$1} = 1;
-+
-+ # Get the name of the attribute file.
-+ my $dir = "$HtmlDir/failures";
-+ my $afile = "$dir/attribute_ignored_$1.txt";
-+
-+ # Only create another preprocessed file if the attribute file
-+ # doesn't exist yet.
-+ next if (-e $afile);
-+
-+ # Add this file to the list of files that contained this attribute.
-+ # Generate a preprocessed file if we haven't already.
-+ if (!(defined $ppfile)) {
-+ $ppfile = ProcessClangFailure($Clang, $Lang, $file,
-+ \@CmdArgsSansAnalyses,
-+ $HtmlDir, $AttributeIgnored, $ofile);
-+ }
-+
-+ mkpath $dir;
-+ open(AFILE, ">$afile");
-+ print AFILE "$ppfile\n";
-+ close(AFILE);
-+ }
-+ close CHILD;
-+ }
-+ }
-+ }
-+
-+ unlink($ofile);
-+}
-+
-+##----------------------------------------------------------------------------##
-+# Lookup tables.
-+##----------------------------------------------------------------------------##
-+
-+my %CompileOptionMap = (
-+ '-nostdinc' => 0,
-+ '-include' => 1,
-+ '-idirafter' => 1,
-+ '-imacros' => 1,
-+ '-iprefix' => 1,
-+ '-iquote' => 1,
-+ '-iwithprefix' => 1,
-+ '-iwithprefixbefore' => 1
-+);
-+
-+my %LinkerOptionMap = (
-+ '-framework' => 1,
-+ '-fobjc-link-runtime' => 0
-+);
-+
-+my %CompilerLinkerOptionMap = (
-+ '-Wwrite-strings' => 0,
-+ '-ftrapv-handler' => 1, # specifically call out separated -f flag
-+ '-mios-simulator-version-min' => 0, # This really has 1 argument, but always has '='
-+ '-isysroot' => 1,
-+ '-arch' => 1,
-+ '-m32' => 0,
-+ '-m64' => 0,
-+ '-stdlib' => 0, # This is really a 1 argument, but always has '='
-+ '--sysroot' => 1,
-+ '-target' => 1,
-+ '-v' => 0,
-+ '-mmacosx-version-min' => 0, # This is really a 1 argument, but always has '='
-+ '-miphoneos-version-min' => 0 # This is really a 1 argument, but always has '='
-+);
-+
-+my %IgnoredOptionMap = (
-+ '-MT' => 1, # Ignore these preprocessor options.
-+ '-MF' => 1,
-+
-+ '-fsyntax-only' => 0,
-+ '-save-temps' => 0,
-+ '-install_name' => 1,
-+ '-exported_symbols_list' => 1,
-+ '-current_version' => 1,
-+ '-compatibility_version' => 1,
-+ '-init' => 1,
-+ '-e' => 1,
-+ '-seg1addr' => 1,
-+ '-bundle_loader' => 1,
-+ '-multiply_defined' => 1,
-+ '-sectorder' => 3,
-+ '--param' => 1,
-+ '-u' => 1,
-+ '--serialize-diagnostics' => 1
-+);
-+
-+my %LangMap = (
-+ 'c' => $IsCXX ? 'c++' : 'c',
-+ 'cp' => 'c++',
-+ 'cpp' => 'c++',
-+ 'cxx' => 'c++',
-+ 'txx' => 'c++',
-+ 'cc' => 'c++',
-+ 'C' => 'c++',
-+ 'ii' => 'c++-cpp-output',
-+ 'i' => $IsCXX ? 'c++-cpp-output' : 'c-cpp-output',
-+ 'm' => 'objective-c',
-+ 'mi' => 'objective-c-cpp-output',
-+ 'mm' => 'objective-c++',
-+ 'mii' => 'objective-c++-cpp-output',
-+);
-+
-+my %UniqueOptions = (
-+ '-isysroot' => 0
-+);
-+
-+##----------------------------------------------------------------------------##
-+# Languages accepted.
-+##----------------------------------------------------------------------------##
-+
-+my %LangsAccepted = (
-+ "objective-c" => 1,
-+ "c" => 1,
-+ "c++" => 1,
-+ "objective-c++" => 1,
-+ "c-cpp-output" => 1,
-+ "objective-c-cpp-output" => 1,
-+ "c++-cpp-output" => 1
-+);
-+
-+##----------------------------------------------------------------------------##
-+# Main Logic.
-+##----------------------------------------------------------------------------##
-+
-+my $Action = 'link';
-+my @CompileOpts;
-+my @LinkOpts;
-+my @Files;
-+my $Lang;
-+my $Output;
-+my %Uniqued;
-+
-+# Forward arguments to gcc.
-+my $Status = system($Compiler,@ARGV);
-+if (defined $ENV{'CCC_ANALYZER_LOG'}) {
-+ print STDERR "$Compiler @ARGV\n";
-+}
-+if ($Status) { exit($Status >> 8); }
-+
-+# Get the analysis options.
-+my $Analyses = $ENV{'CCC_ANALYZER_ANALYSIS'};
-+
-+# Get the plugins to load.
-+my $Plugins = $ENV{'CCC_ANALYZER_PLUGINS'};
-+
-+# Get the store model.
-+my $StoreModel = $ENV{'CCC_ANALYZER_STORE_MODEL'};
-+
-+# Get the constraints engine.
-+my $ConstraintsModel = $ENV{'CCC_ANALYZER_CONSTRAINTS_MODEL'};
-+
-+#Get the internal stats setting.
-+my $InternalStats = $ENV{'CCC_ANALYZER_INTERNAL_STATS'};
-+
-+# Get the output format.
-+my $OutputFormat = $ENV{'CCC_ANALYZER_OUTPUT_FORMAT'};
-+if (!defined $OutputFormat) { $OutputFormat = "html"; }
-+
-+# Get the config options.
-+my $ConfigOptions = $ENV{'CCC_ANALYZER_CONFIG'};
-+
-+# Determine the level of verbosity.
-+my $Verbose = 0;
-+if (defined $ENV{'CCC_ANALYZER_VERBOSE'}) { $Verbose = 1; }
-+if (defined $ENV{'CCC_ANALYZER_LOG'}) { $Verbose = 2; }
-+
-+# Get the HTML output directory.
-+my $HtmlDir = $ENV{'CCC_ANALYZER_HTML'};
-+
-+my %DisabledArchs = ('ppc' => 1, 'ppc64' => 1);
-+my %ArchsSeen;
-+my $HadArch = 0;
-+my $HasSDK = 0;
-+
-+# Process the arguments.
-+foreach (my $i = 0; $i < scalar(@ARGV); ++$i) {
-+ my $Arg = $ARGV[$i];
-+ my ($ArgKey) = split /=/,$Arg,2;
-+
-+ # Be friendly to "" in the argument list.
-+ if (!defined($ArgKey)) {
-+ next;
-+ }
-+
-+ # Modes ccc-analyzer supports
-+ if ($Arg =~ /^-(E|MM?)$/) { $Action = 'preprocess'; }
-+ elsif ($Arg eq '-c') { $Action = 'compile'; }
-+ elsif ($Arg =~ /^-print-prog-name/) { exit 0; }
-+
-+ # Specially handle duplicate cases of -arch
-+ if ($Arg eq "-arch") {
-+ my $arch = $ARGV[$i+1];
-+ # We don't want to process 'ppc' because of Clang's lack of support
-+ # for Altivec (also some #defines won't likely be defined correctly, etc.)
-+ if (!(defined $DisabledArchs{$arch})) { $ArchsSeen{$arch} = 1; }
-+ $HadArch = 1;
-+ ++$i;
-+ next;
-+ }
-+
-+ # On OSX/iOS, record if an SDK path was specified. This
-+ # is innocuous for other platforms, so the check just happens.
-+ if ($Arg =~ /^-isysroot/) {
-+ $HasSDK = 1;
-+ }
-+
-+ # Options with possible arguments that should pass through to compiler.
-+ if (defined $CompileOptionMap{$ArgKey}) {
-+ my $Cnt = $CompileOptionMap{$ArgKey};
-+ push @CompileOpts,$Arg;
-+ while ($Cnt > 0) { ++$i; --$Cnt; push @CompileOpts, $ARGV[$i]; }
-+ next;
-+ }
-+ # Handle the case where there isn't a space after -iquote
-+ if ($Arg =~ /^-iquote.*/) {
-+ push @CompileOpts,$Arg;
-+ next;
-+ }
-+
-+ # Options with possible arguments that should pass through to linker.
-+ if (defined $LinkerOptionMap{$ArgKey}) {
-+ my $Cnt = $LinkerOptionMap{$ArgKey};
-+ push @LinkOpts,$Arg;
-+ while ($Cnt > 0) { ++$i; --$Cnt; push @LinkOpts, $ARGV[$i]; }
-+ next;
-+ }
-+
-+ # Options with possible arguments that should pass through to both compiler
-+ # and the linker.
-+ if (defined $CompilerLinkerOptionMap{$ArgKey}) {
-+ my $Cnt = $CompilerLinkerOptionMap{$ArgKey};
-+
-+ # Check if this is an option that should have a unique value, and if so
-+ # determine if the value was checked before.
-+ if ($UniqueOptions{$Arg}) {
-+ if (defined $Uniqued{$Arg}) {
-+ $i += $Cnt;
-+ next;
-+ }
-+ $Uniqued{$Arg} = 1;
-+ }
-+
-+ push @CompileOpts,$Arg;
-+ push @LinkOpts,$Arg;
-+
-+ while ($Cnt > 0) {
-+ ++$i; --$Cnt;
-+ push @CompileOpts, $ARGV[$i];
-+ push @LinkOpts, $ARGV[$i];
-+ }
-+ next;
-+ }
-+
-+ # Ignored options.
-+ if (defined $IgnoredOptionMap{$ArgKey}) {
-+ my $Cnt = $IgnoredOptionMap{$ArgKey};
-+ while ($Cnt > 0) {
-+ ++$i; --$Cnt;
-+ }
-+ next;
-+ }
-+
-+ # Compile mode flags.
-+ if ($Arg =~ /^-(?:[DIU]|isystem)(.*)$/) {
-+ my $Tmp = $Arg;
-+ if ($1 eq '') {
-+ # FIXME: Check if we are going off the end.
-+ ++$i;
-+ $Tmp = $Arg . $ARGV[$i];
-+ }
-+ push @CompileOpts,$Tmp;
-+ next;
-+ }
-+
-+ if ($Arg =~ /^-m.*/) {
-+ push @CompileOpts,$Arg;
-+ next;
-+ }
-+
-+ # Language.
-+ if ($Arg eq '-x') {
-+ $Lang = $ARGV[$i+1];
-+ ++$i; next;
-+ }
-+
-+ # Output file.
-+ if ($Arg eq '-o') {
-+ ++$i;
-+ $Output = $ARGV[$i];
-+ next;
-+ }
-+
-+ # Get the link mode.
-+ if ($Arg =~ /^-[l,L,O]/) {
-+ if ($Arg eq '-O') { push @LinkOpts,'-O1'; }
-+ elsif ($Arg eq '-Os') { push @LinkOpts,'-O2'; }
-+ else { push @LinkOpts,$Arg; }
-+
-+ # Must pass this along for the __OPTIMIZE__ macro
-+ if ($Arg =~ /^-O/) { push @CompileOpts,$Arg; }
-+ next;
-+ }
-+
-+ if ($Arg =~ /^-std=/) {
-+ push @CompileOpts,$Arg;
-+ next;
-+ }
-+
-+ # Get the compiler/link mode.
-+ if ($Arg =~ /^-F(.+)$/) {
-+ my $Tmp = $Arg;
-+ if ($1 eq '') {
-+ # FIXME: Check if we are going off the end.
-+ ++$i;
-+ $Tmp = $Arg . $ARGV[$i];
-+ }
-+ push @CompileOpts,$Tmp;
-+ push @LinkOpts,$Tmp;
-+ next;
-+ }
-+
-+ # Input files.
-+ if ($Arg eq '-filelist') {
-+ # FIXME: Make sure we aren't walking off the end.
-+ open(IN, $ARGV[$i+1]);
-+ while (<IN>) { s/\015?\012//; push @Files,$_; }
-+ close(IN);
-+ ++$i;
-+ next;
-+ }
-+
-+ if ($Arg =~ /^-f/) {
-+ push @CompileOpts,$Arg;
-+ push @LinkOpts,$Arg;
-+ next;
-+ }
-+
-+ # Handle -Wno-. We don't care about extra warnings, but
-+ # we should suppress ones that we don't want to see.
-+ if ($Arg =~ /^-Wno-/) {
-+ push @CompileOpts, $Arg;
-+ next;
-+ }
-+
-+ # Handle -Xclang some-arg. Add both arguments to the compiler options.
-+ if ($Arg =~ /^-Xclang$/) {
-+ # FIXME: Check if we are going off the end.
-+ ++$i;
-+ push @CompileOpts, $Arg;
-+ push @CompileOpts, $ARGV[$i];
-+ next;
-+ }
-+
-+ if (!($Arg =~ /^-/)) {
-+ push @Files, $Arg;
-+ next;
-+ }
-+}
-+
-+# If we are on OSX and have an installation where the
-+# default SDK is inferred by xcrun use xcrun to infer
-+# the SDK.
-+if (not $HasSDK and $UseXCRUN) {
-+ my $sdk = `/usr/bin/xcrun --show-sdk-path -sdk macosx`;
-+ chomp $sdk;
-+ push @CompileOpts, "-isysroot", $sdk;
-+}
-+
-+if ($Action eq 'compile' or $Action eq 'link') {
-+ my @Archs = keys %ArchsSeen;
-+ # Skip the file if we don't support the architectures specified.
-+ exit 0 if ($HadArch && scalar(@Archs) == 0);
-+
-+ foreach my $file (@Files) {
-+ # Determine the language for the file.
-+ my $FileLang = $Lang;
-+
-+ if (!defined($FileLang)) {
-+ # Infer the language from the extension.
-+ if ($file =~ /[.]([^.]+)$/) {
-+ $FileLang = $LangMap{$1};
-+ }
-+ }
-+
-+ # FileLang still not defined? Skip the file.
-+ next if (!defined $FileLang);
-+
-+ # Language not accepted?
-+ next if (!defined $LangsAccepted{$FileLang});
-+
-+ my @CmdArgs;
-+ my @AnalyzeArgs;
-+
-+ if ($FileLang ne 'unknown') {
-+ push @CmdArgs, '-x', $FileLang;
-+ }
-+
-+ if (defined $StoreModel) {
-+ push @AnalyzeArgs, "-analyzer-store=$StoreModel";
-+ }
-+
-+ if (defined $ConstraintsModel) {
-+ push @AnalyzeArgs, "-analyzer-constraints=$ConstraintsModel";
-+ }
-+
-+ if (defined $InternalStats) {
-+ push @AnalyzeArgs, "-analyzer-stats";
-+ }
-+
-+ if (defined $Analyses) {
-+ push @AnalyzeArgs, split '\s+', $Analyses;
-+ }
-+
-+ if (defined $Plugins) {
-+ push @AnalyzeArgs, split '\s+', $Plugins;
-+ }
-+
-+ if (defined $OutputFormat) {
-+ push @AnalyzeArgs, "-analyzer-output=" . $OutputFormat;
-+ if ($OutputFormat =~ /plist/) {
-+ # Change "Output" to be a file.
-+ my ($h, $f) = tempfile("report-XXXXXX", SUFFIX => ".plist",
-+ DIR => $HtmlDir);
-+ $ResultFile = $f;
-+ # If the HtmlDir is not set, we should clean up the plist files.
-+ if (!defined $HtmlDir || -z $HtmlDir) {
-+ $CleanupFile = $f;
-+ }
-+ }
-+ }
-+ if (defined $ConfigOptions) {
-+ push @AnalyzeArgs, split '\s+', $ConfigOptions;
-+ }
-+
-+ push @CmdArgs, @CompileOpts;
-+ push @CmdArgs, $file;
-+
-+ if (scalar @Archs) {
-+ foreach my $arch (@Archs) {
-+ my @NewArgs;
-+ push @NewArgs, '-arch', $arch;
-+ push @NewArgs, @CmdArgs;
-+ Analyze($Clang, \@NewArgs, \@AnalyzeArgs, $FileLang, $Output,
-+ $Verbose, $HtmlDir, $file);
-+ }
-+ }
-+ else {
-+ Analyze($Clang, \@CmdArgs, \@AnalyzeArgs, $FileLang, $Output,
-+ $Verbose, $HtmlDir, $file);
-+ }
-+ }
-+}
-diff --git tools/clang/tools/scan-build/libexec/ccc-analyzer.bat tools/clang/tools/scan-build/libexec/ccc-analyzer.bat.orig
-new file mode 100644
-index 0000000..2a85376
---- /dev/null
-+++ tools/clang/tools/scan-build/libexec/ccc-analyzer.bat
-@@ -0,0 +1 @@
-+perl -S ccc-analyzer %*
-diff --git tools/clang/tools/scan-build/man/scan-build.1 tools/clang/tools/scan-build/man/scan-build.1.orig
-new file mode 100644
-index 0000000..3d3a9f8
---- /dev/null
-+++ tools/clang/tools/scan-build/man/scan-build.1
-@@ -0,0 +1,349 @@
-+.\" This file is distributed under the University of Illinois Open Source
-+.\" License. See LICENSE.TXT for details.
-+.\" $Id$
-+.Dd May 25, 2012
-+.Dt SCAN-BUILD 1
-+.Os "clang" "3.5"
-+.Sh NAME
-+.Nm scan-build
-+.Nd Clang static analyzer
-+.Sh SYNOPSIS
-+.Nm
-+.Op Fl ohkvV
-+.Op Fl analyze-headers
-+.Op Fl enable-checker Op Ar checker_name
-+.Op Fl disable-checker Op Ar checker_name
-+.Op Fl Fl help
-+.Op Fl Fl help-checkers
-+.Op Fl Fl html-title Op Ar =title
-+.Op Fl Fl keep-going
-+.Op Fl plist
-+.Op Fl plist-html
-+.Op Fl Fl status-bugs
-+.Op Fl Fl use-c++ Op Ar =compiler_path
-+.Op Fl Fl use-cc Op Ar =compiler_path
-+.Op Fl Fl view
-+.Op Fl constraints Op Ar model
-+.Op Fl maxloop Ar N
-+.Op Fl no-failure-reports
-+.Op Fl stats
-+.Op Fl store Op Ar model
-+.Ar build_command
-+.Op build_options
-+.\"
-+.\" Sh DESCRIPTION
-+.Sh DESCRIPTION
-+.Nm
-+is a Perl script that invokes the Clang static analyzer. Options used by
-+.Nm
-+or by the analyzer appear first, followed by the
-+.Ar build_command
-+and any
-+.Ar build_options
-+normally used to build the target system.
-+.Pp
-+The static analyzer employs a long list of checking algorithms, see
-+.Sx CHECKERS .
-+Output can be written in standard
-+.Li .plist
-+and/or HTML format.
-+.Pp
-+The following options are supported:
-+.Bl -tag -width indent
-+.It Fl analyze-headers
-+Also analyze functions in #included files.
-+.It Fl enable-checker Ar checker_name , Fl disable-checker Ar checker_name
-+Enable/disable
-+.Ar checker_name .
-+See
-+.Sx CHECKERS .
-+.It Fl h , Fl Fl help
-+Display this message.
-+.It Fl Fl help-checkers
-+List default checkers, see
-+.Sx CHECKERS .
-+.It Fl Fl html-title Ns Op = Ns Ar title
-+Specify the title used on generated HTML pages.
-+A default title is generated if
-+.Ar title
-+is not specified.
-+.It Fl k , Fl Fl keep-going
-+Add a
-+.Dq keep on going
-+option to
-+.Ar build_command .
-+Currently supports make and xcodebuild. This is a convenience option;
-+one can specify this behavior directly using build options.
-+.It Fl o
-+Target directory for HTML report files. Subdirectories will be
-+created as needed to represent separate invocations
-+of the analyzer. If this option is not specified, a directory is
-+created in /tmp (TMPDIR on Mac OS X) to store the reports.
-+.It Fl plist
-+Output the results as a set of
-+.Li .plist
-+files. (By default the output of
-+.Nm
-+is a set of HTML files.)
-+.It Fl plist-html
-+Output the results as a set of HTML and .plist files
-+.It Fl Fl status-bugs
-+Set exit status to 1 if it found potential bugs and 0 otherwise. By
-+default the exit status of
-+.Nm
-+is that returned by
-+.Ar build_command .
-+.It Fl Fl use-c++ Ns Op = Ns Ar compiler_path
-+Guess the default compiler for your C++ and Objective-C++ code. Use this
-+option to specify an alternate compiler.
-+.It Fl Fl use-cc Ns Op = Ns Ar compiler_path
-+Guess the default compiler for your C and Objective-C code. Use this
-+option to specify an alternate compiler.
-+.It Fl v
-+Verbose output from
-+.Nm
-+and the analyzer. A second and
-+third
-+.Ar v
-+increases verbosity.
-+.It Fl V , Fl Fl view
-+View analysis results in a web browser when the build completes.
-+.It Fl constraints Op Ar model
-+Specify the contraint engine used by the analyzer. By default the
-+.Ql range
-+model is used. Specifying
-+.Ql basic
-+uses a simpler, less powerful constraint model used by checker-0.160
-+and earlier.
-+.It Fl maxloop Ar N
-+Specifiy the number of times a block can be visited before giving
-+up. Default is 4. Increase for more comprehensive coverage at a
-+cost of speed.
-+.It Fl no-failure-reports
-+Do not create a
-+.Ql failures
-+subdirectory that includes analyzer crash reports and preprocessed
-+source files.
-+.It Fl stats
-+Generates visitation statistics for the project being analyzed.
-+.It Fl store Op Ar model
-+Specify the store model used by the analyzer. By default, the
-+.Ql region
-+store model is used.
-+.Ql region
-+specifies a field-
-+sensitive store model. Users can also specify
-+.Ql basic
-+which is far less precise but can more quickly analyze code.
-+.Ql basic
-+was the default store model for checker-0.221 and earlier.
-+.\"
-+.El
-+.Sh EXIT STATUS
-+.Nm
-+returns the value returned by
-+.Ar build_command
-+unless
-+.Fl Fl status-bugs
-+or
-+.Fl Fl keep-going
-+is used.
-+.\"
-+.\" Other sections not yet used ...
-+.\" .Sh ENVIRONMENT
-+.\" .Sh FILES
-+.\" .Sh DIAGNOSTICS
-+.\" .Sh COMPATIBILITY
-+.\" .Sh HISTORY
-+.\" .Sh BUGS
-+.\"
-+.Sh CHECKERS
-+The checkers listed below may be enabled/disabled using the
-+.Fl enable-checker
-+and
-+.Fl disable-checker
-+options.
-+A default group of checkers is run unless explicitly disabled.
-+Exactly which checkers constitute the default group is a function
-+of the operating system in use; they are listed with
-+.Fl Fl help-checkers .
-+.Bl -tag -width indent.
-+.It core.AdjustedReturnValue
-+Check to see if the return value of a function call is different than
-+the caller expects (e.g., from calls through function pointers).
-+.It core.AttributeNonNull
-+Check for null pointers passed as arguments to a function whose arguments are marked with the
-+.Ql nonnull
-+attribute.
-+.It core.CallAndMessage
-+Check for logical errors for function calls and Objective-C message expressions (e.g., uninitialized arguments, null function pointers).
-+.It core.DivideZero
-+Check for division by zero.
-+.It core.NullDereference
-+Check for dereferences of null pointers.
-+.It core.StackAddressEscape
-+Check that addresses to stack memory do not escape the function.
-+.It core.UndefinedBinaryOperatorResult
-+Check for undefined results of binary operators.
-+.It core.VLASize
-+Check for declarations of VLA of undefined or zero size.
-+.It core.builtin.BuiltinFunctions
-+Evaluate compiler builtin functions, e.g.
-+.Fn alloca .
-+.It core.builtin.NoReturnFunctions
-+Evaluate
-+.Ql panic
-+functions that are known to not return to the caller.
-+.It core.uninitialized.ArraySubscript
-+Check for uninitialized values used as array subscripts.
-+.It core.uninitialized.Assign
-+Check for assigning uninitialized values.
-+.It core.uninitialized.Branch
-+Check for uninitialized values used as branch conditions.
-+.It core.uninitialized.CapturedBlockVariable
-+Check for blocks that capture uninitialized values.
-+.It core.uninitialized.UndefReturn
-+Check for uninitialized values being returned to the caller.
-+.It deadcode.DeadStores
-+Check for values stored to variables that are never read afterwards.
-+.It debug.DumpCFG
-+Display Control-Flow Graphs.
-+.It debug.DumpCallGraph
-+Display Call Graph.
-+.It debug.DumpDominators
-+Print the dominance tree for a given Control-Flow Graph.
-+.It debug.DumpLiveVars
-+Print results of live variable analysis.
-+.It debug.Stats
-+Emit warnings with analyzer statistics.
-+.It debug.TaintTest
-+Mark tainted symbols as such.
-+.It debug.ViewCFG
-+View Control-Flow Graphs using
-+.Ic GraphViz .
-+.It debug.ViewCallGraph
-+View Call Graph using
-+.Ic GraphViz .
-+.It llvm.Conventions
-+Check code for LLVM codebase conventions.
-+.It osx.API
-+Check for proper uses of various Mac OS X APIs.
-+.It osx.AtomicCAS
-+Evaluate calls to
-+.Vt OSAtomic
-+functions.
-+.It osx.SecKeychainAPI
-+Check for proper uses of Secure Keychain APIs.
-+.It osx.cocoa.AtSync
-+Check for null pointers used as mutexes for @synchronized.
-+.It osx.cocoa.ClassRelease
-+Check for sending
-+.Ql retain ,
-+.Ql release,
-+or
-+.Ql autorelease
-+directly to a Class.
-+.It osx.cocoa.IncompatibleMethodTypes
-+Warn about Objective-C method signatures with type incompatibilities.
-+.It osx.cocoa.NSAutoreleasePool
-+Warn for suboptimal uses of
-+.Vt NSAutoreleasePool
-+in Objective-C GC mode.
-+.It osx.cocoa.NSError
-+Check usage of NSError** parameters.
-+.It osx.cocoa.NilArg
-+Check for prohibited nil arguments to Objective-C method calls.
-+.It osx.cocoa.RetainCount
-+Check for leaks and improper reference count management.
-+.It osx.cocoa.SelfInit
-+Check that
-+.Ql self
-+is properly initialized inside an initializer method.
-+.It osx.cocoa.UnusedIvars
-+Warn about private ivars that are never used.
-+.It osx.cocoa.VariadicMethodTypes
-+Check for passing non-Objective-C types to variadic methods that expect only Objective-C types.
-+.It osx.coreFoundation.CFError
-+Check usage of CFErrorRef* parameters.
-+.It osx.coreFoundation.CFNumber
-+Check for proper uses of
-+.Fn CFNumberCreate .
-+.It osx.coreFoundation.CFRetainRelease
-+Check for null arguments to
-+.Fn CFRetain ,
-+.Fn CFRelease ,
-+and
-+.Fn CFMakeCollectable .
-+.It osx.coreFoundation.containers.OutOfBounds
-+Checks for index out-of-bounds when using the
-+.Vt CFArray
-+API.
-+.It osx.coreFoundation.containers.PointerSizedValues
-+Warns if
-+.Vt CFArray ,
-+.Vt CFDictionary ,
-+or
-+.Vt CFSet
-+are created with non-pointer-size values.
-+.It security.FloatLoopCounter
-+Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP).
-+.It security.insecureAPI.UncheckedReturn
-+Warn on uses of functions whose return values must be always checked.
-+.It security.insecureAPI.getpw
-+Warn on uses of
-+.Fn getpw .
-+.It security.insecureAPI.gets
-+Warn on uses of
-+.Fn gets .
-+.It security.insecureAPI.mkstemp
-+Warn when
-+.Fn mkstemp
-+is passed fewer than 6 X's in the format string.
-+.It security.insecureAPI.mktemp
-+Warn on uses of
-+.Fn mktemp .
-+.It security.insecureAPI.rand
-+Warn on uses of
-+.Fn rand ,
-+.Fn random ,
-+and related functions.
-+.It security.insecureAPI.strcpy
-+Warn on uses of
-+.Fn strcpy
-+and
-+.Fn strcat .
-+.It security.insecureAPI.vfork
-+Warn on uses of
-+.Fn vfork .
-+.It unix.API
-+Check calls to various UNIX/Posix functions.
-+.It unix.Malloc
-+Check for memory leaks, double free, and use-after-free.
-+.It unix.cstring.BadSizeArg
-+Check the size argument passed into C string functions for common
-+erroneous patterns.
-+.It unix.cstring.NullArg
-+Check for null pointers being passed as arguments to C string functions.
-+.El
-+.\"
-+.Sh EXAMPLE
-+.Ic scan-build -o /tmp/myhtmldir make -j4
-+.Pp
-+The above example causes analysis reports to be deposited into
-+a subdirectory of
-+.Pa /tmp/myhtmldir
-+and to run
-+.Ic make
-+with the
-+.Fl j4
-+option.
-+A different subdirectory is created each time
-+.Nm
-+analyzes a project.
-+The analyzer should support most parallel builds, but not distributed builds.
-+.Sh AUTHORS
-+.Nm
-+was written by
-+.An "Ted Kremenek" .
-+Documentation contributed by
-+.An "James K. Lowden" Aq jklowden@schemamania.org .
-diff --git tools/clang/tools/scan-build/share/scan-build/scanview.css tools/clang/tools/scan-build/share/scan-build/scanview.css.orig
-new file mode 100644
-index 0000000..cf8a5a6
---- /dev/null
-+++ tools/clang/tools/scan-build/share/scan-build/scanview.css
-@@ -0,0 +1,62 @@
-+body { color:#000000; background-color:#ffffff }
-+body { font-family: Helvetica, sans-serif; font-size:9pt }
-+h1 { font-size: 14pt; }
-+h2 { font-size: 12pt; }
-+table { font-size:9pt }
-+table { border-spacing: 0px; border: 1px solid black }
-+th, table thead {
-+ background-color:#eee; color:#666666;
-+ font-weight: bold; cursor: default;
-+ text-align:center;
-+ font-weight: bold; font-family: Verdana;
-+ white-space:nowrap;
-+}
-+.W { font-size:0px }
-+th, td { padding:5px; padding-left:8px; text-align:left }
-+td.SUMM_DESC { padding-left:12px }
-+td.DESC { white-space:pre }
-+td.Q { text-align:right }
-+td { text-align:left }
-+tbody.scrollContent { overflow:auto }
-+
-+table.form_group {
-+ background-color: #ccc;
-+ border: 1px solid #333;
-+ padding: 2px;
-+}
-+
-+table.form_inner_group {
-+ background-color: #ccc;
-+ border: 1px solid #333;
-+ padding: 0px;
-+}
-+
-+table.form {
-+ background-color: #999;
-+ border: 1px solid #333;
-+ padding: 2px;
-+}
-+
-+td.form_label {
-+ text-align: right;
-+ vertical-align: top;
-+}
-+/* For one line entires */
-+td.form_clabel {
-+ text-align: right;
-+ vertical-align: center;
-+}
-+td.form_value {
-+ text-align: left;
-+ vertical-align: top;
-+}
-+td.form_submit {
-+ text-align: right;
-+ vertical-align: top;
-+}
-+
-+h1.SubmitFail {
-+ color: #f00;
-+}
-+h1.SubmitOk {
-+}
-diff --git tools/clang/tools/scan-build/share/scan-build/sorttable.js tools/clang/tools/scan-build/share/scan-build/sorttable.js.orig
-new file mode 100644
-index 0000000..32faa07
---- /dev/null
-+++ tools/clang/tools/scan-build/share/scan-build/sorttable.js
-@@ -0,0 +1,492 @@
-+/*
-+ SortTable
-+ version 2
-+ 7th April 2007
-+ Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
-+
-+ Instructions:
-+ Download this file
-+ Add <script src="sorttable.js"></script> to your HTML
-+ Add class="sortable" to any table you'd like to make sortable
-+ Click on the headers to sort
-+
-+ Thanks to many, many people for contributions and suggestions.
-+ Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
-+ This basically means: do what you want with it.
-+*/
-+
-+
-+var stIsIE = /*@cc_on!@*/false;
-+
-+sorttable = {
-+ init: function() {
-+ // quit if this function has already been called
-+ if (arguments.callee.done) return;
-+ // flag this function so we don't do the same thing twice
-+ arguments.callee.done = true;
-+ // kill the timer
-+ if (_timer) clearInterval(_timer);
-+
-+ if (!document.createElement || !document.getElementsByTagName) return;
-+
-+ sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
-+
-+ forEach(document.getElementsByTagName('table'), function(table) {
-+ if (table.className.search(/\bsortable\b/) != -1) {
-+ sorttable.makeSortable(table);
-+ }
-+ });
-+
-+ },
-+
-+ makeSortable: function(table) {
-+ if (table.getElementsByTagName('thead').length == 0) {
-+ // table doesn't have a tHead. Since it should have, create one and
-+ // put the first table row in it.
-+ the = document.createElement('thead');
-+ the.appendChild(table.rows[0]);
-+ table.insertBefore(the,table.firstChild);
-+ }
-+ // Safari doesn't support table.tHead, sigh
-+ if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
-+
-+ if (table.tHead.rows.length != 1) return; // can't cope with two header rows
-+
-+ // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
-+ // "total" rows, for example). This is B&R, since what you're supposed
-+ // to do is put them in a tfoot. So, if there are sortbottom rows,
-+ // for backward compatibility, move them to tfoot (creating it if needed).
-+ sortbottomrows = [];
-+ for (var i=0; i<table.rows.length; i++) {
-+ if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
-+ sortbottomrows[sortbottomrows.length] = table.rows[i];
-+ }
-+ }
-+ if (sortbottomrows) {
-+ if (table.tFoot == null) {
-+ // table doesn't have a tfoot. Create one.
-+ tfo = document.createElement('tfoot');
-+ table.appendChild(tfo);
-+ }
-+ for (var i=0; i<sortbottomrows.length; i++) {
-+ tfo.appendChild(sortbottomrows[i]);
-+ }
-+ delete sortbottomrows;
-+ }
-+
-+ // work through each column and calculate its type
-+ headrow = table.tHead.rows[0].cells;
-+ for (var i=0; i<headrow.length; i++) {
-+ // manually override the type with a sorttable_type attribute
-+ if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
-+ mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
-+ if (mtch) { override = mtch[1]; }
-+ if (mtch && typeof sorttable["sort_"+override] == 'function') {
-+ headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
-+ } else {
-+ headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
-+ }
-+ // make it clickable to sort
-+ headrow[i].sorttable_columnindex = i;
-+ headrow[i].sorttable_tbody = table.tBodies[0];
-+ dean_addEvent(headrow[i],"click", function(e) {
-+
-+ if (this.className.search(/\bsorttable_sorted\b/) != -1) {
-+ // if we're already sorted by this column, just
-+ // reverse the table, which is quicker
-+ sorttable.reverse(this.sorttable_tbody);
-+ this.className = this.className.replace('sorttable_sorted',
-+ 'sorttable_sorted_reverse');
-+ this.removeChild(document.getElementById('sorttable_sortfwdind'));
-+ sortrevind = document.createElement('span');
-+ sortrevind.id = "sorttable_sortrevind";
-+ sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : '&nbsp;&#x25B4;';
-+ this.appendChild(sortrevind);
-+ return;
-+ }
-+ if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
-+ // if we're already sorted by this column in reverse, just
-+ // re-reverse the table, which is quicker
-+ sorttable.reverse(this.sorttable_tbody);
-+ this.className = this.className.replace('sorttable_sorted_reverse',
-+ 'sorttable_sorted');
-+ this.removeChild(document.getElementById('sorttable_sortrevind'));
-+ sortfwdind = document.createElement('span');
-+ sortfwdind.id = "sorttable_sortfwdind";
-+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
-+ this.appendChild(sortfwdind);
-+ return;
-+ }
-+
-+ // remove sorttable_sorted classes
-+ theadrow = this.parentNode;
-+ forEach(theadrow.childNodes, function(cell) {
-+ if (cell.nodeType == 1) { // an element
-+ cell.className = cell.className.replace('sorttable_sorted_reverse','');
-+ cell.className = cell.className.replace('sorttable_sorted','');
-+ }
-+ });
-+ sortfwdind = document.getElementById('sorttable_sortfwdind');
-+ if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
-+ sortrevind = document.getElementById('sorttable_sortrevind');
-+ if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
-+
-+ this.className += ' sorttable_sorted';
-+ sortfwdind = document.createElement('span');
-+ sortfwdind.id = "sorttable_sortfwdind";
-+ sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : '&nbsp;&#x25BE;';
-+ this.appendChild(sortfwdind);
-+
-+ // build an array to sort. This is a Schwartzian transform thing,
-+ // i.e., we "decorate" each row with the actual sort key,
-+ // sort based on the sort keys, and then put the rows back in order
-+ // which is a lot faster because you only do getInnerText once per row
-+ row_array = [];
-+ col = this.sorttable_columnindex;
-+ rows = this.sorttable_tbody.rows;
-+ for (var j=0; j<rows.length; j++) {
-+ row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
-+ }
-+ /* If you want a stable sort, uncomment the following line */
-+ sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
-+ /* and comment out this one */
-+ //row_array.sort(this.sorttable_sortfunction);
-+
-+ tb = this.sorttable_tbody;
-+ for (var j=0; j<row_array.length; j++) {
-+ tb.appendChild(row_array[j][1]);
-+ }
-+
-+ delete row_array;
-+ });
-+ }
-+ }
-+ },
-+
-+ guessType: function(table, column) {
-+ // guess the type of a column based on its first non-blank row
-+ sortfn = sorttable.sort_alpha;
-+ for (var i=0; i<table.tBodies[0].rows.length; i++) {
-+ text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
-+ if (text != '') {
-+ if (text.match(/^-?[£$¤]?[\d,.]+%?$/)) {
-+ return sorttable.sort_numeric;
-+ }
-+ // check for a date: dd/mm/yyyy or dd/mm/yy
-+ // can have / or . or - as separator
-+ // can be mm/dd as well
-+ possdate = text.match(sorttable.DATE_RE)
-+ if (possdate) {
-+ // looks like a date
-+ first = parseInt(possdate[1]);
-+ second = parseInt(possdate[2]);
-+ if (first > 12) {
-+ // definitely dd/mm
-+ return sorttable.sort_ddmm;
-+ } else if (second > 12) {
-+ return sorttable.sort_mmdd;
-+ } else {
-+ // looks like a date, but we can't tell which, so assume
-+ // that it's dd/mm (English imperialism!) and keep looking
-+ sortfn = sorttable.sort_ddmm;
-+ }
-+ }
-+ }
-+ }
-+ return sortfn;
-+ },
-+
-+ getInnerText: function(node) {
-+ // gets the text we want to use for sorting for a cell.
-+ // strips leading and trailing whitespace.
-+ // this is *not* a generic getInnerText function; it's special to sorttable.
-+ // for example, you can override the cell text with a customkey attribute.
-+ // it also gets .value for <input> fields.
-+
-+ hasInputs = (typeof node.getElementsByTagName == 'function') &&
-+ node.getElementsByTagName('input').length;
-+
-+ if (node.getAttribute("sorttable_customkey") != null) {
-+ return node.getAttribute("sorttable_customkey");
-+ }
-+ else if (typeof node.textContent != 'undefined' && !hasInputs) {
-+ return node.textContent.replace(/^\s+|\s+$/g, '');
-+ }
-+ else if (typeof node.innerText != 'undefined' && !hasInputs) {
-+ return node.innerText.replace(/^\s+|\s+$/g, '');
-+ }
-+ else if (typeof node.text != 'undefined' && !hasInputs) {
-+ return node.text.replace(/^\s+|\s+$/g, '');
-+ }
-+ else {
-+ switch (node.nodeType) {
-+ case 3:
-+ if (node.nodeName.toLowerCase() == 'input') {
-+ return node.value.replace(/^\s+|\s+$/g, '');
-+ }
-+ case 4:
-+ return node.nodeValue.replace(/^\s+|\s+$/g, '');
-+ break;
-+ case 1:
-+ case 11:
-+ var innerText = '';
-+ for (var i = 0; i < node.childNodes.length; i++) {
-+ innerText += sorttable.getInnerText(node.childNodes[i]);
-+ }
-+ return innerText.replace(/^\s+|\s+$/g, '');
-+ break;
-+ default:
-+ return '';
-+ }
-+ }
-+ },
-+
-+ reverse: function(tbody) {
-+ // reverse the rows in a tbody
-+ newrows = [];
-+ for (var i=0; i<tbody.rows.length; i++) {
-+ newrows[newrows.length] = tbody.rows[i];
-+ }
-+ for (var i=newrows.length-1; i>=0; i--) {
-+ tbody.appendChild(newrows[i]);
-+ }
-+ delete newrows;
-+ },
-+
-+ /* sort functions
-+ each sort function takes two parameters, a and b
-+ you are comparing a[0] and b[0] */
-+ sort_numeric: function(a,b) {
-+ aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
-+ if (isNaN(aa)) aa = 0;
-+ bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
-+ if (isNaN(bb)) bb = 0;
-+ return aa-bb;
-+ },
-+ sort_alpha: function(a,b) {
-+ if (a[0]==b[0]) return 0;
-+ if (a[0]<b[0]) return -1;
-+ return 1;
-+ },
-+ sort_ddmm: function(a,b) {
-+ mtch = a[0].match(sorttable.DATE_RE);
-+ y = mtch[3]; m = mtch[2]; d = mtch[1];
-+ if (m.length == 1) m = '0'+m;
-+ if (d.length == 1) d = '0'+d;
-+ dt1 = y+m+d;
-+ mtch = b[0].match(sorttable.DATE_RE);
-+ y = mtch[3]; m = mtch[2]; d = mtch[1];
-+ if (m.length == 1) m = '0'+m;
-+ if (d.length == 1) d = '0'+d;
-+ dt2 = y+m+d;
-+ if (dt1==dt2) return 0;
-+ if (dt1<dt2) return -1;
-+ return 1;
-+ },
-+ sort_mmdd: function(a,b) {
-+ mtch = a[0].match(sorttable.DATE_RE);
-+ y = mtch[3]; d = mtch[2]; m = mtch[1];
-+ if (m.length == 1) m = '0'+m;
-+ if (d.length == 1) d = '0'+d;
-+ dt1 = y+m+d;
-+ mtch = b[0].match(sorttable.DATE_RE);
-+ y = mtch[3]; d = mtch[2]; m = mtch[1];
-+ if (m.length == 1) m = '0'+m;
-+ if (d.length == 1) d = '0'+d;
-+ dt2 = y+m+d;
-+ if (dt1==dt2) return 0;
-+ if (dt1<dt2) return -1;
-+ return 1;
-+ },
-+
-+ shaker_sort: function(list, comp_func) {
-+ // A stable sort function to allow multi-level sorting of data
-+ // see: http://en.wikipedia.org/wiki/Cocktail_sort
-+ // thanks to Joseph Nahmias
-+ var b = 0;
-+ var t = list.length - 1;
-+ var swap = true;
-+
-+ while(swap) {
-+ swap = false;
-+ for(var i = b; i < t; ++i) {
-+ if ( comp_func(list[i], list[i+1]) > 0 ) {
-+ var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
-+ swap = true;
-+ }
-+ } // for
-+ t--;
-+
-+ if (!swap) break;
-+
-+ for(var i = t; i > b; --i) {
-+ if ( comp_func(list[i], list[i-1]) < 0 ) {
-+ var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
-+ swap = true;
-+ }
-+ } // for
-+ b++;
-+
-+ } // while(swap)
-+ }
-+}
-+
-+/* ******************************************************************
-+ Supporting functions: bundled here to avoid depending on a library
-+ ****************************************************************** */
-+
-+// Dean Edwards/Matthias Miller/John Resig
-+
-+/* for Mozilla/Opera9 */
-+if (document.addEventListener) {
-+ document.addEventListener("DOMContentLoaded", sorttable.init, false);
-+}
-+
-+/* for Internet Explorer */
-+/*@cc_on @*/
-+/*@if (@_win32)
-+ document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
-+ var script = document.getElementById("__ie_onload");
-+ script.onreadystatechange = function() {
-+ if (this.readyState == "complete") {
-+ sorttable.init(); // call the onload handler
-+ }
-+ };
-+/*@end @*/
-+
-+/* for Safari */
-+if (/WebKit/i.test(navigator.userAgent)) { // sniff
-+ var _timer = setInterval(function() {
-+ if (/loaded|complete/.test(document.readyState)) {
-+ sorttable.init(); // call the onload handler
-+ }
-+ }, 10);
-+}
-+
-+/* for other browsers */
-+window.onload = sorttable.init;
-+
-+// written by Dean Edwards, 2005
-+// with input from Tino Zijdel, Matthias Miller, Diego Perini
-+
-+// http://dean.edwards.name/weblog/2005/10/add-event/
-+
-+function dean_addEvent(element, type, handler) {
-+ if (element.addEventListener) {
-+ element.addEventListener(type, handler, false);
-+ } else {
-+ // assign each event handler a unique ID
-+ if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
-+ // create a hash table of event types for the element
-+ if (!element.events) element.events = {};
-+ // create a hash table of event handlers for each element/event pair
-+ var handlers = element.events[type];
-+ if (!handlers) {
-+ handlers = element.events[type] = {};
-+ // store the existing event handler (if there is one)
-+ if (element["on" + type]) {
-+ handlers[0] = element["on" + type];
-+ }
-+ }
-+ // store the event handler in the hash table
-+ handlers[handler.$$guid] = handler;
-+ // assign a global event handler to do all the work
-+ element["on" + type] = handleEvent;
-+ }
-+};
-+// a counter used to create unique IDs
-+dean_addEvent.guid = 1;
-+
-+function removeEvent(element, type, handler) {
-+ if (element.removeEventListener) {
-+ element.removeEventListener(type, handler, false);
-+ } else {
-+ // delete the event handler from the hash table
-+ if (element.events && element.events[type]) {
-+ delete element.events[type][handler.$$guid];
-+ }
-+ }
-+};
-+
-+function handleEvent(event) {
-+ var returnValue = true;
-+ // grab the event object (IE uses a global event object)
-+ event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
-+ // get a reference to the hash table of event handlers
-+ var handlers = this.events[event.type];
-+ // execute each event handler
-+ for (var i in handlers) {
-+ this.$$handleEvent = handlers[i];
-+ if (this.$$handleEvent(event) === false) {
-+ returnValue = false;
-+ }
-+ }
-+ return returnValue;
-+};
-+
-+function fixEvent(event) {
-+ // add W3C standard event methods
-+ event.preventDefault = fixEvent.preventDefault;
-+ event.stopPropagation = fixEvent.stopPropagation;
-+ return event;
-+};
-+fixEvent.preventDefault = function() {
-+ this.returnValue = false;
-+};
-+fixEvent.stopPropagation = function() {
-+ this.cancelBubble = true;
-+}
-+
-+// Dean's forEach: http://dean.edwards.name/base/forEach.js
-+/*
-+ forEach, version 1.0
-+ Copyright 2006, Dean Edwards
-+ License: http://www.opensource.org/licenses/mit-license.php
-+*/
-+
-+// array-like enumeration
-+if (!Array.forEach) { // mozilla already supports this
-+ Array.forEach = function(array, block, context) {
-+ for (var i = 0; i < array.length; i++) {
-+ block.call(context, array[i], i, array);
-+ }
-+ };
-+}
-+
-+// generic enumeration
-+Function.prototype.forEach = function(object, block, context) {
-+ for (var key in object) {
-+ if (typeof this.prototype[key] == "undefined") {
-+ block.call(context, object[key], key, object);
-+ }
-+ }
-+};
-+
-+// character enumeration
-+String.forEach = function(string, block, context) {
-+ Array.forEach(string.split(""), function(chr, index) {
-+ block.call(context, chr, index, string);
-+ });
-+};
-+
-+// globally resolve forEach enumeration
-+var forEach = function(object, block, context) {
-+ if (object) {
-+ var resolve = Object; // default
-+ if (object instanceof Function) {
-+ // functions have a "length" property
-+ resolve = Function;
-+ } else if (object.forEach instanceof Function) {
-+ // the object implements a custom forEach method so use that
-+ object.forEach(block, context);
-+ return;
-+ } else if (typeof object == "string") {
-+ // the object is a string
-+ resolve = String;
-+ } else if (typeof object.length == "number") {
-+ // the object is array-like
-+ resolve = Array;
-+ }
-+ resolve.forEach(object, block, context);
-+ }
-+};
-diff --git tools/clang/tools/scan-view/CMakeLists.txt tools/clang/tools/scan-view/CMakeLists.txt.orig
-new file mode 100644
-index 0000000..b305ca5
---- /dev/null
-+++ tools/clang/tools/scan-view/CMakeLists.txt
-@@ -0,0 +1,41 @@
-+option(CLANG_INSTALL_SCANVIEW "Install the scan-view tool" ON)
-+
-+set(BinFiles
-+ scan-view)
-+
-+set(ShareFiles
-+ ScanView.py
-+ Reporter.py
-+ startfile.py
-+ FileRadar.scpt
-+ GetRadarVersion.scpt
-+ bugcatcher.ico)
-+
-+if(CLANG_INSTALL_SCANVIEW)
-+ foreach(BinFile ${BinFiles})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/bin/${BinFile}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/bin
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile}
-+ ${CMAKE_BINARY_DIR}/bin/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/bin/${BinFile})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/bin/${BinFile})
-+ install(PROGRAMS bin/${BinFile} DESTINATION bin)
-+ endforeach()
-+
-+ foreach(ShareFile ${ShareFiles})
-+ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile}
-+ COMMAND ${CMAKE_COMMAND} -E make_directory
-+ ${CMAKE_BINARY_DIR}/share/scan-view
-+ COMMAND ${CMAKE_COMMAND} -E copy
-+ ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile}
-+ ${CMAKE_BINARY_DIR}/share/scan-view/
-+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/share/${ShareFile})
-+ list(APPEND Depends ${CMAKE_BINARY_DIR}/share/scan-view/${ShareFile})
-+ install(FILES share/${ShareFile} DESTINATION share/scan-view)
-+ endforeach()
-+
-+ add_custom_target(scan-view ALL DEPENDS ${Depends})
-+ set_target_properties(scan-view PROPERTIES FOLDER "Misc")
-+endif()
-diff --git tools/clang/tools/scan-view/Makefile tools/clang/tools/scan-view/Makefile.orig
-new file mode 100644
-index 0000000..37e4404
---- /dev/null
-+++ tools/clang/tools/scan-view/Makefile
-@@ -0,0 +1,37 @@
-+##===- tools/scan-view/Makefile ----------------------------*- Makefile -*-===##
-+#
-+# The LLVM Compiler Infrastructure
-+#
-+# This file is distributed under the University of Illinois Open Source
-+# License. See LICENSE.TXT for details.
-+#
-+##===----------------------------------------------------------------------===##
-+
-+CLANG_LEVEL := ../..
-+
-+include $(CLANG_LEVEL)/../../Makefile.config
-+include $(CLANG_LEVEL)/Makefile
-+
-+CLANG_INSTALL_SCANVIEW ?= 1
-+
-+ifeq ($(CLANG_INSTALL_SCANVIEW), 1)
-+ InstallTargets := $(ToolDir)/scan-view \
-+ $(ShareDir)/scan-view/Reporter.py \
-+ $(ShareDir)/scan-view/ScanView.py \
-+ $(ShareDir)/scan-view/startfile.py \
-+ $(ShareDir)/scan-view/FileRadar.scpt \
-+ $(ShareDir)/scan-view/GetRadarVersion.scpt \
-+ $(ShareDir)/scan-view/bugcatcher.ico
-+endif
-+
-+all:: $(InstallTargets)
-+
-+$(ToolDir)/%: bin/% Makefile $(ToolDir)/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'bin' directory..."
-+ $(Verb)cp $< $@
-+ $(Verb)chmod +x $@
-+
-+$(ShareDir)/scan-view/%: share/% Makefile $(ShareDir)/scan-view/.dir
-+ $(Echo) "Copying $(notdir $<) to the 'share' directory..."
-+ $(Verb)cp $< $@
-+
-diff --git tools/clang/tools/scan-view/bin/scan-view tools/clang/tools/scan-view/bin/scan-view.orig
-new file mode 100755
-index 0000000..1b6e8ba
---- /dev/null
-+++ tools/clang/tools/scan-view/bin/scan-view
-@@ -0,0 +1,143 @@
-+#!/usr/bin/env python
-+
-+"""The clang static analyzer results viewer.
-+"""
-+
-+import sys
-+import imp
-+import os
-+import posixpath
-+import thread
-+import time
-+import urllib
-+import webbrowser
-+
-+# How long to wait for server to start.
-+kSleepTimeout = .05
-+kMaxSleeps = int(60 / kSleepTimeout)
-+
-+# Default server parameters
-+
-+kDefaultHost = '127.0.0.1'
-+kDefaultPort = 8181
-+kMaxPortsToTry = 100
-+
-+###
-+
-+
-+def url_is_up(url):
-+ try:
-+ o = urllib.urlopen(url)
-+ except IOError:
-+ return False
-+ o.close()
-+ return True
-+
-+
-+def start_browser(port, options):
-+ import urllib
-+ import webbrowser
-+
-+ url = 'http://%s:%d' % (options.host, port)
-+
-+ # Wait for server to start...
-+ if options.debug:
-+ sys.stderr.write('%s: Waiting for server.' % sys.argv[0])
-+ sys.stderr.flush()
-+ for i in range(kMaxSleeps):
-+ if url_is_up(url):
-+ break
-+ if options.debug:
-+ sys.stderr.write('.')
-+ sys.stderr.flush()
-+ time.sleep(kSleepTimeout)
-+ else:
-+ print >> sys.stderr, 'WARNING: Unable to detect that server started.'
-+
-+ if options.debug:
-+ print >> sys.stderr, '%s: Starting webbrowser...' % sys.argv[0]
-+ webbrowser.open(url)
-+
-+
-+def run(port, options, root):
-+ # Prefer to look relative to the installed binary
-+ share = os.path.dirname(__file__) + "/../share/scan-view"
-+ if not os.path.isdir(share):
-+ # Otherwise look relative to the source
-+ share = os.path.dirname(__file__) + "/../../scan-view/share"
-+ sys.path.append(share)
-+
-+ import ScanView
-+ try:
-+ print 'Starting scan-view at: http://%s:%d' % (options.host,
-+ port)
-+ print ' Use Ctrl-C to exit.'
-+ httpd = ScanView.create_server((options.host, port),
-+ options, root)
-+ httpd.serve_forever()
-+ except KeyboardInterrupt:
-+ pass
-+
-+
-+def port_is_open(port):
-+ import SocketServer
-+ try:
-+ t = SocketServer.TCPServer((kDefaultHost, port), None)
-+ except:
-+ return False
-+ t.server_close()
-+ return True
-+
-+
-+def main():
-+ import argparse
-+ parser = argparse.ArgumentParser(description="The clang static analyzer "
-+ "results viewer.")
-+ parser.add_argument("root", metavar="<results directory>", type=str)
-+ parser.add_argument(
-+ '--host', dest="host", default=kDefaultHost, type=str,
-+ help="Host interface to listen on. (default=%s)" % kDefaultHost)
-+ parser.add_argument('--port', dest="port", default=None, type=int,
-+ help="Port to listen on. (default=%s)" % kDefaultPort)
-+ parser.add_argument("--debug", dest="debug", default=0,
-+ action="count",
-+ help="Print additional debugging information.")
-+ parser.add_argument("--auto-reload", dest="autoReload", default=False,
-+ action="store_true",
-+ help="Automatically update module for each request.")
-+ parser.add_argument("--no-browser", dest="startBrowser", default=True,
-+ action="store_false",
-+ help="Don't open a webbrowser on startup.")
-+ parser.add_argument("--allow-all-hosts", dest="onlyServeLocal",
-+ default=True, action="store_false",
-+ help='Allow connections from any host (access '
-+ 'restricted to "127.0.0.1" by default)')
-+ args = parser.parse_args()
-+
-+ # Make sure this directory is in a reasonable state to view.
-+ if not posixpath.exists(posixpath.join(args.root, 'index.html')):
-+ parser.error('Invalid directory, analysis results not found!')
-+
-+ # Find an open port. We aren't particularly worried about race
-+ # conditions here. Note that if the user specified a port we only
-+ # use that one.
-+ if args.port is not None:
-+ port = args.port
-+ else:
-+ for i in range(kMaxPortsToTry):
-+ if port_is_open(kDefaultPort + i):
-+ port = kDefaultPort + i
-+ break
-+ else:
-+ parser.error('Unable to find usable port in [%d,%d)' %
-+ (kDefaultPort, kDefaultPort+kMaxPortsToTry))
-+
-+ # Kick off thread to wait for server and start web browser, if
-+ # requested.
-+ if args.startBrowser:
-+ t = thread.start_new_thread(start_browser, (port, args))
-+
-+ run(port, args, args.root)
-+
-+if __name__ == '__main__':
-+ main()
-diff --git tools/clang/tools/scan-view/share/Reporter.py tools/clang/tools/scan-view/share/Reporter.py.orig
-new file mode 100644
-index 0000000..294e05b
---- /dev/null
-+++ tools/clang/tools/scan-view/share/Reporter.py
-@@ -0,0 +1,248 @@
-+"""Methods for reporting bugs."""
-+
-+import subprocess, sys, os
-+
-+__all__ = ['ReportFailure', 'BugReport', 'getReporters']
-+
-+#
-+
-+class ReportFailure(Exception):
-+ """Generic exception for failures in bug reporting."""
-+ def __init__(self, value):
-+ self.value = value
-+
-+# Collect information about a bug.
-+
-+class BugReport:
-+ def __init__(self, title, description, files):
-+ self.title = title
-+ self.description = description
-+ self.files = files
-+
-+# Reporter interfaces.
-+
-+import os
-+
-+import email, mimetypes, smtplib
-+from email import encoders
-+from email.message import Message
-+from email.mime.base import MIMEBase
-+from email.mime.multipart import MIMEMultipart
-+from email.mime.text import MIMEText
-+
-+#===------------------------------------------------------------------------===#
-+# ReporterParameter
-+#===------------------------------------------------------------------------===#
-+
-+class ReporterParameter:
-+ def __init__(self, n):
-+ self.name = n
-+ def getName(self):
-+ return self.name
-+ def getValue(self,r,bugtype,getConfigOption):
-+ return getConfigOption(r.getName(),self.getName())
-+ def saveConfigValue(self):
-+ return True
-+
-+class TextParameter (ReporterParameter):
-+ def getHTML(self,r,bugtype,getConfigOption):
-+ return """\
-+<tr>
-+<td class="form_clabel">%s:</td>
-+<td class="form_value"><input type="text" name="%s_%s" value="%s"></td>
-+</tr>"""%(self.getName(),r.getName(),self.getName(),self.getValue(r,bugtype,getConfigOption))
-+
-+class SelectionParameter (ReporterParameter):
-+ def __init__(self, n, values):
-+ ReporterParameter.__init__(self,n)
-+ self.values = values
-+
-+ def getHTML(self,r,bugtype,getConfigOption):
-+ default = self.getValue(r,bugtype,getConfigOption)
-+ return """\
-+<tr>
-+<td class="form_clabel">%s:</td><td class="form_value"><select name="%s_%s">
-+%s
-+</select></td>"""%(self.getName(),r.getName(),self.getName(),'\n'.join(["""\
-+<option value="%s"%s>%s</option>"""%(o[0],
-+ o[0] == default and ' selected="selected"' or '',
-+ o[1]) for o in self.values]))
-+
-+#===------------------------------------------------------------------------===#
-+# Reporters
-+#===------------------------------------------------------------------------===#
-+
-+class EmailReporter:
-+ def getName(self):
-+ return 'Email'
-+
-+ def getParameters(self):
-+ return map(lambda x:TextParameter(x),['To', 'From', 'SMTP Server', 'SMTP Port'])
-+
-+ # Lifted from python email module examples.
-+ def attachFile(self, outer, path):
-+ # Guess the content type based on the file's extension. Encoding
-+ # will be ignored, although we should check for simple things like
-+ # gzip'd or compressed files.
-+ ctype, encoding = mimetypes.guess_type(path)
-+ if ctype is None or encoding is not None:
-+ # No guess could be made, or the file is encoded (compressed), so
-+ # use a generic bag-of-bits type.
-+ ctype = 'application/octet-stream'
-+ maintype, subtype = ctype.split('/', 1)
-+ if maintype == 'text':
-+ fp = open(path)
-+ # Note: we should handle calculating the charset
-+ msg = MIMEText(fp.read(), _subtype=subtype)
-+ fp.close()
-+ else:
-+ fp = open(path, 'rb')
-+ msg = MIMEBase(maintype, subtype)
-+ msg.set_payload(fp.read())
-+ fp.close()
-+ # Encode the payload using Base64
-+ encoders.encode_base64(msg)
-+ # Set the filename parameter
-+ msg.add_header('Content-Disposition', 'attachment', filename=os.path.basename(path))
-+ outer.attach(msg)
-+
-+ def fileReport(self, report, parameters):
-+ mainMsg = """\
-+BUG REPORT
-+---
-+Title: %s
-+Description: %s
-+"""%(report.title, report.description)
-+
-+ if not parameters.get('To'):
-+ raise ReportFailure('No "To" address specified.')
-+ if not parameters.get('From'):
-+ raise ReportFailure('No "From" address specified.')
-+
-+ msg = MIMEMultipart()
-+ msg['Subject'] = 'BUG REPORT: %s'%(report.title)
-+ # FIXME: Get config parameters
-+ msg['To'] = parameters.get('To')
-+ msg['From'] = parameters.get('From')
-+ msg.preamble = mainMsg
-+
-+ msg.attach(MIMEText(mainMsg, _subtype='text/plain'))
-+ for file in report.files:
-+ self.attachFile(msg, file)
-+
-+ try:
-+ s = smtplib.SMTP(host=parameters.get('SMTP Server'),
-+ port=parameters.get('SMTP Port'))
-+ s.sendmail(msg['From'], msg['To'], msg.as_string())
-+ s.close()
-+ except:
-+ raise ReportFailure('Unable to send message via SMTP.')
-+
-+ return "Message sent!"
-+
-+class BugzillaReporter:
-+ def getName(self):
-+ return 'Bugzilla'
-+
-+ def getParameters(self):
-+ return map(lambda x:TextParameter(x),['URL','Product'])
-+
-+ def fileReport(self, report, parameters):
-+ raise NotImplementedError
-+
-+
-+class RadarClassificationParameter(SelectionParameter):
-+ def __init__(self):
-+ SelectionParameter.__init__(self,"Classification",
-+ [['1', 'Security'], ['2', 'Crash/Hang/Data Loss'],
-+ ['3', 'Performance'], ['4', 'UI/Usability'],
-+ ['6', 'Serious Bug'], ['7', 'Other']])
-+
-+ def saveConfigValue(self):
-+ return False
-+
-+ def getValue(self,r,bugtype,getConfigOption):
-+ if bugtype.find("leak") != -1:
-+ return '3'
-+ elif bugtype.find("dereference") != -1:
-+ return '2'
-+ elif bugtype.find("missing ivar release") != -1:
-+ return '3'
-+ else:
-+ return '7'
-+
-+class RadarReporter:
-+ @staticmethod
-+ def isAvailable():
-+ # FIXME: Find this .scpt better
-+ path = os.path.join(os.path.dirname(__file__),'../share/scan-view/GetRadarVersion.scpt')
-+ try:
-+ p = subprocess.Popen(['osascript',path],
-+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-+ except:
-+ return False
-+ data,err = p.communicate()
-+ res = p.wait()
-+ # FIXME: Check version? Check for no errors?
-+ return res == 0
-+
-+ def getName(self):
-+ return 'Radar'
-+
-+ def getParameters(self):
-+ return [ TextParameter('Component'), TextParameter('Component Version'),
-+ RadarClassificationParameter() ]
-+
-+ def fileReport(self, report, parameters):
-+ component = parameters.get('Component', '')
-+ componentVersion = parameters.get('Component Version', '')
-+ classification = parameters.get('Classification', '')
-+ personID = ""
-+ diagnosis = ""
-+ config = ""
-+
-+ if not component.strip():
-+ component = 'Bugs found by clang Analyzer'
-+ if not componentVersion.strip():
-+ componentVersion = 'X'
-+
-+ script = os.path.join(os.path.dirname(__file__),'../share/scan-view/FileRadar.scpt')
-+ args = ['osascript', script, component, componentVersion, classification, personID, report.title,
-+ report.description, diagnosis, config] + map(os.path.abspath, report.files)
-+# print >>sys.stderr, args
-+ try:
-+ p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-+ except:
-+ raise ReportFailure("Unable to file radar (AppleScript failure).")
-+ data, err = p.communicate()
-+ res = p.wait()
-+
-+ if res:
-+ raise ReportFailure("Unable to file radar (AppleScript failure).")
-+
-+ try:
-+ values = eval(data)
-+ except:
-+ raise ReportFailure("Unable to process radar results.")
-+
-+ # We expect (int: bugID, str: message)
-+ if len(values) != 2 or not isinstance(values[0], int):
-+ raise ReportFailure("Unable to process radar results.")
-+
-+ bugID,message = values
-+ bugID = int(bugID)
-+
-+ if not bugID:
-+ raise ReportFailure(message)
-+
-+ return "Filed: <a href=\"rdar://%d/\">%d</a>"%(bugID,bugID)
-+
-+###
-+
-+def getReporters():
-+ reporters = []
-+ if RadarReporter.isAvailable():
-+ reporters.append(RadarReporter())
-+ reporters.append(EmailReporter())
-+ return reporters
-+
-diff --git tools/clang/tools/scan-view/share/ScanView.py tools/clang/tools/scan-view/share/ScanView.py.orig
-new file mode 100644
-index 0000000..7dc0351
---- /dev/null
-+++ tools/clang/tools/scan-view/share/ScanView.py
-@@ -0,0 +1,767 @@
-+import BaseHTTPServer
-+import SimpleHTTPServer
-+import os
-+import sys
-+import urllib, urlparse
-+import posixpath
-+import StringIO
-+import re
-+import shutil
-+import threading
-+import time
-+import socket
-+import itertools
-+
-+import Reporter
-+import ConfigParser
-+
-+###
-+# Various patterns matched or replaced by server.
-+
-+kReportFileRE = re.compile('(.*/)?report-(.*)\\.html')
-+
-+kBugKeyValueRE = re.compile('<!-- BUG([^ ]*) (.*) -->')
-+
-+# <!-- REPORTPROBLEM file="crashes/clang_crash_ndSGF9.mi" stderr="crashes/clang_crash_ndSGF9.mi.stderr.txt" info="crashes/clang_crash_ndSGF9.mi.info" -->
-+
-+kReportCrashEntryRE = re.compile('<!-- REPORTPROBLEM (.*?)-->')
-+kReportCrashEntryKeyValueRE = re.compile(' ?([^=]+)="(.*?)"')
-+
-+kReportReplacements = []
-+
-+# Add custom javascript.
-+kReportReplacements.append((re.compile('<!-- SUMMARYENDHEAD -->'), """\
-+<script language="javascript" type="text/javascript">
-+function load(url) {
-+ if (window.XMLHttpRequest) {
-+ req = new XMLHttpRequest();
-+ } else if (window.ActiveXObject) {
-+ req = new ActiveXObject("Microsoft.XMLHTTP");
-+ }
-+ if (req != undefined) {
-+ req.open("GET", url, true);
-+ req.send("");
-+ }
-+}
-+</script>"""))
-+
-+# Insert additional columns.
-+kReportReplacements.append((re.compile('<!-- REPORTBUGCOL -->'),
-+ '<td></td><td></td>'))
-+
-+# Insert report bug and open file links.
-+kReportReplacements.append((re.compile('<!-- REPORTBUG id="report-(.*)\\.html" -->'),
-+ ('<td class="Button"><a href="report/\\1">Report Bug</a></td>' +
-+ '<td class="Button"><a href="javascript:load(\'open/\\1\')">Open File</a></td>')))
-+
-+kReportReplacements.append((re.compile('<!-- REPORTHEADER -->'),
-+ '<h3><a href="/">Summary</a> > Report %(report)s</h3>'))
-+
-+kReportReplacements.append((re.compile('<!-- REPORTSUMMARYEXTRA -->'),
-+ '<td class="Button"><a href="report/%(report)s">Report Bug</a></td>'))
-+
-+# Insert report crashes link.
-+
-+# Disabled for the time being until we decide exactly when this should
-+# be enabled. Also the radar reporter needs to be fixed to report
-+# multiple files.
-+
-+#kReportReplacements.append((re.compile('<!-- REPORTCRASHES -->'),
-+# '<br>These files will automatically be attached to ' +
-+# 'reports filed here: <a href="report_crashes">Report Crashes</a>.'))
-+
-+###
-+# Other simple parameters
-+
-+kShare = posixpath.join(posixpath.dirname(__file__), '../share/scan-view')
-+kConfigPath = os.path.expanduser('~/.scanview.cfg')
-+
-+###
-+
-+__version__ = "0.1"
-+
-+__all__ = ["create_server"]
-+
-+class ReporterThread(threading.Thread):
-+ def __init__(self, report, reporter, parameters, server):
-+ threading.Thread.__init__(self)
-+ self.report = report
-+ self.server = server
-+ self.reporter = reporter
-+ self.parameters = parameters
-+ self.success = False
-+ self.status = None
-+
-+ def run(self):
-+ result = None
-+ try:
-+ if self.server.options.debug:
-+ print >>sys.stderr, "%s: SERVER: submitting bug."%(sys.argv[0],)
-+ self.status = self.reporter.fileReport(self.report, self.parameters)
-+ self.success = True
-+ time.sleep(3)
-+ if self.server.options.debug:
-+ print >>sys.stderr, "%s: SERVER: submission complete."%(sys.argv[0],)
-+ except Reporter.ReportFailure,e:
-+ self.status = e.value
-+ except Exception,e:
-+ s = StringIO.StringIO()
-+ import traceback
-+ print >>s,'<b>Unhandled Exception</b><br><pre>'
-+ traceback.print_exc(e,file=s)
-+ print >>s,'</pre>'
-+ self.status = s.getvalue()
-+
-+class ScanViewServer(BaseHTTPServer.HTTPServer):
-+ def __init__(self, address, handler, root, reporters, options):
-+ BaseHTTPServer.HTTPServer.__init__(self, address, handler)
-+ self.root = root
-+ self.reporters = reporters
-+ self.options = options
-+ self.halted = False
-+ self.config = None
-+ self.load_config()
-+
-+ def load_config(self):
-+ self.config = ConfigParser.RawConfigParser()
-+
-+ # Add defaults
-+ self.config.add_section('ScanView')
-+ for r in self.reporters:
-+ self.config.add_section(r.getName())
-+ for p in r.getParameters():
-+ if p.saveConfigValue():
-+ self.config.set(r.getName(), p.getName(), '')
-+
-+ # Ignore parse errors
-+ try:
-+ self.config.read([kConfigPath])
-+ except:
-+ pass
-+
-+ # Save on exit
-+ import atexit
-+ atexit.register(lambda: self.save_config())
-+
-+ def save_config(self):
-+ # Ignore errors (only called on exit).
-+ try:
-+ f = open(kConfigPath,'w')
-+ self.config.write(f)
-+ f.close()
-+ except:
-+ pass
-+
-+ def halt(self):
-+ self.halted = True
-+ if self.options.debug:
-+ print >>sys.stderr, "%s: SERVER: halting." % (sys.argv[0],)
-+
-+ def serve_forever(self):
-+ while not self.halted:
-+ if self.options.debug > 1:
-+ print >>sys.stderr, "%s: SERVER: waiting..." % (sys.argv[0],)
-+ try:
-+ self.handle_request()
-+ except OSError,e:
-+ print 'OSError',e.errno
-+
-+ def finish_request(self, request, client_address):
-+ if self.options.autoReload:
-+ import ScanView
-+ self.RequestHandlerClass = reload(ScanView).ScanViewRequestHandler
-+ BaseHTTPServer.HTTPServer.finish_request(self, request, client_address)
-+
-+ def handle_error(self, request, client_address):
-+ # Ignore socket errors
-+ info = sys.exc_info()
-+ if info and isinstance(info[1], socket.error):
-+ if self.options.debug > 1:
-+ print >>sys.stderr, "%s: SERVER: ignored socket error." % (sys.argv[0],)
-+ return
-+ BaseHTTPServer.HTTPServer.handle_error(self, request, client_address)
-+
-+# Borrowed from Quixote, with simplifications.
-+def parse_query(qs, fields=None):
-+ if fields is None:
-+ fields = {}
-+ for chunk in filter(None, qs.split('&')):
-+ if '=' not in chunk:
-+ name = chunk
-+ value = ''
-+ else:
-+ name, value = chunk.split('=', 1)
-+ name = urllib.unquote(name.replace('+', ' '))
-+ value = urllib.unquote(value.replace('+', ' '))
-+ item = fields.get(name)
-+ if item is None:
-+ fields[name] = [value]
-+ else:
-+ item.append(value)
-+ return fields
-+
-+class ScanViewRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
-+ server_version = "ScanViewServer/" + __version__
-+ dynamic_mtime = time.time()
-+
-+ def do_HEAD(self):
-+ try:
-+ SimpleHTTPServer.SimpleHTTPRequestHandler.do_HEAD(self)
-+ except Exception,e:
-+ self.handle_exception(e)
-+
-+ def do_GET(self):
-+ try:
-+ SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
-+ except Exception,e:
-+ self.handle_exception(e)
-+
-+ def do_POST(self):
-+ """Serve a POST request."""
-+ try:
-+ length = self.headers.getheader('content-length') or "0"
-+ try:
-+ length = int(length)
-+ except:
-+ length = 0
-+ content = self.rfile.read(length)
-+ fields = parse_query(content)
-+ f = self.send_head(fields)
-+ if f:
-+ self.copyfile(f, self.wfile)
-+ f.close()
-+ except Exception,e:
-+ self.handle_exception(e)
-+
-+ def log_message(self, format, *args):
-+ if self.server.options.debug:
-+ sys.stderr.write("%s: SERVER: %s - - [%s] %s\n" %
-+ (sys.argv[0],
-+ self.address_string(),
-+ self.log_date_time_string(),
-+ format%args))
-+
-+ def load_report(self, report):
-+ path = os.path.join(self.server.root, 'report-%s.html'%report)
-+ data = open(path).read()
-+ keys = {}
-+ for item in kBugKeyValueRE.finditer(data):
-+ k,v = item.groups()
-+ keys[k] = v
-+ return keys
-+
-+ def load_crashes(self):
-+ path = posixpath.join(self.server.root, 'index.html')
-+ data = open(path).read()
-+ problems = []
-+ for item in kReportCrashEntryRE.finditer(data):
-+ fieldData = item.group(1)
-+ fields = dict([i.groups() for i in
-+ kReportCrashEntryKeyValueRE.finditer(fieldData)])
-+ problems.append(fields)
-+ return problems
-+
-+ def handle_exception(self, exc):
-+ import traceback
-+ s = StringIO.StringIO()
-+ print >>s, "INTERNAL ERROR\n"
-+ traceback.print_exc(exc, s)
-+ f = self.send_string(s.getvalue(), 'text/plain')
-+ if f:
-+ self.copyfile(f, self.wfile)
-+ f.close()
-+
-+ def get_scalar_field(self, name):
-+ if name in self.fields:
-+ return self.fields[name][0]
-+ else:
-+ return None
-+
-+ def submit_bug(self, c):
-+ title = self.get_scalar_field('title')
-+ description = self.get_scalar_field('description')
-+ report = self.get_scalar_field('report')
-+ reporterIndex = self.get_scalar_field('reporter')
-+ files = []
-+ for fileID in self.fields.get('files',[]):
-+ try:
-+ i = int(fileID)
-+ except:
-+ i = None
-+ if i is None or i<0 or i>=len(c.files):
-+ return (False, 'Invalid file ID')
-+ files.append(c.files[i])
-+
-+ if not title:
-+ return (False, "Missing title.")
-+ if not description:
-+ return (False, "Missing description.")
-+ try:
-+ reporterIndex = int(reporterIndex)
-+ except:
-+ return (False, "Invalid report method.")
-+
-+ # Get the reporter and parameters.
-+ reporter = self.server.reporters[reporterIndex]
-+ parameters = {}
-+ for o in reporter.getParameters():
-+ name = '%s_%s'%(reporter.getName(),o.getName())
-+ if name not in self.fields:
-+ return (False,
-+ 'Missing field "%s" for %s report method.'%(name,
-+ reporter.getName()))
-+ parameters[o.getName()] = self.get_scalar_field(name)
-+
-+ # Update config defaults.
-+ if report != 'None':
-+ self.server.config.set('ScanView', 'reporter', reporterIndex)
-+ for o in reporter.getParameters():
-+ if o.saveConfigValue():
-+ name = o.getName()
-+ self.server.config.set(reporter.getName(), name, parameters[name])
-+
-+ # Create the report.
-+ bug = Reporter.BugReport(title, description, files)
-+
-+ # Kick off a reporting thread.
-+ t = ReporterThread(bug, reporter, parameters, self.server)
-+ t.start()
-+
-+ # Wait for thread to die...
-+ while t.isAlive():
-+ time.sleep(.25)
-+ submitStatus = t.status
-+
-+ return (t.success, t.status)
-+
-+ def send_report_submit(self):
-+ report = self.get_scalar_field('report')
-+ c = self.get_report_context(report)
-+ if c.reportSource is None:
-+ reportingFor = "Report Crashes > "
-+ fileBug = """\
-+<a href="/report_crashes">File Bug</a> > """%locals()
-+ else:
-+ reportingFor = '<a href="/%s">Report %s</a> > ' % (c.reportSource,
-+ report)
-+ fileBug = '<a href="/report/%s">File Bug</a> > ' % report
-+ title = self.get_scalar_field('title')
-+ description = self.get_scalar_field('description')
-+
-+ res,message = self.submit_bug(c)
-+
-+ if res:
-+ statusClass = 'SubmitOk'
-+ statusName = 'Succeeded'
-+ else:
-+ statusClass = 'SubmitFail'
-+ statusName = 'Failed'
-+
-+ result = """
-+<head>
-+ <title>Bug Submission</title>
-+ <link rel="stylesheet" type="text/css" href="/scanview.css" />
-+</head>
-+<body>
-+<h3>
-+<a href="/">Summary</a> >
-+%(reportingFor)s
-+%(fileBug)s
-+Submit</h3>
-+<form name="form" action="">
-+<table class="form">
-+<tr><td>
-+<table class="form_group">
-+<tr>
-+ <td class="form_clabel">Title:</td>
-+ <td class="form_value">
-+ <input type="text" name="title" size="50" value="%(title)s" disabled>
-+ </td>
-+</tr>
-+<tr>
-+ <td class="form_label">Description:</td>
-+ <td class="form_value">
-+<textarea rows="10" cols="80" name="description" disabled>
-+%(description)s
-+</textarea>
-+ </td>
-+</table>
-+</td></tr>
-+</table>
-+</form>
-+<h1 class="%(statusClass)s">Submission %(statusName)s</h1>
-+%(message)s
-+<p>
-+<hr>
-+<a href="/">Return to Summary</a>
-+</body>
-+</html>"""%locals()
-+ return self.send_string(result)
-+
-+ def send_open_report(self, report):
-+ try:
-+ keys = self.load_report(report)
-+ except IOError:
-+ return self.send_error(400, 'Invalid report.')
-+
-+ file = keys.get('FILE')
-+ if not file or not posixpath.exists(file):
-+ return self.send_error(400, 'File does not exist: "%s"' % file)
-+
-+ import startfile
-+ if self.server.options.debug:
-+ print >>sys.stderr, '%s: SERVER: opening "%s"'%(sys.argv[0],
-+ file)
-+
-+ status = startfile.open(file)
-+ if status:
-+ res = 'Opened: "%s"' % file
-+ else:
-+ res = 'Open failed: "%s"' % file
-+
-+ return self.send_string(res, 'text/plain')
-+
-+ def get_report_context(self, report):
-+ class Context:
-+ pass
-+ if report is None or report == 'None':
-+ data = self.load_crashes()
-+ # Don't allow empty reports.
-+ if not data:
-+ raise ValueError, 'No crashes detected!'
-+ c = Context()
-+ c.title = 'clang static analyzer failures'
-+
-+ stderrSummary = ""
-+ for item in data:
-+ if 'stderr' in item:
-+ path = posixpath.join(self.server.root, item['stderr'])
-+ if os.path.exists(path):
-+ lns = itertools.islice(open(path), 0, 10)
-+ stderrSummary += '%s\n--\n%s' % (item.get('src',
-+ '<unknown>'),
-+ ''.join(lns))
-+
-+ c.description = """\
-+The clang static analyzer failed on these inputs:
-+%s
-+
-+STDERR Summary
-+--------------
-+%s
-+""" % ('\n'.join([item.get('src','<unknown>') for item in data]),
-+ stderrSummary)
-+ c.reportSource = None
-+ c.navMarkup = "Report Crashes > "
-+ c.files = []
-+ for item in data:
-+ c.files.append(item.get('src',''))
-+ c.files.append(posixpath.join(self.server.root,
-+ item.get('file','')))
-+ c.files.append(posixpath.join(self.server.root,
-+ item.get('clangfile','')))
-+ c.files.append(posixpath.join(self.server.root,
-+ item.get('stderr','')))
-+ c.files.append(posixpath.join(self.server.root,
-+ item.get('info','')))
-+ # Just in case something failed, ignore files which don't
-+ # exist.
-+ c.files = [f for f in c.files
-+ if os.path.exists(f) and os.path.isfile(f)]
-+ else:
-+ # Check that this is a valid report.
-+ path = posixpath.join(self.server.root, 'report-%s.html' % report)
-+ if not posixpath.exists(path):
-+ raise ValueError, 'Invalid report ID'
-+ keys = self.load_report(report)
-+ c = Context()
-+ c.title = keys.get('DESC','clang error (unrecognized')
-+ c.description = """\
-+Bug reported by the clang static analyzer.
-+
-+Description: %s
-+File: %s
-+Line: %s
-+"""%(c.title, keys.get('FILE','<unknown>'), keys.get('LINE', '<unknown>'))
-+ c.reportSource = 'report-%s.html' % report
-+ c.navMarkup = """<a href="/%s">Report %s</a> > """ % (c.reportSource,
-+ report)
-+
-+ c.files = [path]
-+ return c
-+
-+ def send_report(self, report, configOverrides=None):
-+ def getConfigOption(section, field):
-+ if (configOverrides is not None and
-+ section in configOverrides and
-+ field in configOverrides[section]):
-+ return configOverrides[section][field]
-+ return self.server.config.get(section, field)
-+
-+ # report is None is used for crashes
-+ try:
-+ c = self.get_report_context(report)
-+ except ValueError, e:
-+ return self.send_error(400, e.message)
-+
-+ title = c.title
-+ description= c.description
-+ reportingFor = c.navMarkup
-+ if c.reportSource is None:
-+ extraIFrame = ""
-+ else:
-+ extraIFrame = """\
-+<iframe src="/%s" width="100%%" height="40%%"
-+ scrolling="auto" frameborder="1">
-+ <a href="/%s">View Bug Report</a>
-+</iframe>""" % (c.reportSource, c.reportSource)
-+
-+ reporterSelections = []
-+ reporterOptions = []
-+
-+ try:
-+ active = int(getConfigOption('ScanView','reporter'))
-+ except:
-+ active = 0
-+ for i,r in enumerate(self.server.reporters):
-+ selected = (i == active)
-+ if selected:
-+ selectedStr = ' selected'
-+ else:
-+ selectedStr = ''
-+ reporterSelections.append('<option value="%d"%s>%s</option>'%(i,selectedStr,r.getName()))
-+ options = '\n'.join([ o.getHTML(r,title,getConfigOption) for o in r.getParameters()])
-+ display = ('none','')[selected]
-+ reporterOptions.append("""\
-+<tr id="%sReporterOptions" style="display:%s">
-+ <td class="form_label">%s Options</td>
-+ <td class="form_value">
-+ <table class="form_inner_group">
-+%s
-+ </table>
-+ </td>
-+</tr>
-+"""%(r.getName(),display,r.getName(),options))
-+ reporterSelections = '\n'.join(reporterSelections)
-+ reporterOptionsDivs = '\n'.join(reporterOptions)
-+ reportersArray = '[%s]'%(','.join([`r.getName()` for r in self.server.reporters]))
-+
-+ if c.files:
-+ fieldSize = min(5, len(c.files))
-+ attachFileOptions = '\n'.join(["""\
-+<option value="%d" selected>%s</option>""" % (i,v) for i,v in enumerate(c.files)])
-+ attachFileRow = """\
-+<tr>
-+ <td class="form_label">Attach:</td>
-+ <td class="form_value">
-+<select style="width:100%%" name="files" multiple size=%d>
-+%s
-+</select>
-+ </td>
-+</tr>
-+""" % (min(5, len(c.files)), attachFileOptions)
-+ else:
-+ attachFileRow = ""
-+
-+ result = """<html>
-+<head>
-+ <title>File Bug</title>
-+ <link rel="stylesheet" type="text/css" href="/scanview.css" />
-+</head>
-+<script language="javascript" type="text/javascript">
-+var reporters = %(reportersArray)s;
-+function updateReporterOptions() {
-+ index = document.getElementById('reporter').selectedIndex;
-+ for (var i=0; i < reporters.length; ++i) {
-+ o = document.getElementById(reporters[i] + "ReporterOptions");
-+ if (i == index) {
-+ o.style.display = "";
-+ } else {
-+ o.style.display = "none";
-+ }
-+ }
-+}
-+</script>
-+<body onLoad="updateReporterOptions()">
-+<h3>
-+<a href="/">Summary</a> >
-+%(reportingFor)s
-+File Bug</h3>
-+<form name="form" action="/report_submit" method="post">
-+<input type="hidden" name="report" value="%(report)s">
-+
-+<table class="form">
-+<tr><td>
-+<table class="form_group">
-+<tr>
-+ <td class="form_clabel">Title:</td>
-+ <td class="form_value">
-+ <input type="text" name="title" size="50" value="%(title)s">
-+ </td>
-+</tr>
-+<tr>
-+ <td class="form_label">Description:</td>
-+ <td class="form_value">
-+<textarea rows="10" cols="80" name="description">
-+%(description)s
-+</textarea>
-+ </td>
-+</tr>
-+
-+%(attachFileRow)s
-+
-+</table>
-+<br>
-+<table class="form_group">
-+<tr>
-+ <td class="form_clabel">Method:</td>
-+ <td class="form_value">
-+ <select id="reporter" name="reporter" onChange="updateReporterOptions()">
-+ %(reporterSelections)s
-+ </select>
-+ </td>
-+</tr>
-+%(reporterOptionsDivs)s
-+</table>
-+<br>
-+</td></tr>
-+<tr><td class="form_submit">
-+ <input align="right" type="submit" name="Submit" value="Submit">
-+</td></tr>
-+</table>
-+</form>
-+
-+%(extraIFrame)s
-+
-+</body>
-+</html>"""%locals()
-+
-+ return self.send_string(result)
-+
-+ def send_head(self, fields=None):
-+ if (self.server.options.onlyServeLocal and
-+ self.client_address[0] != '127.0.0.1'):
-+ return self.send_error(401, 'Unauthorized host.')
-+
-+ if fields is None:
-+ fields = {}
-+ self.fields = fields
-+
-+ o = urlparse.urlparse(self.path)
-+ self.fields = parse_query(o.query, fields)
-+ path = posixpath.normpath(urllib.unquote(o.path))
-+
-+ # Split the components and strip the root prefix.
-+ components = path.split('/')[1:]
-+
-+ # Special case some top-level entries.
-+ if components:
-+ name = components[0]
-+ if len(components)==2:
-+ if name=='report':
-+ return self.send_report(components[1])
-+ elif name=='open':
-+ return self.send_open_report(components[1])
-+ elif len(components)==1:
-+ if name=='quit':
-+ self.server.halt()
-+ return self.send_string('Goodbye.', 'text/plain')
-+ elif name=='report_submit':
-+ return self.send_report_submit()
-+ elif name=='report_crashes':
-+ overrides = { 'ScanView' : {},
-+ 'Radar' : {},
-+ 'Email' : {} }
-+ for i,r in enumerate(self.server.reporters):
-+ if r.getName() == 'Radar':
-+ overrides['ScanView']['reporter'] = i
-+ break
-+ overrides['Radar']['Component'] = 'llvm - checker'
-+ overrides['Radar']['Component Version'] = 'X'
-+ return self.send_report(None, overrides)
-+ elif name=='favicon.ico':
-+ return self.send_path(posixpath.join(kShare,'bugcatcher.ico'))
-+
-+ # Match directory entries.
-+ if components[-1] == '':
-+ components[-1] = 'index.html'
-+
-+ relpath = '/'.join(components)
-+ path = posixpath.join(self.server.root, relpath)
-+
-+ if self.server.options.debug > 1:
-+ print >>sys.stderr, '%s: SERVER: sending path "%s"'%(sys.argv[0],
-+ path)
-+ return self.send_path(path)
-+
-+ def send_404(self):
-+ self.send_error(404, "File not found")
-+ return None
-+
-+ def send_path(self, path):
-+ # If the requested path is outside the root directory, do not open it
-+ rel = os.path.abspath(path)
-+ if not rel.startswith(os.path.abspath(self.server.root)):
-+ return self.send_404()
-+
-+ ctype = self.guess_type(path)
-+ if ctype.startswith('text/'):
-+ # Patch file instead
-+ return self.send_patched_file(path, ctype)
-+ else:
-+ mode = 'rb'
-+ try:
-+ f = open(path, mode)
-+ except IOError:
-+ return self.send_404()
-+ return self.send_file(f, ctype)
-+
-+ def send_file(self, f, ctype):
-+ # Patch files to add links, but skip binary files.
-+ self.send_response(200)
-+ self.send_header("Content-type", ctype)
-+ fs = os.fstat(f.fileno())
-+ self.send_header("Content-Length", str(fs[6]))
-+ self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
-+ self.end_headers()
-+ return f
-+
-+ def send_string(self, s, ctype='text/html', headers=True, mtime=None):
-+ if headers:
-+ self.send_response(200)
-+ self.send_header("Content-type", ctype)
-+ self.send_header("Content-Length", str(len(s)))
-+ if mtime is None:
-+ mtime = self.dynamic_mtime
-+ self.send_header("Last-Modified", self.date_time_string(mtime))
-+ self.end_headers()
-+ return StringIO.StringIO(s)
-+
-+ def send_patched_file(self, path, ctype):
-+ # Allow a very limited set of variables. This is pretty gross.
-+ variables = {}
-+ variables['report'] = ''
-+ m = kReportFileRE.match(path)
-+ if m:
-+ variables['report'] = m.group(2)
-+
-+ try:
-+ f = open(path,'r')
-+ except IOError:
-+ return self.send_404()
-+ fs = os.fstat(f.fileno())
-+ data = f.read()
-+ for a,b in kReportReplacements:
-+ data = a.sub(b % variables, data)
-+ return self.send_string(data, ctype, mtime=fs.st_mtime)
-+
-+
-+def create_server(address, options, root):
-+ import Reporter
-+
-+ reporters = Reporter.getReporters()
-+
-+ return ScanViewServer(address, ScanViewRequestHandler,
-+ root,
-+ reporters,
-+ options)
-diff --git tools/clang/tools/scan-view/share/startfile.py tools/clang/tools/scan-view/share/startfile.py.orig
-new file mode 100644
-index 0000000..e8fbe2d
---- /dev/null
-+++ tools/clang/tools/scan-view/share/startfile.py
-@@ -0,0 +1,203 @@
-+"""Utility for opening a file using the default application in a cross-platform
-+manner. Modified from http://code.activestate.com/recipes/511443/.
-+"""
-+
-+__version__ = '1.1x'
-+__all__ = ['open']
-+
-+import os
-+import sys
-+import webbrowser
-+import subprocess
-+
-+_controllers = {}
-+_open = None
-+
-+
-+class BaseController(object):
-+ '''Base class for open program controllers.'''
-+
-+ def __init__(self, name):
-+ self.name = name
-+
-+ def open(self, filename):
-+ raise NotImplementedError
-+
-+
-+class Controller(BaseController):
-+ '''Controller for a generic open program.'''
-+
-+ def __init__(self, *args):
-+ super(Controller, self).__init__(os.path.basename(args[0]))
-+ self.args = list(args)
-+
-+ def _invoke(self, cmdline):
-+ if sys.platform[:3] == 'win':
-+ closefds = False
-+ startupinfo = subprocess.STARTUPINFO()
-+ startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
-+ else:
-+ closefds = True
-+ startupinfo = None
-+
-+ if (os.environ.get('DISPLAY') or sys.platform[:3] == 'win' or
-+ sys.platform == 'darwin'):
-+ inout = file(os.devnull, 'r+')
-+ else:
-+ # for TTY programs, we need stdin/out
-+ inout = None
-+
-+ # if possible, put the child precess in separate process group,
-+ # so keyboard interrupts don't affect child precess as well as
-+ # Python
-+ setsid = getattr(os, 'setsid', None)
-+ if not setsid:
-+ setsid = getattr(os, 'setpgrp', None)
-+
-+ pipe = subprocess.Popen(cmdline, stdin=inout, stdout=inout,
-+ stderr=inout, close_fds=closefds,
-+ preexec_fn=setsid, startupinfo=startupinfo)
-+
-+ # It is assumed that this kind of tools (gnome-open, kfmclient,
-+ # exo-open, xdg-open and open for OSX) immediately exit after lauching
-+ # the specific application
-+ returncode = pipe.wait()
-+ if hasattr(self, 'fixreturncode'):
-+ returncode = self.fixreturncode(returncode)
-+ return not returncode
-+
-+ def open(self, filename):
-+ if isinstance(filename, basestring):
-+ cmdline = self.args + [filename]
-+ else:
-+ # assume it is a sequence
-+ cmdline = self.args + filename
-+ try:
-+ return self._invoke(cmdline)
-+ except OSError:
-+ return False
-+
-+
-+# Platform support for Windows
-+if sys.platform[:3] == 'win':
-+
-+ class Start(BaseController):
-+ '''Controller for the win32 start progam through os.startfile.'''
-+
-+ def open(self, filename):
-+ try:
-+ os.startfile(filename)
-+ except WindowsError:
-+ # [Error 22] No application is associated with the specified
-+ # file for this operation: '<URL>'
-+ return False
-+ else:
-+ return True
-+
-+ _controllers['windows-default'] = Start('start')
-+ _open = _controllers['windows-default'].open
-+
-+
-+# Platform support for MacOS
-+elif sys.platform == 'darwin':
-+ _controllers['open']= Controller('open')
-+ _open = _controllers['open'].open
-+
-+
-+# Platform support for Unix
-+else:
-+
-+ import commands
-+
-+ # @WARNING: use the private API of the webbrowser module
-+ from webbrowser import _iscommand
-+
-+ class KfmClient(Controller):
-+ '''Controller for the KDE kfmclient program.'''
-+
-+ def __init__(self, kfmclient='kfmclient'):
-+ super(KfmClient, self).__init__(kfmclient, 'exec')
-+ self.kde_version = self.detect_kde_version()
-+
-+ def detect_kde_version(self):
-+ kde_version = None
-+ try:
-+ info = commands.getoutput('kde-config --version')
-+
-+ for line in info.splitlines():
-+ if line.startswith('KDE'):
-+ kde_version = line.split(':')[-1].strip()
-+ break
-+ except (OSError, RuntimeError):
-+ pass
-+
-+ return kde_version
-+
-+ def fixreturncode(self, returncode):
-+ if returncode is not None and self.kde_version > '3.5.4':
-+ return returncode
-+ else:
-+ return os.EX_OK
-+
-+ def detect_desktop_environment():
-+ '''Checks for known desktop environments
-+
-+ Return the desktop environments name, lowercase (kde, gnome, xfce)
-+ or "generic"
-+
-+ '''
-+
-+ desktop_environment = 'generic'
-+
-+ if os.environ.get('KDE_FULL_SESSION') == 'true':
-+ desktop_environment = 'kde'
-+ elif os.environ.get('GNOME_DESKTOP_SESSION_ID'):
-+ desktop_environment = 'gnome'
-+ else:
-+ try:
-+ info = commands.getoutput('xprop -root _DT_SAVE_MODE')
-+ if ' = "xfce4"' in info:
-+ desktop_environment = 'xfce'
-+ except (OSError, RuntimeError):
-+ pass
-+
-+ return desktop_environment
-+
-+
-+ def register_X_controllers():
-+ if _iscommand('kfmclient'):
-+ _controllers['kde-open'] = KfmClient()
-+
-+ for command in ('gnome-open', 'exo-open', 'xdg-open'):
-+ if _iscommand(command):
-+ _controllers[command] = Controller(command)
-+
-+ def get():
-+ controllers_map = {
-+ 'gnome': 'gnome-open',
-+ 'kde': 'kde-open',
-+ 'xfce': 'exo-open',
-+ }
-+
-+ desktop_environment = detect_desktop_environment()
-+
-+ try:
-+ controller_name = controllers_map[desktop_environment]
-+ return _controllers[controller_name].open
-+
-+ except KeyError:
-+ if _controllers.has_key('xdg-open'):
-+ return _controllers['xdg-open'].open
-+ else:
-+ return webbrowser.open
-+
-+
-+ if os.environ.get("DISPLAY"):
-+ register_X_controllers()
-+ _open = get()
-+
-+
-+def open(filename):
-+ '''Open a file or an URL in the registered default application.'''
-+
-+ return _open(filename)
diff --git a/devel/llvm37/files/clang-patch-svn-250416 b/devel/llvm37/files/clang-patch-svn-250416
deleted file mode 100644
index c57aeca3c741..000000000000
--- a/devel/llvm37/files/clang-patch-svn-250416
+++ /dev/null
@@ -1,22 +0,0 @@
-------------------------------------------------------------------------
-r250416 | ed | 2015-10-15 15:07:07 +0000 (Thu, 15 Oct 2015) | 5 lines
-
-Add support for CloudABI/aarch64.
-
-The core C library has already been ported over to aarch64 successfully,
-meaning there is no reason to hold this change back.
-
-------------------------------------------------------------------------
-Index: lib/Basic/Targets.cpp
-===================================================================
---- tools/clang/lib/Basic/Targets.cpp (revision 250415)
-+++ tools/clang/lib/Basic/Targets.cpp (revision 250416)
-@@ -7364,6 +7364,8 @@
- return new DarwinAArch64TargetInfo(Triple);
-
- switch (os) {
-+ case llvm::Triple::CloudABI:
-+ return new CloudABITargetInfo<AArch64leTargetInfo>(Triple);
- case llvm::Triple::FreeBSD:
- return new FreeBSDTargetInfo<AArch64leTargetInfo>(Triple);
- case llvm::Triple::Linux:
diff --git a/devel/llvm37/files/clang-patch-tools_clang_lib_Headers_CMakeLists.txt b/devel/llvm37/files/clang-patch-tools_clang_lib_Headers_CMakeLists.txt
deleted file mode 100644
index 975a119b4587..000000000000
--- a/devel/llvm37/files/clang-patch-tools_clang_lib_Headers_CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
---- tools/clang/lib/Headers/CMakeLists.txt.orig 2015-07-30 22:47:41 UTC
-+++ tools/clang/lib/Headers/CMakeLists.txt
-@@ -30,7 +30,6 @@ set(files
- Intrin.h
- inttypes.h
- iso646.h
-- limits.h
- lzcntintrin.h
- mm3dnow.h
- mmintrin.h
-@@ -45,20 +44,12 @@ set(files
- s390intrin.h
- shaintrin.h
- smmintrin.h
-- stdalign.h
-- stdarg.h
-- stdatomic.h
-- stdbool.h
-- stddef.h
- __stddef_max_align_t.h
-- stdint.h
-- stdnoreturn.h
- tbmintrin.h
- tgmath.h
- tmmintrin.h
- unwind.h
- vadefs.h
-- varargs.h
- vecintrin.h
- __wmmintrin_aes.h
- wmmintrin.h
diff --git a/devel/llvm37/files/clang-patch-tools_clang_tools_clang-format_clang-format.py b/devel/llvm37/files/clang-patch-tools_clang_tools_clang-format_clang-format.py
deleted file mode 100644
index 9cb21db628f5..000000000000
--- a/devel/llvm37/files/clang-patch-tools_clang_tools_clang-format_clang-format.py
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/clang/tools/clang-format/clang-format.py.orig 2015-09-08 20:44:00 UTC
-+++ tools/clang/tools/clang-format/clang-format.py
-@@ -34,7 +34,7 @@ import vim
-
- # set g:clang_format_path to the path to clang-format if it is not on the path
- # Change this to the full path if clang-format is not on the path.
--binary = 'clang-format'
-+binary = 'clang-format37'
- if vim.eval('exists("g:clang_format_path")') == "1":
- binary = vim.eval('g:clang_format_path')
-
diff --git a/devel/llvm37/files/compiler-rt-patch-svn-249051 b/devel/llvm37/files/compiler-rt-patch-svn-249051
deleted file mode 100644
index 0ecc2dfd3c30..000000000000
--- a/devel/llvm37/files/compiler-rt-patch-svn-249051
+++ /dev/null
@@ -1,18 +0,0 @@
-------------------------------------------------------------------------
-r249051 | eugenis | 2015-10-01 18:27:28 +0000 (Thu, 01 Oct 2015) | 1 line
-
-[asan] Tweak gen_dynamic_list.py to work with both Py2 and Py3.
-------------------------------------------------------------------------
-Index: lib/sanitizer_common/scripts/gen_dynamic_list.py
-===================================================================
---- tools/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py (revision 249050)
-+++ tools/compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py (revision 249051)
-@@ -100,7 +100,7 @@
- print('global:')
- result.sort()
- for f in result:
-- print(' ' + f.encode('utf-8') + ';')
-+ print(u' %s;' % f)
- if args.version_list:
- print('local:')
- print(' *;')
diff --git a/devel/llvm37/files/compiler-rt-patch-svn-294806 b/devel/llvm37/files/compiler-rt-patch-svn-294806
deleted file mode 100644
index e96ee216a040..000000000000
--- a/devel/llvm37/files/compiler-rt-patch-svn-294806
+++ /dev/null
@@ -1,30 +0,0 @@
---- tools/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc.orig 2015-06-25 20:50:18 UTC
-+++ tools/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
-@@ -23,11 +23,6 @@
- #ifdef _FILE_OFFSET_BITS
- #undef _FILE_OFFSET_BITS
- #endif
--#if SANITIZER_FREEBSD
--#define _WANT_RTENTRY
--#include <sys/param.h>
--#include <sys/socketvar.h>
--#endif
- #include <arpa/inet.h>
- #include <dirent.h>
- #include <errno.h>
-@@ -374,6 +369,7 @@ namespace __sanitizer {
- unsigned struct_input_absinfo_sz = sizeof(struct input_absinfo);
- unsigned struct_input_id_sz = sizeof(struct input_id);
- unsigned struct_mtpos_sz = sizeof(struct mtpos);
-+ unsigned struct_rtentry_sz = sizeof(struct rtentry);
- unsigned struct_termio_sz = sizeof(struct termio);
- unsigned struct_vt_consize_sz = sizeof(struct vt_consize);
- unsigned struct_vt_sizes_sz = sizeof(struct vt_sizes);
-@@ -393,7 +389,6 @@ namespace __sanitizer {
- unsigned struct_midi_info_sz = sizeof(struct midi_info);
- unsigned struct_mtget_sz = sizeof(struct mtget);
- unsigned struct_mtop_sz = sizeof(struct mtop);
-- unsigned struct_rtentry_sz = sizeof(struct rtentry);
- unsigned struct_sbi_instrument_sz = sizeof(struct sbi_instrument);
- unsigned struct_seq_event_rec_sz = sizeof(struct seq_event_rec);
- unsigned struct_synth_info_sz = sizeof(struct synth_info);
diff --git a/devel/llvm37/files/compiler-rt-patch-tools_compiler-rt_cmake_config-ix.cmake b/devel/llvm37/files/compiler-rt-patch-tools_compiler-rt_cmake_config-ix.cmake
deleted file mode 100644
index 2e0bc3f38f72..000000000000
--- a/devel/llvm37/files/compiler-rt-patch-tools_compiler-rt_cmake_config-ix.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
---- tools/compiler-rt/cmake/config-ix.cmake.orig 2015-08-20 13:35:01 UTC
-+++ tools/compiler-rt/cmake/config-ix.cmake
-@@ -180,8 +180,8 @@ elseif(NOT APPLE) # Supported archs for
- # FIXME: We build runtimes for both i686 and i386, as "clang -m32" may
- # target different variant than "$CMAKE_C_COMPILER -m32". This part should
- # be gone after we resolve PR14109.
-- test_target_arch(i686 __i686__ "-m32")
-- test_target_arch(i386 __i386__ "-m32")
-+ #test_target_arch(i686 __i686__ "-m32")
-+ #test_target_arch(i386 __i386__ "-m32")
- else()
- if (CMAKE_SIZEOF_VOID_P EQUAL 4)
- test_target_arch(i386 "" "")
diff --git a/devel/llvm37/files/lldb-patch-svn-247116 b/devel/llvm37/files/lldb-patch-svn-247116
deleted file mode 100644
index 3f4c97439582..000000000000
--- a/devel/llvm37/files/lldb-patch-svn-247116
+++ /dev/null
@@ -1,36 +0,0 @@
-------------------------------------------------------------------------
-r247116 | sas | 2015-09-09 01:22:05 +0000 (Wed, 09 Sep 2015) | 11 lines
-
-Teach utilsOsType about NetBSD
-
-Summary: NetBSD is a free, fast, secure, and highly portable Unix-like Open Source operating system.
-
-Reviewers: joerg, sas
-
-Subscribers: sas, emaste, lldb-commits
-
-Differential Revision: http://reviews.llvm.org/D12615
-
-Change by Kamil Rytarowski <n54@gmx.com>
-------------------------------------------------------------------------
-Index: scripts/utilsOsType.py
-===================================================================
---- tools/lldb/scripts/utilsOsType.py (revision 247115)
-+++ tools/lldb/scripts/utilsOsType.py (revision 247116)
-@@ -31,6 +31,7 @@
- "Darwin",
- "FreeBSD",
- "Linux",
-+ "NetBSD",
- "Windows" ]
- class __metaclass__( type ):
- #++---------------------------------------------------------------------------
-@@ -71,6 +72,8 @@
- eOSType = EnumOsType.FreeBSD
- elif (strOS.startswith("linux")):
- eOSType = EnumOsType.Linux
-+ elif (strOS.startswith("netbsd")):
-+ eOSType = EnumOsType.NetBSD
- elif strOS == "win32":
- eOSType = EnumOsType.Windows
-
diff --git a/devel/llvm37/files/lldb-patch-svn-249467 b/devel/llvm37/files/lldb-patch-svn-249467
deleted file mode 100644
index 16aebf486224..000000000000
--- a/devel/llvm37/files/lldb-patch-svn-249467
+++ /dev/null
@@ -1,538 +0,0 @@
-------------------------------------------------------------------------
-r249467 | zturner | 2015-10-06 21:11:28 +0000 (Tue, 06 Oct 2015) | 1 line
-
-Update swig generation scripts to support Python 3.
-------------------------------------------------------------------------
-Index: scripts/finishSwigWrapperClasses.py
-===================================================================
---- tools/lldb/scripts/finishSwigWrapperClasses.py (revision 249466)
-+++ tools/lldb/scripts/finishSwigWrapperClasses.py (revision 249467)
-@@ -97,7 +97,7 @@
-
- if vMsg.__len__() != 0:
- strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult);
-- print strMsg;
-+ print(strMsg);
-
- sys.exit( vnResult );
-
-@@ -110,7 +110,7 @@
- # Throws: None.
- #--
- def program_exit_on_failure( vnResult, vMsg ):
-- print "%s%s (%d)" % (strExitMsgError, vMsg, vnResult);
-+ print("%s%s (%d)" % (strExitMsgError, vMsg, vnResult));
- sys.exit( vnResult );
-
- #++---------------------------------------------------------------------------
-@@ -141,7 +141,7 @@
- if val.__len__() != 0:
- strEqs = " =";
- strQ = "\"";
-- print "%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ);
-+ print("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ));
-
- #++---------------------------------------------------------------------------
- # Details: Validate the arguments passed to the program. This function exits
-@@ -210,8 +210,8 @@
- return (-9, strStatusMsg);
-
- if gbDbgFlag:
-- print strScriptLangFound % vStrScriptLang;
-- print strExecuteMsg % vStrScriptLang;
-+ print(strScriptLangFound % vStrScriptLang);
-+ print(strExecuteMsg % vStrScriptLang);
-
- # Change where Python looks for our modules
- strDir = os.path.normcase( strScriptFileDir );
-@@ -267,16 +267,18 @@
- listDirs.remove('.svn')
-
- if gbDbgFlag:
-- print strScriptLangsFound,
-+ sys.stdout.write(strScriptLangsFound)
- for dir in listDirs:
-- print dir,
-- print "\n";
-+ sys.stdout.write(dir)
-+ print("\n")
-
- # Iterate script directory find any script language directories
- for scriptLang in listDirs:
-- dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
-- nResult, strStatusMsg = run_post_process( scriptLang, strFinishFileName,
-- vDictArgs );
-+ # __pycache__ is a magic directory in Python 3 that holds .pyc files
-+ if scriptLang != "__pycache__":
-+ dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
-+ nResult, strStatusMsg = run_post_process( scriptLang, strFinishFileName,
-+ vDictArgs );
- if nResult < 0:
- break;
-
-Index: scripts/Python/buildSwigPython.py
-===================================================================
---- tools/lldb/scripts/Python/buildSwigPython.py (revision 249466)
-+++ tools/lldb/scripts/Python/buildSwigPython.py (revision 249467)
-@@ -123,7 +123,7 @@
- "/include/lldb/API/SBValue.h",
- "/include/lldb/API/SBValueList.h",
- "/include/lldb/API/SBWatchpoint.h" ];
-- bDebug = vDictArgs.has_key( "-d" );
-+ bDebug = "-d" in vDictArgs;
- strRt = vDictArgs[ "--srcRoot" ];
- strRt = os.path.normcase( strRt );
-
-@@ -133,8 +133,8 @@
- strHeaderFiles += " %s%s" % (strRt, strHdr);
-
- if bDebug:
-- print strMsgHdrFiles;
-- print strHeaderFiles;
-+ print(strMsgHdrFiles);
-+ print(strHeaderFiles);
-
- vDictArgs[ "--headerFiles" ] = strHeaderFiles;
-
-@@ -201,7 +201,7 @@
- "/scripts/interface/SBValue.i",
- "/scripts/interface/SBValueList.i",
- "/scripts/interface/SBWatchpoint.i" ];
-- bDebug = vDictArgs.has_key( "-d" );
-+ bDebug = "-d" in vDictArgs;
- strRt = vDictArgs[ "--srcRoot" ];
- strRt = os.path.normcase( strRt );
-
-@@ -211,8 +211,8 @@
- strInterfaceFiles += " %s%s" % (strRt, strIFace);
-
- if bDebug:
-- print strMsgIFaceFiles;
-- print strInterfaceFiles;
-+ print(strMsgIFaceFiles);
-+ print(strInterfaceFiles);
-
- vDictArgs[ "--ifaceFiles" ] = strInterfaceFiles;
-
-@@ -251,12 +251,12 @@
- #--
- def check_file_exists( vDictArgs, vstrFileNamePath ):
- bExists = False;
-- bDebug = vDictArgs.has_key( "-d" );
-+ bDebug = "-d" in vDictArgs;
-
- if os.path.exists( vstrFileNamePath ):
- bExists = True;
- elif bDebug:
-- print strMsgFileNotExist % vstrFileNamePath;
-+ print(strMsgFileNotExist % vstrFileNamePath);
-
- return bExists;
-
-@@ -271,7 +271,7 @@
- #--
- def check_newer_file( vDictArgs, vstrSwigOpFileNamePath, vstrFileNamePath ):
- bNeedUpdate = False;
-- bDebug = vDictArgs.has_key( "-d" );
-+ bDebug = "-d" in vDictArgs;
-
- strMsg = "";
- nResult = which_file_is_newer( vstrFileNamePath, vstrSwigOpFileNamePath );
-@@ -284,7 +284,7 @@
- bNeedUpdate = True;
-
- if bNeedUpdate and bDebug:
-- print strMsg;
-+ print(strMsg);
-
- return bNeedUpdate;
-
-@@ -328,7 +328,7 @@
- # on the system other stuff may need to be put here as well.
- from distutils.sysconfig import get_python_lib;
- strPythonInstallDir = "";
-- bHaveArgPrefix = vDictArgs.has_key( "--prefix" );
-+ bHaveArgPrefix = "--prefix" in vDictArgs;
- if bHaveArgPrefix:
- strPythonInstallDir = vDictArgs[ "--prefix" ];
- if strPythonInstallDir.__len__() != 0:
-@@ -354,9 +354,9 @@
- bOk = True;
- strWkDir = "";
- strErrMsg = "";
-- bDbg = vDictArgs.has_key( "-d" );
-+ bDbg = "-d" in vDictArgs;
-
-- bMakeFileCalled = vDictArgs.has_key( "-m" );
-+ bMakeFileCalled = "-m" in vDictArgs;
- if bMakeFileCalled:
- dbg.dump_text( "Built by LLVM" );
- return get_framework_python_dir_windows( vDictArgs );
-@@ -368,7 +368,7 @@
- strWkDir += "/LLDB.framework";
- if os.path.exists( strWkDir ):
- if bDbg:
-- print strMsgFoundLldbFrameWkDir % strWkDir;
-+ print(strMsgFoundLldbFrameWkDir % strWkDir);
- strWkDir += "/Resources/Python/lldb";
- strWkDir = os.path.normcase( strWkDir );
- else:
-@@ -420,7 +420,7 @@
- strErrMsg = "";
-
- strConfigBldDir = "";
-- bHaveConfigBldDir = vDictArgs.has_key( "--cfgBldDir" );
-+ bHaveConfigBldDir = "--cfgBldDir" in vDictArgs;
- if bHaveConfigBldDir:
- strConfigBldDir = vDictArgs[ "--cfgBldDir" ];
- if (bHaveConfigBldDir == False) or (strConfigBldDir.__len__() == 0):
-@@ -463,8 +463,8 @@
- dbg = utilsDebug.CDebugFnVerbose( "Python script do_swig_rebuild()" );
- bOk = True;
- strMsg = "";
-- bDbg = vDictArgs.has_key( "-d" );
-- bGenDependencies = vDictArgs.has_key( "-M" );
-+ bDbg = "-d" in vDictArgs;
-+ bGenDependencies = "-M" in vDictArgs;
- strSwigExePath = vDictArgs[ "--swigExePath" ];
- strSwigExeName = vDictArgs[ "--swigExeName" ];
- strSrcRoot = vDictArgs[ "--srcRoot" ];
-@@ -502,7 +502,7 @@
- strCmd += "-o \"%s\" " % strOp;
- strCmd += "\"%s\" " % strIp;
- if bDbg:
-- print strMsgSwigExecute % strCmd;
-+ print(strMsgSwigExecute % strCmd);
-
- # Execute SWIG
- process = subprocess.Popen( strCmd, stdout=subprocess.PIPE,
-@@ -547,7 +547,7 @@
- dbg = utilsDebug.CDebugFnVerbose( "Python script run_python_script()" );
- bOk = True;
- strMsg = "";
-- bDbg = vDictArgs.has_key( "-d" );
-+ bDbg = "-d" in vDictArgs;
-
- strPy = "%s %s" % (sys.executable, vstrArgs);
- process = subprocess.Popen( strPy, shell=True );
-@@ -583,7 +583,7 @@
- dbg = utilsDebug.CDebugFnVerbose( "Python script do_modify_python_lldb()" );
- bOk = True;
- strMsg = "";
-- bDbg = vDictArgs.has_key( "-d" );
-+ bDbg = "-d" in vDictArgs;
- strCwd = vDictArgs[ "--srcRoot" ]; # /llvm/tools/lldb
- strCwd += "/scripts/Python";
- strPyScript = "modify-python-lldb.py";
-@@ -654,15 +654,15 @@
- strMsg = "";
- strErrMsgProgFail = "";
-
-- if not( vDictArgs.has_key( "--swigExePath" ) and vDictArgs.has_key( "--swigExeName" ) ):
-+ if not("--swigExePath" in vDictArgs) and ("--swigExeName" in vDictArgs):
- strErrMsgProgFail += strErrMsgSwigParamsMissing;
- return (-100, strErrMsgProgFail );
-
-- bDebug = vDictArgs.has_key( "-d" );
-+ bDebug = "-d" in vDictArgs;
-
- strSwigDepFile = "";
- strSwigDepOptions = "";
-- bGenDependencies = vDictArgs.has_key( "-M" );
-+ bGenDependencies = "-M" in vDictArgs;
- if bGenDependencies:
- strSwigDepFile = vDictArgs[ "--targetDir" ] + "/LLDBWrapPython.cpp.d";
- strSwigDepOptions = "-MMD -MF \"%s.tmp\"" % strSwigDepFile;
-@@ -669,7 +669,7 @@
- strSwigDepFile = os.path.normcase( strSwigDepFile );
- strSwigDepOptions = os.path.normcase( strSwigDepOptions );
-
-- bMakeFileCalled = vDictArgs.has_key( "-m" );
-+ bMakeFileCalled = "-m" in vDictArgs;
- strSwigOutputFile = ""
- if bMakeFileCalled:
- strSwigOutputFile = vDictArgs[ "--targetDir" ] + "/LLDBWrapPython.cpp";
-@@ -760,7 +760,7 @@
- if bOk and (bNeedUpdate == False):
- strInitPiPath = strFrameworkPythonDir + "/__init__.py";
- strInitPiPath = os.path.normcase( strInitPiPath );
-- print strInitPiPath
-+ print(strInitPiPath)
- bNeedUpdate = not check_file_exists( vDictArgs, strInitPiPath );
- dbg.dump_object( "check_file_exists( vDictArgs, strInitPiPath ), bNeedUpdate =", bNeedUpdate);
-
-@@ -769,12 +769,12 @@
- strMsg = strMsgNotNeedUpdate;
- return (0, strMsg );
- else:
-- print strMsgSwigNeedRebuild;
-+ print(strMsgSwigNeedRebuild);
- bOk, strMsg, nExitResult = do_swig_rebuild( vDictArgs, strSwigDepFile,
- strCfgBldDir,
- strSwigOutputFile,
- strSwigInputFile );
-- bGenDependencies = vDictArgs.has_key( "-M" );
-+ bGenDependencies = "-M" in vDictArgs;
- if bGenDependencies == True:
- return (nExitResult, strMsg);
-
-@@ -794,5 +794,5 @@
- # This script can be called by another Python script by calling the main()
- # function directly
- if __name__ == "__main__":
-- print "Script cannot be called directly, called by buildSwigWrapperClasses.py";
-+ print("Script cannot be called directly, called by buildSwigWrapperClasses.py");
-
-Index: scripts/Python/modify-python-lldb.py
-===================================================================
---- tools/lldb/scripts/Python/modify-python-lldb.py (revision 249466)
-+++ tools/lldb/scripts/Python/modify-python-lldb.py (revision 249467)
-@@ -21,7 +21,11 @@
- # subsystem.
- #
-
--import sys, re, StringIO
-+import sys, re
-+if sys.version_info.major >= 3:
-+ import io as StringIO
-+else:
-+ import StringIO
-
- if len (sys.argv) != 2:
- output_name = "./lldb.py"
-@@ -269,7 +273,7 @@
- def add_line(self, a_line):
- """Add a line to the content, if there is a previous line, commit it."""
- if self.prev_line != None:
-- print >> self, self.prev_line
-+ self.write(self.prev_line + "\n")
- self.prev_line = a_line
- def del_line(self):
- """Forget about the previous line, do not commit it."""
-@@ -281,7 +285,7 @@
- def finish(self):
- """Call this when you're finished with populating content."""
- if self.prev_line != None:
-- print >> self, self.prev_line
-+ self.write(self.prev_line + "\n")
- self.prev_line = None
-
- # The new content will have the iteration protocol defined for our lldb objects.
-Index: scripts/utilsOsType.py
-===================================================================
---- tools/lldb/scripts/utilsOsType.py (revision 249466)
-+++ tools/lldb/scripts/utilsOsType.py (revision 249467)
-@@ -26,14 +26,24 @@
- # Authors: Illya Rudkin 28/11/2013.
- # Changes: None.
- #--
--class EnumOsType( object ):
-- values = [ "Unknown",
-- "Darwin",
-- "FreeBSD",
-- "Linux",
-- "NetBSD",
-- "Windows" ]
-- class __metaclass__( type ):
-+if sys.version_info.major >= 3:
-+ from enum import Enum
-+ class EnumOsType(Enum):
-+ Unknown = 0
-+ Darwin = 1
-+ FreeBSD = 2
-+ Linux = 3
-+ NetBSD = 4
-+ Windows = 5
-+else:
-+ class EnumOsType( object ):
-+ values = [ "Unknown",
-+ "Darwin",
-+ "FreeBSD",
-+ "Linux",
-+ "NetBSD",
-+ "Windows" ]
-+ class __metaclass__( type ):
- #++---------------------------------------------------------------------------
- # Details: Fn acts as an enumeration.
- # Args: vName - (R) Enumeration to match.
-@@ -40,8 +50,8 @@
- # Returns: Int - Matching enumeration/index.
- # Throws: None.
- #--
-- def __getattr__( self, vName ):
-- return self.values.index( vName );
-+ def __getattr__( self, vName ):
-+ return self.values.index( vName );
-
- #++---------------------------------------------------------------------------
- # Details: Reverse fast lookup of the values list.
-@@ -49,8 +59,8 @@
- # Returns: Str - text description matching enumeration.
- # Throws: None.
- #--
-- def name_of( self, vI ):
-- return EnumOsType.values[ vI ];
-+ def name_of( self, vI ):
-+ return EnumOsType.values[ vI ];
-
- #-----------------------------------------------------------------------------
- #-----------------------------------------------------------------------------
-Index: scripts/utilsDebug.py
-===================================================================
---- tools/lldb/scripts/utilsDebug.py (revision 249466)
-+++ tools/lldb/scripts/utilsDebug.py (revision 249467)
-@@ -55,9 +55,9 @@
- def dump_object( self, vstrText, vObject ):
- if CDebugFnVerbose.bVerboseOn == False:
- return;
-- print "%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-- vstrText),;
-- print vObject;
-+ sys.stdout.write("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-+ vstrText));
-+ print(vObject);
-
- #++------------------------------------------------------------------------
- # Details: Print out some progress text given by the client.
-@@ -69,8 +69,8 @@
- def dump_text( self, vstrText ):
- if CDebugFnVerbose.bVerboseOn == False:
- return;
-- print "%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-- vstrText);
-+ print("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-+ vstrText));
-
- # Private methods:
- def __init__( self, vstrFnName ):
-@@ -100,8 +100,8 @@
- #--
- def __indent_back( self ):
- if CDebugFnVerbose.bVerboseOn:
-- print "%d%s< fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-- self.__strFnName);
-+ print("%d%s< fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
-+ self.__strFnName));
- CDebugFnVerbose.__nLevel -= 1;
-
- #++------------------------------------------------------------------------
-@@ -116,8 +116,8 @@
- CDebugFnVerbose.__nLevel += 1;
- self.__strFnName = vstrFnName;
- if CDebugFnVerbose.bVerboseOn:
-- print "%d%s> fn: %s" % ( CDebugFnVerbose.__nLevel, self.__get_dots(),
-- self.__strFnName);
-+ print("%d%s> fn: %s" % ( CDebugFnVerbose.__nLevel, self.__get_dots(),
-+ self.__strFnName));
-
- # Private statics attributes:
- __nLevel = 0; # Indentation level counter
-Index: scripts/utilsArgsParse.py
-===================================================================
---- tools/lldb/scripts/utilsArgsParse.py (revision 249466)
-+++ tools/lldb/scripts/utilsArgsParse.py (revision 249467)
-@@ -87,7 +87,7 @@
-
- # Count the number of mandatory args required (if any one found)
- countMandatory = 0;
-- for opt, man in vDictArgReq.iteritems():
-+ for opt, man in vDictArgReq.items():
- if man == "m":
- countMandatory = countMandatory + 1;
-
-Index: scripts/buildSwigWrapperClasses.py
-===================================================================
---- tools/lldb/scripts/buildSwigWrapperClasses.py (revision 249466)
-+++ tools/lldb/scripts/buildSwigWrapperClasses.py (revision 249467)
-@@ -126,7 +126,7 @@
-
- if vMsg.__len__() != 0:
- strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult);
-- print strMsg;
-+ print(strMsg);
-
- sys.exit( vnResult );
-
-@@ -139,7 +139,7 @@
- # Throws: None.
- #--
- def program_exit_on_failure( vnResult, vMsg ):
-- print "%s%s (%d)" % (strExitMsgError, vMsg, vnResult);
-+ print("%s%s (%d)" % (strExitMsgError, vMsg, vnResult));
- sys.exit( vnResult );
-
- #++---------------------------------------------------------------------------
-@@ -170,7 +170,7 @@
- if val.__len__() != 0:
- strEqs = " =";
- strQ = "\"";
-- print "%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ);
-+ print("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ));
-
- #++---------------------------------------------------------------------------
- # Details: Locate the lldb.swig file. No checking for path correctness is
-@@ -193,7 +193,7 @@
- bOk = os.path.isfile( strFullPath );
- if bOk:
- if gbDbgFlag:
-- print strSwigFileFound;
-+ print(strSwigFileFound);
- else:
- strStatusMsg = strSwigFileFoundNotFound % strFullPath;
-
-@@ -227,8 +227,8 @@
- return (-9, strStatusMsg);
-
- if gbDbgFlag:
-- print strSwigScriptLangFound % vStrScriptLang;
-- print strSwigExecuteMsg % vStrScriptLang;
-+ print(strSwigScriptLangFound % vStrScriptLang);
-+ print(strSwigExecuteMsg % vStrScriptLang);
-
- # Change where Python looks for our modules
- strDir = os.path.normcase( strScriptFileDir );
-@@ -287,16 +287,18 @@
- listDirs.remove('.svn')
-
- if gbDbgFlag:
-- print strSwigScriptLangsFound,
-+ sys.stdout.write(strSwigScriptLangsFound)
- for dir in listDirs:
-- print dir,
-- print "\n";
-+ sys.stdout.write(dir)
-+ print("\n");
-
- # Iterate script directory find any script language directories
- for scriptLang in listDirs:
-- dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
-- nResult, strStatusMsg = run_swig( scriptLang, strSwigBuildFileName,
-- vDictArgs );
-+ # __pycache__ is a magic directory in Python 3 that holds .pyc files
-+ if scriptLang != "__pycache__":
-+ dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
-+ nResult, strStatusMsg = run_swig( scriptLang, strSwigBuildFileName,
-+ vDictArgs );
- if nResult < 0:
- break;
-
-@@ -503,7 +505,7 @@
- program_exit( -4, strMsgErrorOsTypeUnknown );
-
- global gbDbgFlag;
-- gbDbgFlag = dictArgs.has_key( "-d" );
-+ gbDbgFlag = "-d" in dictArgs;
- if gbDbgFlag:
- print_out_input_parameters( dictArgs );
-
-@@ -513,8 +515,8 @@
- # called by this program
- global gbMakeFileFlag;
- global gbSwigGenDepFileFlag;
-- gbMakeFileFlag = dictArgs.has_key( "-m" );
-- gbSwigGenDepFileFlag = dictArgs.has_key( "-M" );
-+ gbMakeFileFlag = "-m" in dictArgs;
-+ gbSwigGenDepFileFlag = "-M" in dictArgs;
-
- bOk, strMsg = check_lldb_swig_file_exists( dictArgs[ "--srcRoot" ], eOSType );
- if bOk == False:
diff --git a/devel/llvm37/files/llvm-wrapper.sh.in b/devel/llvm37/files/llvm-wrapper.sh.in
deleted file mode 100644
index 0a460f3156e5..000000000000
--- a/devel/llvm37/files/llvm-wrapper.sh.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-LLVM_PREFIX="%%LLVM_PREFIX%%"
-LLVM_SUFFIX="%%LLVM_SUFFIX%%"
-
-tool=$(basename $0)
-tool="${LLVM_PREFIX}/bin/${tool%${LLVM_SUFFIX}}"
-LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LLVM_PREFIX}/lib" \
- "${tool}" "${@}"
diff --git a/devel/llvm37/files/openmp-patch-bug32279 b/devel/llvm37/files/openmp-patch-bug32279
deleted file mode 100644
index b0c21a60776b..000000000000
--- a/devel/llvm37/files/openmp-patch-bug32279
+++ /dev/null
@@ -1,25 +0,0 @@
---- tools/openmp/runtime/cmake/LibompHandleFlags.cmake.orig 2017-03-16 15:57:00 UTC
-+++ tools/openmp/runtime/cmake/LibompHandleFlags.cmake
-@@ -165,6 +165,11 @@ function(libomp_get_fflags fflags)
- if(${IA32})
- libomp_append(fflags_local -m32 LIBOMP_HAVE_M32_FORTRAN_FLAG)
- endif()
-+ IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
-+ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
-+ libomp_append(libflags_local "-lm")
-+ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
-+ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
- set(fflags_local ${fflags_local} ${LIBOMP_FFLAGS})
- libomp_setup_flags(fflags_local)
- set(${fflags} ${fflags_local} PARENT_SCOPE)
---- tools/openmp/runtime/cmake/LibompMicroTests.cmake.orig 2017-03-16 15:57:29 UTC
-+++ tools/openmp/runtime/cmake/LibompMicroTests.cmake
-@@ -168,7 +168,7 @@ add_custom_command(
- add_custom_target(libomp-test-deps DEPENDS test-deps/.success)
- set(libomp_expected_library_deps)
- if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
-- set(libomp_expected_library_deps libc.so.7 libthr.so.3)
-+ set(libomp_expected_library_deps libc.so.7 libthr.so.3 libm.so.5)
- elseif(APPLE)
- set(libomp_expected_library_deps /usr/lib/libSystem.B.dylib)
- elseif(WIN32)
diff --git a/devel/llvm37/files/openmp-patch-tools_openmp_runtime_tools_expand-vars.pl b/devel/llvm37/files/openmp-patch-tools_openmp_runtime_tools_expand-vars.pl
deleted file mode 100644
index 9df4ab1c0a41..000000000000
--- a/devel/llvm37/files/openmp-patch-tools_openmp_runtime_tools_expand-vars.pl
+++ /dev/null
@@ -1,11 +0,0 @@
---- tools/openmp/runtime/tools/expand-vars.pl.orig 2014-02-24 10:40:15 UTC
-+++ tools/openmp/runtime/tools/expand-vars.pl
-@@ -113,7 +113,7 @@ $bulk = read_file( $input );
-
- # Do the replacements.
- $bulk =~
-- s{(?:\$($keyword_rexp)|\$($name_rexp)|\${{(.*?)}})}
-+ s{(?:\$($keyword_rexp)|\$($name_rexp)|\$\{\{(.*?)\}\})}
- {
- my $value;
- if ( defined( $1 ) ) {
diff --git a/devel/llvm37/files/patch-llvm-svn-243590 b/devel/llvm37/files/patch-llvm-svn-243590
deleted file mode 100644
index 643ce3a92b22..000000000000
--- a/devel/llvm37/files/patch-llvm-svn-243590
+++ /dev/null
@@ -1,73 +0,0 @@
-------------------------------------------------------------------------
-r243590 | matze | 2015-07-29 23:22:48 +0000 (Wed, 29 Jul 2015) | 9 lines
-
-IR: Implement Value::mergeUseLists() iteratively
-
-This avoids stack overflows when the the compiler does not perform tail call
-elimination. Apparently this happens for MSVC with the /Ob2 switch which
-may be used by external code including this header.
-
-Reported by and based on a patch from Jean-Francois Riendeau.
-
-Related to rdar://21900756
-------------------------------------------------------------------------
-Index: include/llvm/IR/Value.h
-===================================================================
---- include/llvm/IR/Value.h (revision 243589)
-+++ include/llvm/IR/Value.h (revision 243590)
-@@ -493,7 +493,28 @@
- template <class Compare>
- static Use *mergeUseLists(Use *L, Use *R, Compare Cmp) {
- Use *Merged;
-- mergeUseListsImpl(L, R, &Merged, Cmp);
-+ Use **Next = &Merged;
-+
-+ for (;;) {
-+ if (!L) {
-+ *Next = R;
-+ break;
-+ }
-+ if (!R) {
-+ *Next = L;
-+ break;
-+ }
-+ if (Cmp(*R, *L)) {
-+ *Next = R;
-+ Next = &R->Next;
-+ R = R->Next;
-+ } else {
-+ *Next = L;
-+ Next = &L->Next;
-+ L = L->Next;
-+ }
-+ }
-+
- return Merged;
- }
-
-@@ -586,25 +607,6 @@
- }
- }
-
--template <class Compare>
--void Value::mergeUseListsImpl(Use *L, Use *R, Use **Next, Compare Cmp) {
-- if (!L) {
-- *Next = R;
-- return;
-- }
-- if (!R) {
-- *Next = L;
-- return;
-- }
-- if (Cmp(*R, *L)) {
-- *Next = R;
-- mergeUseListsImpl(L, R->Next, &R->Next, Cmp);
-- return;
-- }
-- *Next = L;
-- mergeUseListsImpl(L->Next, R, &L->Next, Cmp);
--}
--
- // isa - Provide some specializations of isa so that we don't have to include
- // the subtype header files to test to see if the value is a subclass...
- //
diff --git a/devel/llvm37/files/patch-svn-283188 b/devel/llvm37/files/patch-svn-283188
deleted file mode 100644
index 43f29670192b..000000000000
--- a/devel/llvm37/files/patch-svn-283188
+++ /dev/null
@@ -1,26 +0,0 @@
-------------------------------------------------------------------------
-r283188 | mgorny | 2016-10-04 06:09:14 +0000 (Tue, 04 Oct 2016) | 9 lines
-
-[cmake] Use separate doctrees to prevent races between Sphinx instances
-
-Use separate doctrees between different Sphinx builders in order to
-prevent race condition issues due to multiple Sphinx instances accessing
-the same doctree cache in parallel.
-
-Bug: https://llvm.org/bugs/show_bug.cgi?id=23781
-
-Differential Revision: https://reviews.llvm.org/D23755
-------------------------------------------------------------------------
-Index: cmake/modules/AddSphinxTarget.cmake
-===================================================================
---- cmake/modules/AddSphinxTarget.cmake (revision 283187)
-+++ cmake/modules/AddSphinxTarget.cmake (revision 283188)
-@@ -6,7 +6,7 @@
- # ``project`` should be the project name
- function (add_sphinx_target builder project)
- set(SPHINX_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${builder}")
-- set(SPHINX_DOC_TREE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees")
-+ set(SPHINX_DOC_TREE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees-${builder}")
- set(SPHINX_TARGET_NAME docs-${project}-${builder})
-
- if (SPHINX_WARNINGS_AS_ERRORS)
diff --git a/devel/llvm37/files/patch-tools_llvm-config_llvm-config.cpp b/devel/llvm37/files/patch-tools_llvm-config_llvm-config.cpp
deleted file mode 100644
index 0b9504a8a0e1..000000000000
--- a/devel/llvm37/files/patch-tools_llvm-config_llvm-config.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
---- tools/llvm-config/llvm-config.cpp.orig 2015-12-21 11:12:59.047349000 +0100
-+++ tools/llvm-config/llvm-config.cpp 2015-12-21 11:14:08.881815000 +0100
-@@ -360,8 +360,9 @@ int main(int argc, char **argv) {
- OS << ActiveLibDir << '/' << Lib;
- } else if (PrintLibs) {
- // If this is a typical library name, include it using -l.
-- if (Lib.startswith("lib") && Lib.endswith(".a")) {
-- OS << "-l" << Lib.slice(3, Lib.size()-2);
-+ if (Lib.startswith("lib") && Lib.endswith(LTDL_SHLIB_EXT)) {
-+ // sizeof counts trailing NULL
-+ OS << "-l" << Lib.slice(3, Lib.size()-sizeof(LTDL_SHLIB_EXT)+1);
- continue;
- }
-
diff --git a/devel/llvm37/files/patch-utils_llvm-build_llvmbuild_main.py b/devel/llvm37/files/patch-utils_llvm-build_llvmbuild_main.py
deleted file mode 100644
index e9ae98c4c9e5..000000000000
--- a/devel/llvm37/files/patch-utils_llvm-build_llvmbuild_main.py
+++ /dev/null
@@ -1,39 +0,0 @@
---- utils/llvm-build/llvmbuild/main.py.orig 2014-11-19 04:34:20.000000000 +0100
-+++ utils/llvm-build/llvmbuild/main.py 2015-12-21 11:15:34.356019000 +0100
-@@ -393,6 +393,8 @@ subdirectories = %s
- //
- //===----------------------------------------------------------------------===//
-
-+#include "llvm/Config/config.h"
-+
- """)
- f.write('struct AvailableComponent {\n')
- f.write(' /// The name of the component.\n')
-@@ -413,7 +415,7 @@ subdirectories = %s
- if library_name is None:
- library_name_as_cstr = '0'
- else:
-- library_name_as_cstr = '"lib%s.a"' % library_name
-+ library_name_as_cstr = '"lib%s" LTDL_SHLIB_EXT' % library_name
- f.write(' { "%s", %s, %d, { %s } },\n' % (
- name, library_name_as_cstr, is_installed,
- ', '.join('"%s"' % dep
-@@ -718,7 +720,17 @@ def add_magic_target_components(parser,
-
- # We handle a few special cases of target names here for historical
- # reasons, as these are the names configure currently comes up with.
-- native_target_name = { 'x86' : 'X86',
-+ native_target_name = { 'amd64' : 'X86',
-+ 'arm' : 'ARM',
-+ 'armeb' : 'ARM',
-+ 'armv6' : 'ARM',
-+ 'armv6hf' : 'ARM',
-+ 'i386' : 'X86',
-+ 'mips' : 'Mips',
-+ 'powerpc' : 'PowerPC',
-+ 'powerpc64' : 'PowerPC',
-+ 'sparc64' : 'Sparc',
-+ 'x86' : 'X86',
- 'x86_64' : 'X86',
- 'Unknown' : None }.get(opts.native_target,
- opts.native_target)
diff --git a/devel/llvm37/pkg-descr b/devel/llvm37/pkg-descr
deleted file mode 100644
index d252f07c6790..000000000000
--- a/devel/llvm37/pkg-descr
+++ /dev/null
@@ -1,8 +0,0 @@
-The LLVM Project is a collection of modular and reusable compiler and
-toolchain technologies.
-
-This port includes Clang (a C/C++/Objective-C compiler), LLD (a linker),
-LLDB (a debugger), an OpenMP runtime library, and the LLVM infrastructure
-these are built on.
-
-WWW: http://llvm.org/
diff --git a/devel/llvm37/pkg-plist b/devel/llvm37/pkg-plist
deleted file mode 100644
index 37473e31e711..000000000000
--- a/devel/llvm37/pkg-plist
+++ /dev/null
@@ -1,2489 +0,0 @@
-bin/bugpoint37
-bin/llc37
-bin/lli37
-bin/llvm-ar37
-bin/llvm-as37
-bin/llvm-bcanalyzer37
-bin/llvm-config37
-bin/llvm-cov37
-bin/llvm-diff37
-bin/llvm-dis37
-bin/llvm-dwarfdump37
-bin/llvm-extract37
-bin/llvm-link37
-bin/llvm-mc37
-bin/llvm-mcmarkup37
-bin/llvm-nm37
-bin/llvm-objdump37
-bin/llvm-profdata37
-bin/llvm-ranlib37
-bin/llvm-readobj37
-bin/llvm-rtdyld37
-bin/llvm-size37
-bin/llvm-stress37
-bin/llvm-symbolizer37
-bin/llvm-tblgen37
-bin/macho-dump37
-bin/opt37
-%%CLANG%%bin/clang37
-%%CLANG%%bin/clang++37
-%%CLANG%%bin/clang-check37
-%%CLANG%%bin/clang-cpp37
-%%CLANG%%bin/clang-format37
-%%CLANG%%bin/clang-tblgen37
-%%CLANG%%bin/scan-build37
-%%CLANG%%bin/scan-view37
-%%EXTRAS%%bin/clang-apply-replacements37
-%%EXTRAS%%bin/clang-modernize37
-%%EXTRAS%%bin/clang-rename37
-%%EXTRAS%%bin/clang-tidy37
-%%LLD%%bin/lld37
-%%LLDB%%bin/argdumper37
-%%LLDB%%bin/lldb37
-%%LLDB%%bin/lldb-mi37
-%%LLDB%%bin/lldb-server37
-%%LIT%%bin/lit37
-%%LIT%%llvm37/bin/lit
-%%LIT%%bin/llvm-lit37
-%%LIT%%llvm37/bin/llvm-lit
-%%LIT%%bin/FileCheck37
-%%LIT%%llvm37/bin/FileCheck
-%%LLDB%%llvm37/bin/argdumper
-llvm37/bin/bugpoint
-%%CLANG%%llvm37/bin/clang
-%%CLANG%%llvm37/bin/clang++
-%%CLANG%%llvm37/bin/clang-3.7
-%%EXTRAS%%llvm37/bin/clang-apply-replacements
-%%CLANG%%llvm37/bin/clang-check
-%%CLANG%%llvm37/bin/clang-cl
-%%CLANG%%llvm37/bin/clang-cpp
-%%CLANG%%llvm37/bin/clang-format
-%%EXTRAS%%llvm37/bin/clang-modernize
-%%EXTRAS%%llvm37/bin/clang-rename
-%%CLANG%%llvm37/bin/clang-tblgen
-%%EXTRAS%%llvm37/bin/clang-tidy
-%%CLANG%%llvm37/bin/git-clang-format
-llvm37/bin/llc
-%%LLD%%llvm37/bin/lld
-%%LLDB%%llvm37/bin/lldb
-%%LLDB%%llvm37/bin/lldb-%%LLVM_RELEASE%%
-%%LLDB%%llvm37/bin/lldb-mi
-%%LLDB%%llvm37/bin/lldb-mi-%%LLVM_RELEASE%%
-%%LLDB%%llvm37/bin/lldb-server
-%%LLDB%%llvm37/bin/lldb-server-%%LLVM_RELEASE%%
-llvm37/bin/lli
-llvm37/bin/llvm-ar
-llvm37/bin/llvm-as
-llvm37/bin/llvm-bcanalyzer
-llvm37/bin/llvm-c-test
-llvm37/bin/llvm-config
-llvm37/bin/llvm-cov
-llvm37/bin/llvm-cxxdump
-llvm37/bin/llvm-diff
-llvm37/bin/llvm-dis
-llvm37/bin/llvm-dsymutil
-llvm37/bin/llvm-dwarfdump
-llvm37/bin/llvm-extract
-llvm37/bin/llvm-lib
-llvm37/bin/llvm-link
-llvm37/bin/llvm-lto
-llvm37/bin/llvm-mc
-llvm37/bin/llvm-mcmarkup
-llvm37/bin/llvm-nm
-llvm37/bin/llvm-objdump
-llvm37/bin/llvm-pdbdump
-llvm37/bin/llvm-profdata
-llvm37/bin/llvm-ranlib
-llvm37/bin/llvm-readobj
-llvm37/bin/llvm-rtdyld
-llvm37/bin/llvm-size
-llvm37/bin/llvm-stress
-llvm37/bin/llvm-symbolizer
-llvm37/bin/llvm-tblgen
-llvm37/bin/macho-dump
-llvm37/bin/obj2yaml
-llvm37/bin/opt
-%%CLANG%%llvm37/bin/scan-build
-%%CLANG%%llvm37/bin/scan-view
-llvm37/bin/verify-uselistorder
-llvm37/bin/yaml2obj
-%%CLANG%%llvm37/include/clang-c/BuildSystem.h
-%%CLANG%%llvm37/include/clang-c/CXCompilationDatabase.h
-%%CLANG%%llvm37/include/clang-c/CXErrorCode.h
-%%CLANG%%llvm37/include/clang-c/CXString.h
-%%CLANG%%llvm37/include/clang-c/Documentation.h
-%%CLANG%%llvm37/include/clang-c/Index.h
-%%CLANG%%llvm37/include/clang-c/Platform.h
-%%CLANG%%llvm37/include/clang/ARCMigrate/ARCMT.h
-%%CLANG%%llvm37/include/clang/ARCMigrate/ARCMTActions.h
-%%CLANG%%llvm37/include/clang/ARCMigrate/FileRemapper.h
-%%CLANG%%llvm37/include/clang/AST/APValue.h
-%%CLANG%%llvm37/include/clang/AST/AST.h
-%%CLANG%%llvm37/include/clang/AST/ASTConsumer.h
-%%CLANG%%llvm37/include/clang/AST/ASTContext.h
-%%CLANG%%llvm37/include/clang/AST/ASTDiagnostic.h
-%%CLANG%%llvm37/include/clang/AST/ASTFwd.h
-%%CLANG%%llvm37/include/clang/AST/ASTImporter.h
-%%CLANG%%llvm37/include/clang/AST/ASTLambda.h
-%%CLANG%%llvm37/include/clang/AST/ASTMutationListener.h
-%%CLANG%%llvm37/include/clang/AST/ASTTypeTraits.h
-%%CLANG%%llvm37/include/clang/AST/ASTUnresolvedSet.h
-%%CLANG%%llvm37/include/clang/AST/ASTVector.h
-%%CLANG%%llvm37/include/clang/AST/Attr.h
-%%CLANG%%llvm37/include/clang/AST/AttrDump.inc
-%%CLANG%%llvm37/include/clang/AST/AttrImpl.inc
-%%CLANG%%llvm37/include/clang/AST/AttrIterator.h
-%%CLANG%%llvm37/include/clang/AST/AttrVisitor.inc
-%%CLANG%%llvm37/include/clang/AST/Attrs.inc
-%%CLANG%%llvm37/include/clang/AST/BaseSubobject.h
-%%CLANG%%llvm37/include/clang/AST/BuiltinTypes.def
-%%CLANG%%llvm37/include/clang/AST/CXXInheritance.h
-%%CLANG%%llvm37/include/clang/AST/CanonicalType.h
-%%CLANG%%llvm37/include/clang/AST/CharUnits.h
-%%CLANG%%llvm37/include/clang/AST/Comment.h
-%%CLANG%%llvm37/include/clang/AST/CommentBriefParser.h
-%%CLANG%%llvm37/include/clang/AST/CommentCommandInfo.inc
-%%CLANG%%llvm37/include/clang/AST/CommentCommandList.inc
-%%CLANG%%llvm37/include/clang/AST/CommentCommandTraits.h
-%%CLANG%%llvm37/include/clang/AST/CommentDiagnostic.h
-%%CLANG%%llvm37/include/clang/AST/CommentHTMLNamedCharacterReferences.inc
-%%CLANG%%llvm37/include/clang/AST/CommentHTMLTags.inc
-%%CLANG%%llvm37/include/clang/AST/CommentHTMLTagsProperties.inc
-%%CLANG%%llvm37/include/clang/AST/CommentLexer.h
-%%CLANG%%llvm37/include/clang/AST/CommentNodes.inc
-%%CLANG%%llvm37/include/clang/AST/CommentParser.h
-%%CLANG%%llvm37/include/clang/AST/CommentSema.h
-%%CLANG%%llvm37/include/clang/AST/CommentVisitor.h
-%%CLANG%%llvm37/include/clang/AST/DataRecursiveASTVisitor.h
-%%CLANG%%llvm37/include/clang/AST/Decl.h
-%%CLANG%%llvm37/include/clang/AST/DeclAccessPair.h
-%%CLANG%%llvm37/include/clang/AST/DeclBase.h
-%%CLANG%%llvm37/include/clang/AST/DeclCXX.h
-%%CLANG%%llvm37/include/clang/AST/DeclContextInternals.h
-%%CLANG%%llvm37/include/clang/AST/DeclFriend.h
-%%CLANG%%llvm37/include/clang/AST/DeclGroup.h
-%%CLANG%%llvm37/include/clang/AST/DeclLookups.h
-%%CLANG%%llvm37/include/clang/AST/DeclNodes.inc
-%%CLANG%%llvm37/include/clang/AST/DeclObjC.h
-%%CLANG%%llvm37/include/clang/AST/DeclOpenMP.h
-%%CLANG%%llvm37/include/clang/AST/DeclTemplate.h
-%%CLANG%%llvm37/include/clang/AST/DeclVisitor.h
-%%CLANG%%llvm37/include/clang/AST/DeclarationName.h
-%%CLANG%%llvm37/include/clang/AST/DependentDiagnostic.h
-%%CLANG%%llvm37/include/clang/AST/EvaluatedExprVisitor.h
-%%CLANG%%llvm37/include/clang/AST/Expr.h
-%%CLANG%%llvm37/include/clang/AST/ExprCXX.h
-%%CLANG%%llvm37/include/clang/AST/ExprObjC.h
-%%CLANG%%llvm37/include/clang/AST/ExternalASTSource.h
-%%CLANG%%llvm37/include/clang/AST/GlobalDecl.h
-%%CLANG%%llvm37/include/clang/AST/LambdaCapture.h
-%%CLANG%%llvm37/include/clang/AST/Mangle.h
-%%CLANG%%llvm37/include/clang/AST/MangleNumberingContext.h
-%%CLANG%%llvm37/include/clang/AST/NSAPI.h
-%%CLANG%%llvm37/include/clang/AST/NestedNameSpecifier.h
-%%CLANG%%llvm37/include/clang/AST/OpenMPClause.h
-%%CLANG%%llvm37/include/clang/AST/OperationKinds.h
-%%CLANG%%llvm37/include/clang/AST/ParentMap.h
-%%CLANG%%llvm37/include/clang/AST/PrettyPrinter.h
-%%CLANG%%llvm37/include/clang/AST/RawCommentList.h
-%%CLANG%%llvm37/include/clang/AST/RecordLayout.h
-%%CLANG%%llvm37/include/clang/AST/RecursiveASTVisitor.h
-%%CLANG%%llvm37/include/clang/AST/Redeclarable.h
-%%CLANG%%llvm37/include/clang/AST/SelectorLocationsKind.h
-%%CLANG%%llvm37/include/clang/AST/Stmt.h
-%%CLANG%%llvm37/include/clang/AST/StmtCXX.h
-%%CLANG%%llvm37/include/clang/AST/StmtGraphTraits.h
-%%CLANG%%llvm37/include/clang/AST/StmtIterator.h
-%%CLANG%%llvm37/include/clang/AST/StmtNodes.inc
-%%CLANG%%llvm37/include/clang/AST/StmtObjC.h
-%%CLANG%%llvm37/include/clang/AST/StmtOpenMP.h
-%%CLANG%%llvm37/include/clang/AST/StmtVisitor.h
-%%CLANG%%llvm37/include/clang/AST/TemplateBase.h
-%%CLANG%%llvm37/include/clang/AST/TemplateName.h
-%%CLANG%%llvm37/include/clang/AST/Type.h
-%%CLANG%%llvm37/include/clang/AST/TypeLoc.h
-%%CLANG%%llvm37/include/clang/AST/TypeLocNodes.def
-%%CLANG%%llvm37/include/clang/AST/TypeLocVisitor.h
-%%CLANG%%llvm37/include/clang/AST/TypeNodes.def
-%%CLANG%%llvm37/include/clang/AST/TypeOrdering.h
-%%CLANG%%llvm37/include/clang/AST/TypeVisitor.h
-%%CLANG%%llvm37/include/clang/AST/UnresolvedSet.h
-%%CLANG%%llvm37/include/clang/AST/VTTBuilder.h
-%%CLANG%%llvm37/include/clang/AST/VTableBuilder.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/ASTMatchFinder.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/ASTMatchers.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/ASTMatchersInternal.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/ASTMatchersMacros.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/Dynamic/Diagnostics.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/Dynamic/Parser.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/Dynamic/Registry.h
-%%CLANG%%llvm37/include/clang/ASTMatchers/Dynamic/VariantValue.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/Consumed.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/Dominators.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/FormatString.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/LiveVariables.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/PostOrderCFGView.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ReachableCode.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafety.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyOps.def
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
-%%CLANG%%llvm37/include/clang/Analysis/Analyses/UninitializedValues.h
-%%CLANG%%llvm37/include/clang/Analysis/AnalysisContext.h
-%%CLANG%%llvm37/include/clang/Analysis/AnalysisDiagnostic.h
-%%CLANG%%llvm37/include/clang/Analysis/CFG.h
-%%CLANG%%llvm37/include/clang/Analysis/CFGStmtMap.h
-%%CLANG%%llvm37/include/clang/Analysis/CallGraph.h
-%%CLANG%%llvm37/include/clang/Analysis/CodeInjector.h
-%%CLANG%%llvm37/include/clang/Analysis/DomainSpecific/CocoaConventions.h
-%%CLANG%%llvm37/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
-%%CLANG%%llvm37/include/clang/Analysis/FlowSensitive/DataflowValues.h
-%%CLANG%%llvm37/include/clang/Analysis/ProgramPoint.h
-%%CLANG%%llvm37/include/clang/Analysis/Support/BumpVector.h
-%%CLANG%%llvm37/include/clang/Basic/ABI.h
-%%CLANG%%llvm37/include/clang/Basic/AddressSpaces.h
-%%CLANG%%llvm37/include/clang/Basic/AllDiagnostics.h
-%%CLANG%%llvm37/include/clang/Basic/AttrHasAttributeImpl.inc
-%%CLANG%%llvm37/include/clang/Basic/AttrKinds.h
-%%CLANG%%llvm37/include/clang/Basic/AttrList.inc
-%%CLANG%%llvm37/include/clang/Basic/Attributes.h
-%%CLANG%%llvm37/include/clang/Basic/Builtins.def
-%%CLANG%%llvm37/include/clang/Basic/Builtins.h
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsAArch64.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsAMDGPU.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsARM.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsHexagon.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsLe64.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsMips.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsNEON.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsNVPTX.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsPPC.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsSystemZ.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsX86.def
-%%CLANG%%llvm37/include/clang/Basic/BuiltinsXCore.def
-%%CLANG%%llvm37/include/clang/Basic/CapturedStmt.h
-%%CLANG%%llvm37/include/clang/Basic/CharInfo.h
-%%CLANG%%llvm37/include/clang/Basic/CommentOptions.h
-%%CLANG%%llvm37/include/clang/Basic/Diagnostic.h
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticASTKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticAnalysisKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticCategories.h
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticCommentKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticCommonKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticDriverKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticFrontendKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticGroups.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticIDs.h
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticIndexName.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticLexKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticOptions.def
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticOptions.h
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticParseKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticSemaKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/DiagnosticSerializationKinds.inc
-%%CLANG%%llvm37/include/clang/Basic/ExceptionSpecificationType.h
-%%CLANG%%llvm37/include/clang/Basic/ExpressionTraits.h
-%%CLANG%%llvm37/include/clang/Basic/FileManager.h
-%%CLANG%%llvm37/include/clang/Basic/FileSystemOptions.h
-%%CLANG%%llvm37/include/clang/Basic/FileSystemStatCache.h
-%%CLANG%%llvm37/include/clang/Basic/IdentifierTable.h
-%%CLANG%%llvm37/include/clang/Basic/LLVM.h
-%%CLANG%%llvm37/include/clang/Basic/Lambda.h
-%%CLANG%%llvm37/include/clang/Basic/LangOptions.def
-%%CLANG%%llvm37/include/clang/Basic/LangOptions.h
-%%CLANG%%llvm37/include/clang/Basic/Linkage.h
-%%CLANG%%llvm37/include/clang/Basic/MacroBuilder.h
-%%CLANG%%llvm37/include/clang/Basic/Module.h
-%%CLANG%%llvm37/include/clang/Basic/ObjCRuntime.h
-%%CLANG%%llvm37/include/clang/Basic/OpenCLExtensions.def
-%%CLANG%%llvm37/include/clang/Basic/OpenMPKinds.def
-%%CLANG%%llvm37/include/clang/Basic/OpenMPKinds.h
-%%CLANG%%llvm37/include/clang/Basic/OperatorKinds.def
-%%CLANG%%llvm37/include/clang/Basic/OperatorKinds.h
-%%CLANG%%llvm37/include/clang/Basic/OperatorPrecedence.h
-%%CLANG%%llvm37/include/clang/Basic/PartialDiagnostic.h
-%%CLANG%%llvm37/include/clang/Basic/PlistSupport.h
-%%CLANG%%llvm37/include/clang/Basic/PrettyStackTrace.h
-%%CLANG%%llvm37/include/clang/Basic/SanitizerBlacklist.h
-%%CLANG%%llvm37/include/clang/Basic/Sanitizers.def
-%%CLANG%%llvm37/include/clang/Basic/Sanitizers.h
-%%CLANG%%llvm37/include/clang/Basic/SourceLocation.h
-%%CLANG%%llvm37/include/clang/Basic/SourceManager.h
-%%CLANG%%llvm37/include/clang/Basic/SourceManagerInternals.h
-%%CLANG%%llvm37/include/clang/Basic/Specifiers.h
-%%CLANG%%llvm37/include/clang/Basic/TargetBuiltins.h
-%%CLANG%%llvm37/include/clang/Basic/TargetCXXABI.h
-%%CLANG%%llvm37/include/clang/Basic/TargetInfo.h
-%%CLANG%%llvm37/include/clang/Basic/TargetOptions.h
-%%CLANG%%llvm37/include/clang/Basic/TemplateKinds.h
-%%CLANG%%llvm37/include/clang/Basic/TokenKinds.def
-%%CLANG%%llvm37/include/clang/Basic/TokenKinds.h
-%%CLANG%%llvm37/include/clang/Basic/TypeTraits.h
-%%CLANG%%llvm37/include/clang/Basic/Version.h
-%%CLANG%%llvm37/include/clang/Basic/Version.inc
-%%CLANG%%llvm37/include/clang/Basic/VersionTuple.h
-%%CLANG%%llvm37/include/clang/Basic/VirtualFileSystem.h
-%%CLANG%%llvm37/include/clang/Basic/Visibility.h
-%%CLANG%%llvm37/include/clang/Basic/arm_neon.inc
-%%CLANG%%llvm37/include/clang/CodeGen/BackendUtil.h
-%%CLANG%%llvm37/include/clang/CodeGen/CGFunctionInfo.h
-%%CLANG%%llvm37/include/clang/CodeGen/CodeGenABITypes.h
-%%CLANG%%llvm37/include/clang/CodeGen/CodeGenAction.h
-%%CLANG%%llvm37/include/clang/CodeGen/ModuleBuilder.h
-%%CLANG%%llvm37/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
-%%CLANG%%llvm37/include/clang/Config/config.h
-%%CLANG%%llvm37/include/clang/Driver/Action.h
-%%CLANG%%llvm37/include/clang/Driver/Compilation.h
-%%CLANG%%llvm37/include/clang/Driver/Driver.h
-%%CLANG%%llvm37/include/clang/Driver/DriverDiagnostic.h
-%%CLANG%%llvm37/include/clang/Driver/Job.h
-%%CLANG%%llvm37/include/clang/Driver/Multilib.h
-%%CLANG%%llvm37/include/clang/Driver/Options.h
-%%CLANG%%llvm37/include/clang/Driver/Options.inc
-%%CLANG%%llvm37/include/clang/Driver/Phases.h
-%%CLANG%%llvm37/include/clang/Driver/SanitizerArgs.h
-%%CLANG%%llvm37/include/clang/Driver/Tool.h
-%%CLANG%%llvm37/include/clang/Driver/ToolChain.h
-%%CLANG%%llvm37/include/clang/Driver/Types.def
-%%CLANG%%llvm37/include/clang/Driver/Types.h
-%%CLANG%%llvm37/include/clang/Driver/Util.h
-%%CLANG%%llvm37/include/clang/Edit/Commit.h
-%%CLANG%%llvm37/include/clang/Edit/EditedSource.h
-%%CLANG%%llvm37/include/clang/Edit/EditsReceiver.h
-%%CLANG%%llvm37/include/clang/Edit/FileOffset.h
-%%CLANG%%llvm37/include/clang/Edit/Rewriters.h
-%%CLANG%%llvm37/include/clang/Format/Format.h
-%%CLANG%%llvm37/include/clang/Frontend/ASTConsumers.h
-%%CLANG%%llvm37/include/clang/Frontend/ASTUnit.h
-%%CLANG%%llvm37/include/clang/Frontend/ChainedDiagnosticConsumer.h
-%%CLANG%%llvm37/include/clang/Frontend/CodeGenOptions.def
-%%CLANG%%llvm37/include/clang/Frontend/CodeGenOptions.h
-%%CLANG%%llvm37/include/clang/Frontend/CommandLineSourceLoc.h
-%%CLANG%%llvm37/include/clang/Frontend/CompilerInstance.h
-%%CLANG%%llvm37/include/clang/Frontend/CompilerInvocation.h
-%%CLANG%%llvm37/include/clang/Frontend/DependencyOutputOptions.h
-%%CLANG%%llvm37/include/clang/Frontend/DiagnosticRenderer.h
-%%CLANG%%llvm37/include/clang/Frontend/FrontendAction.h
-%%CLANG%%llvm37/include/clang/Frontend/FrontendActions.h
-%%CLANG%%llvm37/include/clang/Frontend/FrontendDiagnostic.h
-%%CLANG%%llvm37/include/clang/Frontend/FrontendOptions.h
-%%CLANG%%llvm37/include/clang/Frontend/FrontendPluginRegistry.h
-%%CLANG%%llvm37/include/clang/Frontend/LangStandard.h
-%%CLANG%%llvm37/include/clang/Frontend/LangStandards.def
-%%CLANG%%llvm37/include/clang/Frontend/LayoutOverrideSource.h
-%%CLANG%%llvm37/include/clang/Frontend/LogDiagnosticPrinter.h
-%%CLANG%%llvm37/include/clang/Frontend/MigratorOptions.h
-%%CLANG%%llvm37/include/clang/Frontend/MultiplexConsumer.h
-%%CLANG%%llvm37/include/clang/Frontend/PCHContainerOperations.h
-%%CLANG%%llvm37/include/clang/Frontend/PreprocessorOutputOptions.h
-%%CLANG%%llvm37/include/clang/Frontend/SerializedDiagnosticPrinter.h
-%%CLANG%%llvm37/include/clang/Frontend/SerializedDiagnosticReader.h
-%%CLANG%%llvm37/include/clang/Frontend/SerializedDiagnostics.h
-%%CLANG%%llvm37/include/clang/Frontend/TextDiagnostic.h
-%%CLANG%%llvm37/include/clang/Frontend/TextDiagnosticBuffer.h
-%%CLANG%%llvm37/include/clang/Frontend/TextDiagnosticPrinter.h
-%%CLANG%%llvm37/include/clang/Frontend/Utils.h
-%%CLANG%%llvm37/include/clang/Frontend/VerifyDiagnosticConsumer.h
-%%CLANG%%llvm37/include/clang/FrontendTool/Utils.h
-%%CLANG%%llvm37/include/clang/Index/CommentToXML.h
-%%CLANG%%llvm37/include/clang/Index/USRGeneration.h
-%%CLANG%%llvm37/include/clang/Lex/CodeCompletionHandler.h
-%%CLANG%%llvm37/include/clang/Lex/DirectoryLookup.h
-%%CLANG%%llvm37/include/clang/Lex/ExternalPreprocessorSource.h
-%%CLANG%%llvm37/include/clang/Lex/HeaderMap.h
-%%CLANG%%llvm37/include/clang/Lex/HeaderSearch.h
-%%CLANG%%llvm37/include/clang/Lex/HeaderSearchOptions.h
-%%CLANG%%llvm37/include/clang/Lex/LexDiagnostic.h
-%%CLANG%%llvm37/include/clang/Lex/Lexer.h
-%%CLANG%%llvm37/include/clang/Lex/LiteralSupport.h
-%%CLANG%%llvm37/include/clang/Lex/MacroArgs.h
-%%CLANG%%llvm37/include/clang/Lex/MacroInfo.h
-%%CLANG%%llvm37/include/clang/Lex/ModuleLoader.h
-%%CLANG%%llvm37/include/clang/Lex/ModuleMap.h
-%%CLANG%%llvm37/include/clang/Lex/MultipleIncludeOpt.h
-%%CLANG%%llvm37/include/clang/Lex/PPCallbacks.h
-%%CLANG%%llvm37/include/clang/Lex/PPConditionalDirectiveRecord.h
-%%CLANG%%llvm37/include/clang/Lex/PTHLexer.h
-%%CLANG%%llvm37/include/clang/Lex/PTHManager.h
-%%CLANG%%llvm37/include/clang/Lex/Pragma.h
-%%CLANG%%llvm37/include/clang/Lex/PreprocessingRecord.h
-%%CLANG%%llvm37/include/clang/Lex/Preprocessor.h
-%%CLANG%%llvm37/include/clang/Lex/PreprocessorLexer.h
-%%CLANG%%llvm37/include/clang/Lex/PreprocessorOptions.h
-%%CLANG%%llvm37/include/clang/Lex/ScratchBuffer.h
-%%CLANG%%llvm37/include/clang/Lex/Token.h
-%%CLANG%%llvm37/include/clang/Lex/TokenConcatenation.h
-%%CLANG%%llvm37/include/clang/Lex/TokenLexer.h
-%%CLANG%%llvm37/include/clang/Parse/AttrParserStringSwitches.inc
-%%CLANG%%llvm37/include/clang/Parse/ParseAST.h
-%%CLANG%%llvm37/include/clang/Parse/ParseDiagnostic.h
-%%CLANG%%llvm37/include/clang/Parse/Parser.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/DeltaTree.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/HTMLRewrite.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/RewriteBuffer.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/RewriteRope.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/Rewriter.h
-%%CLANG%%llvm37/include/clang/Rewrite/Core/TokenRewriter.h
-%%CLANG%%llvm37/include/clang/Rewrite/Frontend/ASTConsumers.h
-%%CLANG%%llvm37/include/clang/Rewrite/Frontend/FixItRewriter.h
-%%CLANG%%llvm37/include/clang/Rewrite/Frontend/FrontendActions.h
-%%CLANG%%llvm37/include/clang/Rewrite/Frontend/Rewriters.h
-%%CLANG%%llvm37/include/clang/Sema/AnalysisBasedWarnings.h
-%%CLANG%%llvm37/include/clang/Sema/AttrParsedAttrImpl.inc
-%%CLANG%%llvm37/include/clang/Sema/AttrParsedAttrKinds.inc
-%%CLANG%%llvm37/include/clang/Sema/AttrParsedAttrList.inc
-%%CLANG%%llvm37/include/clang/Sema/AttrSpellingListIndex.inc
-%%CLANG%%llvm37/include/clang/Sema/AttrTemplateInstantiate.inc
-%%CLANG%%llvm37/include/clang/Sema/AttributeList.h
-%%CLANG%%llvm37/include/clang/Sema/CXXFieldCollector.h
-%%CLANG%%llvm37/include/clang/Sema/CodeCompleteConsumer.h
-%%CLANG%%llvm37/include/clang/Sema/CodeCompleteOptions.h
-%%CLANG%%llvm37/include/clang/Sema/DeclSpec.h
-%%CLANG%%llvm37/include/clang/Sema/DelayedDiagnostic.h
-%%CLANG%%llvm37/include/clang/Sema/Designator.h
-%%CLANG%%llvm37/include/clang/Sema/ExternalSemaSource.h
-%%CLANG%%llvm37/include/clang/Sema/IdentifierResolver.h
-%%CLANG%%llvm37/include/clang/Sema/Initialization.h
-%%CLANG%%llvm37/include/clang/Sema/LocInfoType.h
-%%CLANG%%llvm37/include/clang/Sema/Lookup.h
-%%CLANG%%llvm37/include/clang/Sema/LoopHint.h
-%%CLANG%%llvm37/include/clang/Sema/MultiplexExternalSemaSource.h
-%%CLANG%%llvm37/include/clang/Sema/ObjCMethodList.h
-%%CLANG%%llvm37/include/clang/Sema/Overload.h
-%%CLANG%%llvm37/include/clang/Sema/Ownership.h
-%%CLANG%%llvm37/include/clang/Sema/ParsedTemplate.h
-%%CLANG%%llvm37/include/clang/Sema/PrettyDeclStackTrace.h
-%%CLANG%%llvm37/include/clang/Sema/Scope.h
-%%CLANG%%llvm37/include/clang/Sema/ScopeInfo.h
-%%CLANG%%llvm37/include/clang/Sema/Sema.h
-%%CLANG%%llvm37/include/clang/Sema/SemaConsumer.h
-%%CLANG%%llvm37/include/clang/Sema/SemaDiagnostic.h
-%%CLANG%%llvm37/include/clang/Sema/SemaFixItUtils.h
-%%CLANG%%llvm37/include/clang/Sema/SemaInternal.h
-%%CLANG%%llvm37/include/clang/Sema/SemaLambda.h
-%%CLANG%%llvm37/include/clang/Sema/Template.h
-%%CLANG%%llvm37/include/clang/Sema/TemplateDeduction.h
-%%CLANG%%llvm37/include/clang/Sema/TypoCorrection.h
-%%CLANG%%llvm37/include/clang/Sema/Weak.h
-%%CLANG%%llvm37/include/clang/Serialization/ASTBitCodes.h
-%%CLANG%%llvm37/include/clang/Serialization/ASTDeserializationListener.h
-%%CLANG%%llvm37/include/clang/Serialization/ASTReader.h
-%%CLANG%%llvm37/include/clang/Serialization/ASTWriter.h
-%%CLANG%%llvm37/include/clang/Serialization/AttrPCHRead.inc
-%%CLANG%%llvm37/include/clang/Serialization/AttrPCHWrite.inc
-%%CLANG%%llvm37/include/clang/Serialization/ContinuousRangeMap.h
-%%CLANG%%llvm37/include/clang/Serialization/GlobalModuleIndex.h
-%%CLANG%%llvm37/include/clang/Serialization/Module.h
-%%CLANG%%llvm37/include/clang/Serialization/ModuleManager.h
-%%CLANG%%llvm37/include/clang/Serialization/SerializationDiagnostic.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Checkers/ObjCRetainCount.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/Analyses.def
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/Checker.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/CheckerManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
-%%CLANG%%llvm37/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
-%%CLANG%%llvm37/include/clang/Tooling/ArgumentsAdjusters.h
-%%CLANG%%llvm37/include/clang/Tooling/CommonOptionsParser.h
-%%CLANG%%llvm37/include/clang/Tooling/CompilationDatabase.h
-%%CLANG%%llvm37/include/clang/Tooling/CompilationDatabasePluginRegistry.h
-%%CLANG%%llvm37/include/clang/Tooling/Core/Replacement.h
-%%CLANG%%llvm37/include/clang/Tooling/FileMatchTrie.h
-%%CLANG%%llvm37/include/clang/Tooling/JSONCompilationDatabase.h
-%%CLANG%%llvm37/include/clang/Tooling/Refactoring.h
-%%CLANG%%llvm37/include/clang/Tooling/RefactoringCallbacks.h
-%%CLANG%%llvm37/include/clang/Tooling/ReplacementsYaml.h
-%%CLANG%%llvm37/include/clang/Tooling/Tooling.h
-%%LLD%%llvm37/include/lld/Config/Version.h
-%%LLD%%llvm37/include/lld/Core/AbsoluteAtom.h
-%%LLD%%llvm37/include/lld/Core/Alias.h
-%%LLD%%llvm37/include/lld/Core/ArchiveLibraryFile.h
-%%LLD%%llvm37/include/lld/Core/Atom.h
-%%LLD%%llvm37/include/lld/Core/DefinedAtom.h
-%%LLD%%llvm37/include/lld/Core/Error.h
-%%LLD%%llvm37/include/lld/Core/File.h
-%%LLD%%llvm37/include/lld/Core/Instrumentation.h
-%%LLD%%llvm37/include/lld/Core/LLVM.h
-%%LLD%%llvm37/include/lld/Core/LinkingContext.h
-%%LLD%%llvm37/include/lld/Core/Node.h
-%%LLD%%llvm37/include/lld/Core/Parallel.h
-%%LLD%%llvm37/include/lld/Core/Pass.h
-%%LLD%%llvm37/include/lld/Core/PassManager.h
-%%LLD%%llvm37/include/lld/Core/Reader.h
-%%LLD%%llvm37/include/lld/Core/Reference.h
-%%LLD%%llvm37/include/lld/Core/Resolver.h
-%%LLD%%llvm37/include/lld/Core/STDExtras.h
-%%LLD%%llvm37/include/lld/Core/SharedLibraryAtom.h
-%%LLD%%llvm37/include/lld/Core/SharedLibraryFile.h
-%%LLD%%llvm37/include/lld/Core/Simple.h
-%%LLD%%llvm37/include/lld/Core/SymbolTable.h
-%%LLD%%llvm37/include/lld/Core/UndefinedAtom.h
-%%LLD%%llvm37/include/lld/Core/Writer.h
-%%LLD%%llvm37/include/lld/Core/range.h
-%%LLD%%llvm37/include/lld/Driver/Driver.h
-%%LLD%%llvm37/include/lld/Driver/WinLinkModuleDef.h
-%%LLD%%llvm37/include/lld/ReaderWriter/AtomLayout.h
-%%LLD%%llvm37/include/lld/ReaderWriter/CoreLinkingContext.h
-%%LLD%%llvm37/include/lld/ReaderWriter/ELFLinkingContext.h
-%%LLD%%llvm37/include/lld/ReaderWriter/LinkerScript.h
-%%LLD%%llvm37/include/lld/ReaderWriter/MachOLinkingContext.h
-%%LLD%%llvm37/include/lld/ReaderWriter/PECOFFLinkingContext.h
-%%LLD%%llvm37/include/lld/ReaderWriter/YamlContext.h
-%%LLDB%%llvm37/include/lldb/API/LLDB.h
-%%LLDB%%llvm37/include/lldb/API/SBAddress.h
-%%LLDB%%llvm37/include/lldb/API/SBAttachInfo.h
-%%LLDB%%llvm37/include/lldb/API/SBBlock.h
-%%LLDB%%llvm37/include/lldb/API/SBBreakpoint.h
-%%LLDB%%llvm37/include/lldb/API/SBBreakpointLocation.h
-%%LLDB%%llvm37/include/lldb/API/SBBroadcaster.h
-%%LLDB%%llvm37/include/lldb/API/SBCommandInterpreter.h
-%%LLDB%%llvm37/include/lldb/API/SBCommandReturnObject.h
-%%LLDB%%llvm37/include/lldb/API/SBCommunication.h
-%%LLDB%%llvm37/include/lldb/API/SBCompileUnit.h
-%%LLDB%%llvm37/include/lldb/API/SBData.h
-%%LLDB%%llvm37/include/lldb/API/SBDebugger.h
-%%LLDB%%llvm37/include/lldb/API/SBDeclaration.h
-%%LLDB%%llvm37/include/lldb/API/SBDefines.h
-%%LLDB%%llvm37/include/lldb/API/SBError.h
-%%LLDB%%llvm37/include/lldb/API/SBEvent.h
-%%LLDB%%llvm37/include/lldb/API/SBExecutionContext.h
-%%LLDB%%llvm37/include/lldb/API/SBExpressionOptions.h
-%%LLDB%%llvm37/include/lldb/API/SBFileSpec.h
-%%LLDB%%llvm37/include/lldb/API/SBFileSpecList.h
-%%LLDB%%llvm37/include/lldb/API/SBFrame.h
-%%LLDB%%llvm37/include/lldb/API/SBFunction.h
-%%LLDB%%llvm37/include/lldb/API/SBHostOS.h
-%%LLDB%%llvm37/include/lldb/API/SBInstruction.h
-%%LLDB%%llvm37/include/lldb/API/SBInstructionList.h
-%%LLDB%%llvm37/include/lldb/API/SBLanguageRuntime.h
-%%LLDB%%llvm37/include/lldb/API/SBLaunchInfo.h
-%%LLDB%%llvm37/include/lldb/API/SBLineEntry.h
-%%LLDB%%llvm37/include/lldb/API/SBListener.h
-%%LLDB%%llvm37/include/lldb/API/SBModule.h
-%%LLDB%%llvm37/include/lldb/API/SBModuleSpec.h
-%%LLDB%%llvm37/include/lldb/API/SBPlatform.h
-%%LLDB%%llvm37/include/lldb/API/SBProcess.h
-%%LLDB%%llvm37/include/lldb/API/SBQueue.h
-%%LLDB%%llvm37/include/lldb/API/SBQueueItem.h
-%%LLDB%%llvm37/include/lldb/API/SBSection.h
-%%LLDB%%llvm37/include/lldb/API/SBSourceManager.h
-%%LLDB%%llvm37/include/lldb/API/SBStream.h
-%%LLDB%%llvm37/include/lldb/API/SBStringList.h
-%%LLDB%%llvm37/include/lldb/API/SBSymbol.h
-%%LLDB%%llvm37/include/lldb/API/SBSymbolContext.h
-%%LLDB%%llvm37/include/lldb/API/SBSymbolContextList.h
-%%LLDB%%llvm37/include/lldb/API/SBTarget.h
-%%LLDB%%llvm37/include/lldb/API/SBThread.h
-%%LLDB%%llvm37/include/lldb/API/SBThreadCollection.h
-%%LLDB%%llvm37/include/lldb/API/SBThreadPlan.h
-%%LLDB%%llvm37/include/lldb/API/SBType.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeCategory.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeEnumMember.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeFilter.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeFormat.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeNameSpecifier.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeSummary.h
-%%LLDB%%llvm37/include/lldb/API/SBTypeSynthetic.h
-%%LLDB%%llvm37/include/lldb/API/SBUnixSignals.h
-%%LLDB%%llvm37/include/lldb/API/SBValue.h
-%%LLDB%%llvm37/include/lldb/API/SBValueList.h
-%%LLDB%%llvm37/include/lldb/API/SBVariablesOptions.h
-%%LLDB%%llvm37/include/lldb/API/SBWatchpoint.h
-%%LLDB%%llvm37/include/lldb/API/SystemInitializerFull.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/Breakpoint.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointID.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointIDList.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointList.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointLocation.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointLocationCollection.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointLocationList.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointOptions.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointResolver.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointResolverAddress.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointResolverFileLine.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointResolverName.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointSite.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/BreakpointSiteList.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/Stoppoint.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/StoppointCallbackContext.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/StoppointLocation.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/Watchpoint.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/WatchpointList.h
-%%LLDB%%llvm37/include/lldb/Breakpoint/WatchpointOptions.h
-%%LLDB%%llvm37/include/lldb/Core/Address.h
-%%LLDB%%llvm37/include/lldb/Core/AddressRange.h
-%%LLDB%%llvm37/include/lldb/Core/AddressResolver.h
-%%LLDB%%llvm37/include/lldb/Core/AddressResolverFileLine.h
-%%LLDB%%llvm37/include/lldb/Core/AddressResolverName.h
-%%LLDB%%llvm37/include/lldb/Core/ArchSpec.h
-%%LLDB%%llvm37/include/lldb/Core/Baton.h
-%%LLDB%%llvm37/include/lldb/Core/Broadcaster.h
-%%LLDB%%llvm37/include/lldb/Core/ClangForward.h
-%%LLDB%%llvm37/include/lldb/Core/Communication.h
-%%LLDB%%llvm37/include/lldb/Core/Connection.h
-%%LLDB%%llvm37/include/lldb/Core/ConnectionMachPort.h
-%%LLDB%%llvm37/include/lldb/Core/ConnectionSharedMemory.h
-%%LLDB%%llvm37/include/lldb/Core/ConstString.h
-%%LLDB%%llvm37/include/lldb/Core/CxaDemangle.h
-%%LLDB%%llvm37/include/lldb/Core/DataBuffer.h
-%%LLDB%%llvm37/include/lldb/Core/DataBufferHeap.h
-%%LLDB%%llvm37/include/lldb/Core/DataBufferMemoryMap.h
-%%LLDB%%llvm37/include/lldb/Core/DataEncoder.h
-%%LLDB%%llvm37/include/lldb/Core/DataExtractor.h
-%%LLDB%%llvm37/include/lldb/Core/Debugger.h
-%%LLDB%%llvm37/include/lldb/Core/Disassembler.h
-%%LLDB%%llvm37/include/lldb/Core/EmulateInstruction.h
-%%LLDB%%llvm37/include/lldb/Core/Error.h
-%%LLDB%%llvm37/include/lldb/Core/Event.h
-%%LLDB%%llvm37/include/lldb/Core/FastDemangle.h
-%%LLDB%%llvm37/include/lldb/Core/FileLineResolver.h
-%%LLDB%%llvm37/include/lldb/Core/FileSpecList.h
-%%LLDB%%llvm37/include/lldb/Core/Flags.h
-%%LLDB%%llvm37/include/lldb/Core/FormatEntity.h
-%%LLDB%%llvm37/include/lldb/Core/History.h
-%%LLDB%%llvm37/include/lldb/Core/IOHandler.h
-%%LLDB%%llvm37/include/lldb/Core/IOStreamMacros.h
-%%LLDB%%llvm37/include/lldb/Core/Language.h
-%%LLDB%%llvm37/include/lldb/Core/Listener.h
-%%LLDB%%llvm37/include/lldb/Core/Log.h
-%%LLDB%%llvm37/include/lldb/Core/Logging.h
-%%LLDB%%llvm37/include/lldb/Core/Mangled.h
-%%LLDB%%llvm37/include/lldb/Core/MappedHash.h
-%%LLDB%%llvm37/include/lldb/Core/Module.h
-%%LLDB%%llvm37/include/lldb/Core/ModuleChild.h
-%%LLDB%%llvm37/include/lldb/Core/ModuleList.h
-%%LLDB%%llvm37/include/lldb/Core/ModuleSpec.h
-%%LLDB%%llvm37/include/lldb/Core/Opcode.h
-%%LLDB%%llvm37/include/lldb/Core/PluginInterface.h
-%%LLDB%%llvm37/include/lldb/Core/PluginManager.h
-%%LLDB%%llvm37/include/lldb/Core/RangeMap.h
-%%LLDB%%llvm37/include/lldb/Core/RegisterValue.h
-%%LLDB%%llvm37/include/lldb/Core/RegularExpression.h
-%%LLDB%%llvm37/include/lldb/Core/STLUtils.h
-%%LLDB%%llvm37/include/lldb/Core/Scalar.h
-%%LLDB%%llvm37/include/lldb/Core/SearchFilter.h
-%%LLDB%%llvm37/include/lldb/Core/Section.h
-%%LLDB%%llvm37/include/lldb/Core/SourceManager.h
-%%LLDB%%llvm37/include/lldb/Core/State.h
-%%LLDB%%llvm37/include/lldb/Core/Stream.h
-%%LLDB%%llvm37/include/lldb/Core/StreamAsynchronousIO.h
-%%LLDB%%llvm37/include/lldb/Core/StreamBuffer.h
-%%LLDB%%llvm37/include/lldb/Core/StreamCallback.h
-%%LLDB%%llvm37/include/lldb/Core/StreamFile.h
-%%LLDB%%llvm37/include/lldb/Core/StreamGDBRemote.h
-%%LLDB%%llvm37/include/lldb/Core/StreamString.h
-%%LLDB%%llvm37/include/lldb/Core/StreamTee.h
-%%LLDB%%llvm37/include/lldb/Core/StringList.h
-%%LLDB%%llvm37/include/lldb/Core/StructuredData.h
-%%LLDB%%llvm37/include/lldb/Core/ThreadSafeDenseMap.h
-%%LLDB%%llvm37/include/lldb/Core/ThreadSafeDenseSet.h
-%%LLDB%%llvm37/include/lldb/Core/ThreadSafeSTLMap.h
-%%LLDB%%llvm37/include/lldb/Core/ThreadSafeValue.h
-%%LLDB%%llvm37/include/lldb/Core/Timer.h
-%%LLDB%%llvm37/include/lldb/Core/UUID.h
-%%LLDB%%llvm37/include/lldb/Core/UniqueCStringMap.h
-%%LLDB%%llvm37/include/lldb/Core/UserID.h
-%%LLDB%%llvm37/include/lldb/Core/UserSettingsController.h
-%%LLDB%%llvm37/include/lldb/Core/VMRange.h
-%%LLDB%%llvm37/include/lldb/Core/Value.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObject.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectCast.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectChild.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectConstResult.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectConstResultChild.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectConstResultImpl.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectDynamicValue.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectList.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectMemory.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectRegister.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectSyntheticFilter.h
-%%LLDB%%llvm37/include/lldb/Core/ValueObjectVariable.h
-%%LLDB%%llvm37/include/lldb/Core/dwarf.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/CXXFormatterFunctions.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/DataVisualization.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/FormatCache.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/FormatClasses.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/FormatManager.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/FormattersContainer.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/StringPrinter.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeCategory.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeCategoryMap.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeFormat.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeSummary.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeSynthetic.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/TypeValidator.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/ValueObjectPrinter.h
-%%LLDB%%llvm37/include/lldb/DataFormatters/VectorType.h
-%%LLDB%%llvm37/include/lldb/Expression/ASTDumper.h
-%%LLDB%%llvm37/include/lldb/Expression/ASTResultSynthesizer.h
-%%LLDB%%llvm37/include/lldb/Expression/ASTStructExtractor.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangASTSource.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangExpression.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangExpressionDeclMap.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangExpressionParser.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangExpressionVariable.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangFunction.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangModulesDeclVendor.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangPersistentVariables.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangUserExpression.h
-%%LLDB%%llvm37/include/lldb/Expression/ClangUtilityFunction.h
-%%LLDB%%llvm37/include/lldb/Expression/DWARFExpression.h
-%%LLDB%%llvm37/include/lldb/Expression/ExpressionSourceCode.h
-%%LLDB%%llvm37/include/lldb/Expression/IRDynamicChecks.h
-%%LLDB%%llvm37/include/lldb/Expression/IRExecutionUnit.h
-%%LLDB%%llvm37/include/lldb/Expression/IRForTarget.h
-%%LLDB%%llvm37/include/lldb/Expression/IRInterpreter.h
-%%LLDB%%llvm37/include/lldb/Expression/IRMemoryMap.h
-%%LLDB%%llvm37/include/lldb/Expression/IRToDWARF.h
-%%LLDB%%llvm37/include/lldb/Expression/Materializer.h
-%%LLDB%%llvm37/include/lldb/Host/Condition.h
-%%LLDB%%llvm37/include/lldb/Host/Config.h
-%%LLDB%%llvm37/include/lldb/Host/ConnectionFileDescriptor.h
-%%LLDB%%llvm37/include/lldb/Host/Debug.h
-%%LLDB%%llvm37/include/lldb/Host/Editline.h
-%%LLDB%%llvm37/include/lldb/Host/Endian.h
-%%LLDB%%llvm37/include/lldb/Host/File.h
-%%LLDB%%llvm37/include/lldb/Host/FileCache.h
-%%LLDB%%llvm37/include/lldb/Host/FileSpec.h
-%%LLDB%%llvm37/include/lldb/Host/FileSystem.h
-%%LLDB%%llvm37/include/lldb/Host/Host.h
-%%LLDB%%llvm37/include/lldb/Host/HostGetOpt.h
-%%LLDB%%llvm37/include/lldb/Host/HostInfo.h
-%%LLDB%%llvm37/include/lldb/Host/HostInfoBase.h
-%%LLDB%%llvm37/include/lldb/Host/HostNativeProcess.h
-%%LLDB%%llvm37/include/lldb/Host/HostNativeProcessBase.h
-%%LLDB%%llvm37/include/lldb/Host/HostNativeThread.h
-%%LLDB%%llvm37/include/lldb/Host/HostNativeThreadBase.h
-%%LLDB%%llvm37/include/lldb/Host/HostNativeThreadForward.h
-%%LLDB%%llvm37/include/lldb/Host/HostProcess.h
-%%LLDB%%llvm37/include/lldb/Host/HostThread.h
-%%LLDB%%llvm37/include/lldb/Host/IOObject.h
-%%LLDB%%llvm37/include/lldb/Host/LockFile.h
-%%LLDB%%llvm37/include/lldb/Host/LockFileBase.h
-%%LLDB%%llvm37/include/lldb/Host/MainLoop.h
-%%LLDB%%llvm37/include/lldb/Host/MainLoopBase.h
-%%LLDB%%llvm37/include/lldb/Host/MonitoringProcessLauncher.h
-%%LLDB%%llvm37/include/lldb/Host/Mutex.h
-%%LLDB%%llvm37/include/lldb/Host/OptionParser.h
-%%LLDB%%llvm37/include/lldb/Host/Pipe.h
-%%LLDB%%llvm37/include/lldb/Host/PipeBase.h
-%%LLDB%%llvm37/include/lldb/Host/Predicate.h
-%%LLDB%%llvm37/include/lldb/Host/ProcessLauncher.h
-%%LLDB%%llvm37/include/lldb/Host/ProcessRunLock.h
-%%LLDB%%llvm37/include/lldb/Host/Socket.h
-%%LLDB%%llvm37/include/lldb/Host/SocketAddress.h
-%%LLDB%%llvm37/include/lldb/Host/StringConvert.h
-%%LLDB%%llvm37/include/lldb/Host/Symbols.h
-%%LLDB%%llvm37/include/lldb/Host/Terminal.h
-%%LLDB%%llvm37/include/lldb/Host/ThisThread.h
-%%LLDB%%llvm37/include/lldb/Host/ThreadLauncher.h
-%%LLDB%%llvm37/include/lldb/Host/Time.h
-%%LLDB%%llvm37/include/lldb/Host/TimeValue.h
-%%LLDB%%llvm37/include/lldb/Host/XML.h
-%%LLDB%%llvm37/include/lldb/Host/android/Android.h
-%%LLDB%%llvm37/include/lldb/Host/android/Config.h
-%%LLDB%%llvm37/include/lldb/Host/android/HostInfoAndroid.h
-%%LLDB%%llvm37/include/lldb/Host/android/ProcessLauncherAndroid.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeBreakpoint.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeBreakpointList.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeProcessProtocol.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeRegisterContext.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeRegisterContextRegisterInfo.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeThreadProtocol.h
-%%LLDB%%llvm37/include/lldb/Host/common/NativeWatchpointList.h
-%%LLDB%%llvm37/include/lldb/Host/common/SoftwareBreakpoint.h
-%%LLDB%%llvm37/include/lldb/Host/freebsd/Config.h
-%%LLDB%%llvm37/include/lldb/Host/freebsd/HostInfoFreeBSD.h
-%%LLDB%%llvm37/include/lldb/Host/freebsd/HostThreadFreeBSD.h
-%%LLDB%%llvm37/include/lldb/Host/linux/Config.h
-%%LLDB%%llvm37/include/lldb/Host/linux/HostInfoLinux.h
-%%LLDB%%llvm37/include/lldb/Host/linux/HostThreadLinux.h
-%%LLDB%%llvm37/include/lldb/Host/linux/Personality.h
-%%LLDB%%llvm37/include/lldb/Host/linux/Ptrace.h
-%%LLDB%%llvm37/include/lldb/Host/linux/Signalfd.h
-%%LLDB%%llvm37/include/lldb/Host/linux/Uio.h
-%%LLDB%%llvm37/include/lldb/Host/macosx/Config.h
-%%LLDB%%llvm37/include/lldb/Host/macosx/HostInfoMacOSX.h
-%%LLDB%%llvm37/include/lldb/Host/macosx/HostThreadMacOSX.h
-%%LLDB%%llvm37/include/lldb/Host/mingw/Config.h
-%%LLDB%%llvm37/include/lldb/Host/msvc/Config.h
-%%LLDB%%llvm37/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/Fcntl.h
-%%LLDB%%llvm37/include/lldb/Host/posix/HostInfoPosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/HostProcessPosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/HostThreadPosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/LockFilePosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/MainLoopPosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/PipePosix.h
-%%LLDB%%llvm37/include/lldb/Host/posix/ProcessLauncherPosix.h
-%%LLDB%%llvm37/include/lldb/Host/windows/AutoHandle.h
-%%LLDB%%llvm37/include/lldb/Host/windows/ConnectionGenericFileWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/HostInfoWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/HostProcessWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/HostThreadWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/LockFileWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/PipeWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/ProcessLauncherWindows.h
-%%LLDB%%llvm37/include/lldb/Host/windows/editlinewin.h
-%%LLDB%%llvm37/include/lldb/Host/windows/getopt/GetOptInc.h
-%%LLDB%%llvm37/include/lldb/Host/windows/win32.h
-%%LLDB%%llvm37/include/lldb/Host/windows/windows.h
-%%LLDB%%llvm37/include/lldb/Initialization/SystemInitializer.h
-%%LLDB%%llvm37/include/lldb/Initialization/SystemInitializerCommon.h
-%%LLDB%%llvm37/include/lldb/Initialization/SystemLifetimeManager.h
-%%LLDB%%llvm37/include/lldb/Interpreter/Args.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandCompletions.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandHistory.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandInterpreter.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandObject.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandObjectMultiword.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandObjectRegexCommand.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandOptionValidators.h
-%%LLDB%%llvm37/include/lldb/Interpreter/CommandReturnObject.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupArchitecture.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupBoolean.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupFile.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupFormat.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupOutputFile.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupPlatform.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupString.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupUInt64.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupUUID.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupVariable.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionGroupWatchpoint.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValue.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueArch.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueArgs.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueArray.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueBoolean.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueChar.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueDictionary.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueEnumeration.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueFileSpec.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueFileSpecList.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueFormat.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueFormatEntity.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueLanguage.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValuePathMappings.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueProperties.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueRegex.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueSInt64.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueString.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueUInt64.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValueUUID.h
-%%LLDB%%llvm37/include/lldb/Interpreter/OptionValues.h
-%%LLDB%%llvm37/include/lldb/Interpreter/Options.h
-%%LLDB%%llvm37/include/lldb/Interpreter/Property.h
-%%LLDB%%llvm37/include/lldb/Interpreter/PythonDataObjects.h
-%%LLDB%%llvm37/include/lldb/Interpreter/ScriptInterpreter.h
-%%LLDB%%llvm37/include/lldb/Interpreter/ScriptInterpreterNone.h
-%%LLDB%%llvm37/include/lldb/Interpreter/ScriptInterpreterPython.h
-%%LLDB%%llvm37/include/lldb/Symbol/Block.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangASTContext.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangASTImporter.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangASTType.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangExternalASTSourceCommon.h
-%%LLDB%%llvm37/include/lldb/Symbol/ClangNamespaceDecl.h
-%%LLDB%%llvm37/include/lldb/Symbol/CompactUnwindInfo.h
-%%LLDB%%llvm37/include/lldb/Symbol/CompileUnit.h
-%%LLDB%%llvm37/include/lldb/Symbol/DWARFCallFrameInfo.h
-%%LLDB%%llvm37/include/lldb/Symbol/DeclVendor.h
-%%LLDB%%llvm37/include/lldb/Symbol/Declaration.h
-%%LLDB%%llvm37/include/lldb/Symbol/FuncUnwinders.h
-%%LLDB%%llvm37/include/lldb/Symbol/Function.h
-%%LLDB%%llvm37/include/lldb/Symbol/LineEntry.h
-%%LLDB%%llvm37/include/lldb/Symbol/LineTable.h
-%%LLDB%%llvm37/include/lldb/Symbol/ObjectContainer.h
-%%LLDB%%llvm37/include/lldb/Symbol/ObjectFile.h
-%%LLDB%%llvm37/include/lldb/Symbol/Symbol.h
-%%LLDB%%llvm37/include/lldb/Symbol/SymbolContext.h
-%%LLDB%%llvm37/include/lldb/Symbol/SymbolContextScope.h
-%%LLDB%%llvm37/include/lldb/Symbol/SymbolFile.h
-%%LLDB%%llvm37/include/lldb/Symbol/SymbolVendor.h
-%%LLDB%%llvm37/include/lldb/Symbol/Symtab.h
-%%LLDB%%llvm37/include/lldb/Symbol/TaggedASTType.h
-%%LLDB%%llvm37/include/lldb/Symbol/Type.h
-%%LLDB%%llvm37/include/lldb/Symbol/TypeList.h
-%%LLDB%%llvm37/include/lldb/Symbol/UnwindPlan.h
-%%LLDB%%llvm37/include/lldb/Symbol/UnwindTable.h
-%%LLDB%%llvm37/include/lldb/Symbol/Variable.h
-%%LLDB%%llvm37/include/lldb/Symbol/VariableList.h
-%%LLDB%%llvm37/include/lldb/Symbol/VerifyDecl.h
-%%LLDB%%llvm37/include/lldb/Target/ABI.h
-%%LLDB%%llvm37/include/lldb/Target/CPPLanguageRuntime.h
-%%LLDB%%llvm37/include/lldb/Target/DynamicLoader.h
-%%LLDB%%llvm37/include/lldb/Target/ExecutionContext.h
-%%LLDB%%llvm37/include/lldb/Target/ExecutionContextScope.h
-%%LLDB%%llvm37/include/lldb/Target/FileAction.h
-%%LLDB%%llvm37/include/lldb/Target/InstrumentationRuntime.h
-%%LLDB%%llvm37/include/lldb/Target/InstrumentationRuntimeStopInfo.h
-%%LLDB%%llvm37/include/lldb/Target/JITLoader.h
-%%LLDB%%llvm37/include/lldb/Target/JITLoaderList.h
-%%LLDB%%llvm37/include/lldb/Target/LanguageRuntime.h
-%%LLDB%%llvm37/include/lldb/Target/Memory.h
-%%LLDB%%llvm37/include/lldb/Target/MemoryHistory.h
-%%LLDB%%llvm37/include/lldb/Target/MemoryRegionInfo.h
-%%LLDB%%llvm37/include/lldb/Target/ObjCLanguageRuntime.h
-%%LLDB%%llvm37/include/lldb/Target/OperatingSystem.h
-%%LLDB%%llvm37/include/lldb/Target/PathMappingList.h
-%%LLDB%%llvm37/include/lldb/Target/Platform.h
-%%LLDB%%llvm37/include/lldb/Target/Process.h
-%%LLDB%%llvm37/include/lldb/Target/ProcessInfo.h
-%%LLDB%%llvm37/include/lldb/Target/ProcessLaunchInfo.h
-%%LLDB%%llvm37/include/lldb/Target/Queue.h
-%%LLDB%%llvm37/include/lldb/Target/QueueItem.h
-%%LLDB%%llvm37/include/lldb/Target/QueueList.h
-%%LLDB%%llvm37/include/lldb/Target/RegisterCheckpoint.h
-%%LLDB%%llvm37/include/lldb/Target/RegisterContext.h
-%%LLDB%%llvm37/include/lldb/Target/SectionLoadHistory.h
-%%LLDB%%llvm37/include/lldb/Target/SectionLoadList.h
-%%LLDB%%llvm37/include/lldb/Target/StackFrame.h
-%%LLDB%%llvm37/include/lldb/Target/StackFrameList.h
-%%LLDB%%llvm37/include/lldb/Target/StackID.h
-%%LLDB%%llvm37/include/lldb/Target/StopInfo.h
-%%LLDB%%llvm37/include/lldb/Target/SystemRuntime.h
-%%LLDB%%llvm37/include/lldb/Target/Target.h
-%%LLDB%%llvm37/include/lldb/Target/TargetList.h
-%%LLDB%%llvm37/include/lldb/Target/Thread.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadCollection.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadList.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlan.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanBase.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanCallFunction.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanCallFunctionUsingABI.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanCallUserExpression.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanPython.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanRunToAddress.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanShouldStopHere.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepInRange.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepInstruction.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepOut.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepOverBreakpoint.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepOverRange.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepRange.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepThrough.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanStepUntil.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadPlanTracer.h
-%%LLDB%%llvm37/include/lldb/Target/ThreadSpec.h
-%%LLDB%%llvm37/include/lldb/Target/UnixSignals.h
-%%LLDB%%llvm37/include/lldb/Target/Unwind.h
-%%LLDB%%llvm37/include/lldb/Target/UnwindAssembly.h
-%%LLDB%%llvm37/include/lldb/Utility/AnsiTerminal.h
-%%LLDB%%llvm37/include/lldb/Utility/CleanUp.h
-%%LLDB%%llvm37/include/lldb/Utility/ConvertEnum.h
-%%LLDB%%llvm37/include/lldb/Utility/Iterable.h
-%%LLDB%%llvm37/include/lldb/Utility/JSON.h
-%%LLDB%%llvm37/include/lldb/Utility/LLDBAssert.h
-%%LLDB%%llvm37/include/lldb/Utility/NameMatches.h
-%%LLDB%%llvm37/include/lldb/Utility/PriorityPointerPair.h
-%%LLDB%%llvm37/include/lldb/Utility/ProcessStructReader.h
-%%LLDB%%llvm37/include/lldb/Utility/PseudoTerminal.h
-%%LLDB%%llvm37/include/lldb/Utility/PythonPointer.h
-%%LLDB%%llvm37/include/lldb/Utility/Range.h
-%%LLDB%%llvm37/include/lldb/Utility/RegisterNumber.h
-%%LLDB%%llvm37/include/lldb/Utility/SafeMachO.h
-%%LLDB%%llvm37/include/lldb/Utility/SharedCluster.h
-%%LLDB%%llvm37/include/lldb/Utility/SharingPtr.h
-%%LLDB%%llvm37/include/lldb/Utility/StringExtractor.h
-%%LLDB%%llvm37/include/lldb/Utility/StringLexer.h
-%%LLDB%%llvm37/include/lldb/Utility/Utils.h
-%%LLDB%%llvm37/include/lldb/lldb-defines.h
-%%LLDB%%llvm37/include/lldb/lldb-enumerations.h
-%%LLDB%%llvm37/include/lldb/lldb-forward.h
-%%LLDB%%llvm37/include/lldb/lldb-private-enumerations.h
-%%LLDB%%llvm37/include/lldb/lldb-private-forward.h
-%%LLDB%%llvm37/include/lldb/lldb-private-interfaces.h
-%%LLDB%%llvm37/include/lldb/lldb-private-types.h
-%%LLDB%%llvm37/include/lldb/lldb-private.h
-%%LLDB%%llvm37/include/lldb/lldb-public.h
-%%LLDB%%llvm37/include/lldb/lldb-python.h
-%%LLDB%%llvm37/include/lldb/lldb-types.h
-%%LLDB%%llvm37/include/lldb/lldb-versioning.h
-llvm37/include/llvm-c/Analysis.h
-llvm37/include/llvm-c/BitReader.h
-llvm37/include/llvm-c/BitWriter.h
-llvm37/include/llvm-c/Core.h
-llvm37/include/llvm-c/Disassembler.h
-llvm37/include/llvm-c/ExecutionEngine.h
-llvm37/include/llvm-c/IRReader.h
-llvm37/include/llvm-c/Initialization.h
-llvm37/include/llvm-c/LinkTimeOptimizer.h
-llvm37/include/llvm-c/Linker.h
-llvm37/include/llvm-c/Object.h
-llvm37/include/llvm-c/Support.h
-llvm37/include/llvm-c/Target.h
-llvm37/include/llvm-c/TargetMachine.h
-llvm37/include/llvm-c/Transforms/IPO.h
-llvm37/include/llvm-c/Transforms/PassManagerBuilder.h
-llvm37/include/llvm-c/Transforms/Scalar.h
-llvm37/include/llvm-c/Transforms/Vectorize.h
-llvm37/include/llvm-c/lto.h
-llvm37/include/llvm/ADT/APFloat.h
-llvm37/include/llvm/ADT/APInt.h
-llvm37/include/llvm/ADT/APSInt.h
-llvm37/include/llvm/ADT/ArrayRef.h
-llvm37/include/llvm/ADT/BitVector.h
-llvm37/include/llvm/ADT/DAGDeltaAlgorithm.h
-llvm37/include/llvm/ADT/DeltaAlgorithm.h
-llvm37/include/llvm/ADT/DenseMap.h
-llvm37/include/llvm/ADT/DenseMapInfo.h
-llvm37/include/llvm/ADT/DenseSet.h
-llvm37/include/llvm/ADT/DepthFirstIterator.h
-llvm37/include/llvm/ADT/EpochTracker.h
-llvm37/include/llvm/ADT/EquivalenceClasses.h
-llvm37/include/llvm/ADT/FoldingSet.h
-llvm37/include/llvm/ADT/GraphTraits.h
-llvm37/include/llvm/ADT/Hashing.h
-llvm37/include/llvm/ADT/ImmutableList.h
-llvm37/include/llvm/ADT/ImmutableMap.h
-llvm37/include/llvm/ADT/ImmutableSet.h
-llvm37/include/llvm/ADT/IndexedMap.h
-llvm37/include/llvm/ADT/IntEqClasses.h
-llvm37/include/llvm/ADT/IntervalMap.h
-llvm37/include/llvm/ADT/IntrusiveRefCntPtr.h
-llvm37/include/llvm/ADT/MapVector.h
-llvm37/include/llvm/ADT/None.h
-llvm37/include/llvm/ADT/Optional.h
-llvm37/include/llvm/ADT/PackedVector.h
-llvm37/include/llvm/ADT/PointerIntPair.h
-llvm37/include/llvm/ADT/PointerUnion.h
-llvm37/include/llvm/ADT/PostOrderIterator.h
-llvm37/include/llvm/ADT/PriorityQueue.h
-llvm37/include/llvm/ADT/SCCIterator.h
-llvm37/include/llvm/ADT/STLExtras.h
-llvm37/include/llvm/ADT/ScopedHashTable.h
-llvm37/include/llvm/ADT/SetOperations.h
-llvm37/include/llvm/ADT/SetVector.h
-llvm37/include/llvm/ADT/SmallBitVector.h
-llvm37/include/llvm/ADT/SmallPtrSet.h
-llvm37/include/llvm/ADT/SmallSet.h
-llvm37/include/llvm/ADT/SmallString.h
-llvm37/include/llvm/ADT/SmallVector.h
-llvm37/include/llvm/ADT/SparseBitVector.h
-llvm37/include/llvm/ADT/SparseMultiSet.h
-llvm37/include/llvm/ADT/SparseSet.h
-llvm37/include/llvm/ADT/Statistic.h
-llvm37/include/llvm/ADT/StringExtras.h
-llvm37/include/llvm/ADT/StringMap.h
-llvm37/include/llvm/ADT/StringRef.h
-llvm37/include/llvm/ADT/StringSet.h
-llvm37/include/llvm/ADT/StringSwitch.h
-llvm37/include/llvm/ADT/TinyPtrVector.h
-llvm37/include/llvm/ADT/Triple.h
-llvm37/include/llvm/ADT/Twine.h
-llvm37/include/llvm/ADT/UniqueVector.h
-llvm37/include/llvm/ADT/VariadicFunction.h
-llvm37/include/llvm/ADT/edit_distance.h
-llvm37/include/llvm/ADT/ilist.h
-llvm37/include/llvm/ADT/ilist_node.h
-llvm37/include/llvm/ADT/iterator.h
-llvm37/include/llvm/ADT/iterator_range.h
-llvm37/include/llvm/Analysis/AliasAnalysis.h
-llvm37/include/llvm/Analysis/AliasSetTracker.h
-llvm37/include/llvm/Analysis/AssumptionCache.h
-llvm37/include/llvm/Analysis/BlockFrequencyInfo.h
-llvm37/include/llvm/Analysis/BlockFrequencyInfoImpl.h
-llvm37/include/llvm/Analysis/BranchProbabilityInfo.h
-llvm37/include/llvm/Analysis/CFG.h
-llvm37/include/llvm/Analysis/CFGPrinter.h
-llvm37/include/llvm/Analysis/CGSCCPassManager.h
-llvm37/include/llvm/Analysis/CallGraph.h
-llvm37/include/llvm/Analysis/CallGraphSCCPass.h
-llvm37/include/llvm/Analysis/CallPrinter.h
-llvm37/include/llvm/Analysis/CaptureTracking.h
-llvm37/include/llvm/Analysis/CodeMetrics.h
-llvm37/include/llvm/Analysis/ConstantFolding.h
-llvm37/include/llvm/Analysis/DOTGraphTraitsPass.h
-llvm37/include/llvm/Analysis/DependenceAnalysis.h
-llvm37/include/llvm/Analysis/DomPrinter.h
-llvm37/include/llvm/Analysis/DominanceFrontier.h
-llvm37/include/llvm/Analysis/DominanceFrontierImpl.h
-llvm37/include/llvm/Analysis/IVUsers.h
-llvm37/include/llvm/Analysis/InlineCost.h
-llvm37/include/llvm/Analysis/InstructionSimplify.h
-llvm37/include/llvm/Analysis/Interval.h
-llvm37/include/llvm/Analysis/IntervalIterator.h
-llvm37/include/llvm/Analysis/IntervalPartition.h
-llvm37/include/llvm/Analysis/IteratedDominanceFrontier.h
-llvm37/include/llvm/Analysis/LazyCallGraph.h
-llvm37/include/llvm/Analysis/LazyValueInfo.h
-llvm37/include/llvm/Analysis/LibCallAliasAnalysis.h
-llvm37/include/llvm/Analysis/LibCallSemantics.h
-llvm37/include/llvm/Analysis/Lint.h
-llvm37/include/llvm/Analysis/Loads.h
-llvm37/include/llvm/Analysis/LoopAccessAnalysis.h
-llvm37/include/llvm/Analysis/LoopInfo.h
-llvm37/include/llvm/Analysis/LoopInfoImpl.h
-llvm37/include/llvm/Analysis/LoopIterator.h
-llvm37/include/llvm/Analysis/LoopPass.h
-llvm37/include/llvm/Analysis/MemoryBuiltins.h
-llvm37/include/llvm/Analysis/MemoryDependenceAnalysis.h
-llvm37/include/llvm/Analysis/MemoryLocation.h
-llvm37/include/llvm/Analysis/PHITransAddr.h
-llvm37/include/llvm/Analysis/Passes.h
-llvm37/include/llvm/Analysis/PostDominators.h
-llvm37/include/llvm/Analysis/PtrUseVisitor.h
-llvm37/include/llvm/Analysis/RegionInfo.h
-llvm37/include/llvm/Analysis/RegionInfoImpl.h
-llvm37/include/llvm/Analysis/RegionIterator.h
-llvm37/include/llvm/Analysis/RegionPass.h
-llvm37/include/llvm/Analysis/RegionPrinter.h
-llvm37/include/llvm/Analysis/ScalarEvolution.h
-llvm37/include/llvm/Analysis/ScalarEvolutionExpander.h
-llvm37/include/llvm/Analysis/ScalarEvolutionExpressions.h
-llvm37/include/llvm/Analysis/ScalarEvolutionNormalization.h
-llvm37/include/llvm/Analysis/SparsePropagation.h
-llvm37/include/llvm/Analysis/TargetFolder.h
-llvm37/include/llvm/Analysis/TargetLibraryInfo.def
-llvm37/include/llvm/Analysis/TargetLibraryInfo.h
-llvm37/include/llvm/Analysis/TargetTransformInfo.h
-llvm37/include/llvm/Analysis/TargetTransformInfoImpl.h
-llvm37/include/llvm/Analysis/Trace.h
-llvm37/include/llvm/Analysis/ValueTracking.h
-llvm37/include/llvm/Analysis/VectorUtils.h
-llvm37/include/llvm/AsmParser/Parser.h
-llvm37/include/llvm/AsmParser/SlotMapping.h
-llvm37/include/llvm/Bitcode/BitCodes.h
-llvm37/include/llvm/Bitcode/BitcodeWriterPass.h
-llvm37/include/llvm/Bitcode/BitstreamReader.h
-llvm37/include/llvm/Bitcode/BitstreamWriter.h
-llvm37/include/llvm/Bitcode/LLVMBitCodes.h
-llvm37/include/llvm/Bitcode/ReaderWriter.h
-llvm37/include/llvm/CodeGen/Analysis.h
-llvm37/include/llvm/CodeGen/AsmPrinter.h
-llvm37/include/llvm/CodeGen/BasicTTIImpl.h
-llvm37/include/llvm/CodeGen/CalcSpillWeights.h
-llvm37/include/llvm/CodeGen/CallingConvLower.h
-llvm37/include/llvm/CodeGen/CommandFlags.h
-llvm37/include/llvm/CodeGen/DAGCombine.h
-llvm37/include/llvm/CodeGen/DFAPacketizer.h
-llvm37/include/llvm/CodeGen/DIE.h
-llvm37/include/llvm/CodeGen/DIEValue.def
-llvm37/include/llvm/CodeGen/DwarfStringPoolEntry.h
-llvm37/include/llvm/CodeGen/EdgeBundles.h
-llvm37/include/llvm/CodeGen/FastISel.h
-llvm37/include/llvm/CodeGen/FaultMaps.h
-llvm37/include/llvm/CodeGen/FunctionLoweringInfo.h
-llvm37/include/llvm/CodeGen/GCMetadata.h
-llvm37/include/llvm/CodeGen/GCMetadataPrinter.h
-llvm37/include/llvm/CodeGen/GCStrategy.h
-llvm37/include/llvm/CodeGen/GCs.h
-llvm37/include/llvm/CodeGen/ISDOpcodes.h
-llvm37/include/llvm/CodeGen/IntrinsicLowering.h
-llvm37/include/llvm/CodeGen/LatencyPriorityQueue.h
-llvm37/include/llvm/CodeGen/LexicalScopes.h
-llvm37/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
-llvm37/include/llvm/CodeGen/LinkAllCodegenComponents.h
-llvm37/include/llvm/CodeGen/LiveInterval.h
-llvm37/include/llvm/CodeGen/LiveIntervalAnalysis.h
-llvm37/include/llvm/CodeGen/LiveIntervalUnion.h
-llvm37/include/llvm/CodeGen/LivePhysRegs.h
-llvm37/include/llvm/CodeGen/LiveRangeEdit.h
-llvm37/include/llvm/CodeGen/LiveRegMatrix.h
-llvm37/include/llvm/CodeGen/LiveStackAnalysis.h
-llvm37/include/llvm/CodeGen/LiveVariables.h
-llvm37/include/llvm/CodeGen/MIRParser/MIRParser.h
-llvm37/include/llvm/CodeGen/MIRYamlMapping.h
-llvm37/include/llvm/CodeGen/MachORelocation.h
-llvm37/include/llvm/CodeGen/MachineBasicBlock.h
-llvm37/include/llvm/CodeGen/MachineBlockFrequencyInfo.h
-llvm37/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
-llvm37/include/llvm/CodeGen/MachineCombinerPattern.h
-llvm37/include/llvm/CodeGen/MachineConstantPool.h
-llvm37/include/llvm/CodeGen/MachineDominanceFrontier.h
-llvm37/include/llvm/CodeGen/MachineDominators.h
-llvm37/include/llvm/CodeGen/MachineFrameInfo.h
-llvm37/include/llvm/CodeGen/MachineFunction.h
-llvm37/include/llvm/CodeGen/MachineFunctionAnalysis.h
-llvm37/include/llvm/CodeGen/MachineFunctionInitializer.h
-llvm37/include/llvm/CodeGen/MachineFunctionPass.h
-llvm37/include/llvm/CodeGen/MachineInstr.h
-llvm37/include/llvm/CodeGen/MachineInstrBuilder.h
-llvm37/include/llvm/CodeGen/MachineInstrBundle.h
-llvm37/include/llvm/CodeGen/MachineJumpTableInfo.h
-llvm37/include/llvm/CodeGen/MachineLoopInfo.h
-llvm37/include/llvm/CodeGen/MachineMemOperand.h
-llvm37/include/llvm/CodeGen/MachineModuleInfo.h
-llvm37/include/llvm/CodeGen/MachineModuleInfoImpls.h
-llvm37/include/llvm/CodeGen/MachineOperand.h
-llvm37/include/llvm/CodeGen/MachinePassRegistry.h
-llvm37/include/llvm/CodeGen/MachinePostDominators.h
-llvm37/include/llvm/CodeGen/MachineRegionInfo.h
-llvm37/include/llvm/CodeGen/MachineRegisterInfo.h
-llvm37/include/llvm/CodeGen/MachineSSAUpdater.h
-llvm37/include/llvm/CodeGen/MachineScheduler.h
-llvm37/include/llvm/CodeGen/MachineTraceMetrics.h
-llvm37/include/llvm/CodeGen/MachineValueType.h
-llvm37/include/llvm/CodeGen/PBQP/CostAllocator.h
-llvm37/include/llvm/CodeGen/PBQP/Graph.h
-llvm37/include/llvm/CodeGen/PBQP/Math.h
-llvm37/include/llvm/CodeGen/PBQP/ReductionRules.h
-llvm37/include/llvm/CodeGen/PBQP/Solution.h
-llvm37/include/llvm/CodeGen/PBQPRAConstraint.h
-llvm37/include/llvm/CodeGen/Passes.h
-llvm37/include/llvm/CodeGen/PseudoSourceValue.h
-llvm37/include/llvm/CodeGen/RegAllocPBQP.h
-llvm37/include/llvm/CodeGen/RegAllocRegistry.h
-llvm37/include/llvm/CodeGen/RegisterClassInfo.h
-llvm37/include/llvm/CodeGen/RegisterPressure.h
-llvm37/include/llvm/CodeGen/RegisterScavenging.h
-llvm37/include/llvm/CodeGen/ResourcePriorityQueue.h
-llvm37/include/llvm/CodeGen/RuntimeLibcalls.h
-llvm37/include/llvm/CodeGen/ScheduleDAG.h
-llvm37/include/llvm/CodeGen/ScheduleDAGInstrs.h
-llvm37/include/llvm/CodeGen/ScheduleDFS.h
-llvm37/include/llvm/CodeGen/ScheduleHazardRecognizer.h
-llvm37/include/llvm/CodeGen/SchedulerRegistry.h
-llvm37/include/llvm/CodeGen/ScoreboardHazardRecognizer.h
-llvm37/include/llvm/CodeGen/SelectionDAG.h
-llvm37/include/llvm/CodeGen/SelectionDAGISel.h
-llvm37/include/llvm/CodeGen/SelectionDAGNodes.h
-llvm37/include/llvm/CodeGen/SlotIndexes.h
-llvm37/include/llvm/CodeGen/StackMaps.h
-llvm37/include/llvm/CodeGen/StackProtector.h
-llvm37/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
-llvm37/include/llvm/CodeGen/TargetSchedule.h
-llvm37/include/llvm/CodeGen/ValueTypes.h
-llvm37/include/llvm/CodeGen/ValueTypes.td
-llvm37/include/llvm/CodeGen/VirtRegMap.h
-llvm37/include/llvm/CodeGen/WinEHFuncInfo.h
-llvm37/include/llvm/Config/AsmParsers.def
-llvm37/include/llvm/Config/AsmPrinters.def
-llvm37/include/llvm/Config/Disassemblers.def
-llvm37/include/llvm/Config/Targets.def
-llvm37/include/llvm/Config/llvm-config.h
-llvm37/include/llvm/DebugInfo/DIContext.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFContext.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFSection.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
-llvm37/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-llvm37/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIASession.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h
-llvm37/include/llvm/DebugInfo/PDB/DIA/DIASupport.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBDataStream.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBLineNumber.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBSession.h
-llvm37/include/llvm/DebugInfo/PDB/IPDBSourceFile.h
-llvm37/include/llvm/DebugInfo/PDB/PDB.h
-llvm37/include/llvm/DebugInfo/PDB/PDBContext.h
-llvm37/include/llvm/DebugInfo/PDB/PDBExtras.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymDumper.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbol.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolData.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolExe.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
-llvm37/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
-llvm37/include/llvm/DebugInfo/PDB/PDBTypes.h
-llvm37/include/llvm/ExecutionEngine/ExecutionEngine.h
-llvm37/include/llvm/ExecutionEngine/GenericValue.h
-llvm37/include/llvm/ExecutionEngine/Interpreter.h
-llvm37/include/llvm/ExecutionEngine/JITEventListener.h
-llvm37/include/llvm/ExecutionEngine/JITSymbolFlags.h
-llvm37/include/llvm/ExecutionEngine/MCJIT.h
-llvm37/include/llvm/ExecutionEngine/OProfileWrapper.h
-llvm37/include/llvm/ExecutionEngine/ObjectCache.h
-llvm37/include/llvm/ExecutionEngine/ObjectMemoryBuffer.h
-llvm37/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/CompileUtils.h
-llvm37/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
-llvm37/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
-llvm37/include/llvm/ExecutionEngine/Orc/JITSymbol.h
-llvm37/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
-llvm37/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/LogicalDylib.h
-llvm37/include/llvm/ExecutionEngine/Orc/NullResolver.h
-llvm37/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
-llvm37/include/llvm/ExecutionEngine/Orc/OrcTargetSupport.h
-llvm37/include/llvm/ExecutionEngine/OrcMCJITReplacement.h
-llvm37/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
-llvm37/include/llvm/ExecutionEngine/RuntimeDyld.h
-llvm37/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
-llvm37/include/llvm/ExecutionEngine/SectionMemoryManager.h
-llvm37/include/llvm/IR/Argument.h
-llvm37/include/llvm/IR/AssemblyAnnotationWriter.h
-llvm37/include/llvm/IR/Attributes.h
-llvm37/include/llvm/IR/AutoUpgrade.h
-llvm37/include/llvm/IR/BasicBlock.h
-llvm37/include/llvm/IR/CFG.h
-llvm37/include/llvm/IR/CallSite.h
-llvm37/include/llvm/IR/CallingConv.h
-llvm37/include/llvm/IR/Comdat.h
-llvm37/include/llvm/IR/Constant.h
-llvm37/include/llvm/IR/ConstantFolder.h
-llvm37/include/llvm/IR/ConstantRange.h
-llvm37/include/llvm/IR/Constants.h
-llvm37/include/llvm/IR/DIBuilder.h
-llvm37/include/llvm/IR/DataLayout.h
-llvm37/include/llvm/IR/DebugInfo.h
-llvm37/include/llvm/IR/DebugInfoFlags.def
-llvm37/include/llvm/IR/DebugInfoMetadata.h
-llvm37/include/llvm/IR/DebugLoc.h
-llvm37/include/llvm/IR/DerivedTypes.h
-llvm37/include/llvm/IR/DiagnosticInfo.h
-llvm37/include/llvm/IR/DiagnosticPrinter.h
-llvm37/include/llvm/IR/Dominators.h
-llvm37/include/llvm/IR/Function.h
-llvm37/include/llvm/IR/GVMaterializer.h
-llvm37/include/llvm/IR/GetElementPtrTypeIterator.h
-llvm37/include/llvm/IR/GlobalAlias.h
-llvm37/include/llvm/IR/GlobalObject.h
-llvm37/include/llvm/IR/GlobalValue.h
-llvm37/include/llvm/IR/GlobalVariable.h
-llvm37/include/llvm/IR/IRBuilder.h
-llvm37/include/llvm/IR/IRPrintingPasses.h
-llvm37/include/llvm/IR/InlineAsm.h
-llvm37/include/llvm/IR/InstIterator.h
-llvm37/include/llvm/IR/InstVisitor.h
-llvm37/include/llvm/IR/InstrTypes.h
-llvm37/include/llvm/IR/Instruction.def
-llvm37/include/llvm/IR/Instruction.h
-llvm37/include/llvm/IR/Instructions.h
-llvm37/include/llvm/IR/IntrinsicInst.h
-llvm37/include/llvm/IR/Intrinsics.gen
-llvm37/include/llvm/IR/Intrinsics.h
-llvm37/include/llvm/IR/Intrinsics.td
-llvm37/include/llvm/IR/IntrinsicsAArch64.td
-llvm37/include/llvm/IR/IntrinsicsAMDGPU.td
-llvm37/include/llvm/IR/IntrinsicsARM.td
-llvm37/include/llvm/IR/IntrinsicsBPF.td
-llvm37/include/llvm/IR/IntrinsicsHexagon.td
-llvm37/include/llvm/IR/IntrinsicsMips.td
-llvm37/include/llvm/IR/IntrinsicsNVVM.td
-llvm37/include/llvm/IR/IntrinsicsPowerPC.td
-llvm37/include/llvm/IR/IntrinsicsSystemZ.td
-llvm37/include/llvm/IR/IntrinsicsWebAssembly.td
-llvm37/include/llvm/IR/IntrinsicsX86.td
-llvm37/include/llvm/IR/IntrinsicsXCore.td
-llvm37/include/llvm/IR/LLVMContext.h
-llvm37/include/llvm/IR/LegacyPassManager.h
-llvm37/include/llvm/IR/LegacyPassManagers.h
-llvm37/include/llvm/IR/LegacyPassNameParser.h
-llvm37/include/llvm/IR/MDBuilder.h
-llvm37/include/llvm/IR/Mangler.h
-llvm37/include/llvm/IR/Metadata.def
-llvm37/include/llvm/IR/Metadata.h
-llvm37/include/llvm/IR/MetadataTracking.h
-llvm37/include/llvm/IR/Module.h
-llvm37/include/llvm/IR/ModuleSlotTracker.h
-llvm37/include/llvm/IR/NoFolder.h
-llvm37/include/llvm/IR/OperandTraits.h
-llvm37/include/llvm/IR/Operator.h
-llvm37/include/llvm/IR/PassManager.h
-llvm37/include/llvm/IR/PassManagerInternal.h
-llvm37/include/llvm/IR/PatternMatch.h
-llvm37/include/llvm/IR/PredIteratorCache.h
-llvm37/include/llvm/IR/Statepoint.h
-llvm37/include/llvm/IR/SymbolTableListTraits.h
-llvm37/include/llvm/IR/TrackingMDRef.h
-llvm37/include/llvm/IR/Type.h
-llvm37/include/llvm/IR/TypeBuilder.h
-llvm37/include/llvm/IR/TypeFinder.h
-llvm37/include/llvm/IR/Use.h
-llvm37/include/llvm/IR/UseListOrder.h
-llvm37/include/llvm/IR/User.h
-llvm37/include/llvm/IR/Value.def
-llvm37/include/llvm/IR/Value.h
-llvm37/include/llvm/IR/ValueHandle.h
-llvm37/include/llvm/IR/ValueMap.h
-llvm37/include/llvm/IR/ValueSymbolTable.h
-llvm37/include/llvm/IR/Verifier.h
-llvm37/include/llvm/IRReader/IRReader.h
-llvm37/include/llvm/InitializePasses.h
-llvm37/include/llvm/LTO/LTOCodeGenerator.h
-llvm37/include/llvm/LTO/LTOModule.h
-llvm37/include/llvm/LibDriver/LibDriver.h
-llvm37/include/llvm/LineEditor/LineEditor.h
-llvm37/include/llvm/LinkAllIR.h
-llvm37/include/llvm/LinkAllPasses.h
-llvm37/include/llvm/Linker/Linker.h
-llvm37/include/llvm/MC/ConstantPools.h
-llvm37/include/llvm/MC/MCAsmBackend.h
-llvm37/include/llvm/MC/MCAsmInfo.h
-llvm37/include/llvm/MC/MCAsmInfoCOFF.h
-llvm37/include/llvm/MC/MCAsmInfoDarwin.h
-llvm37/include/llvm/MC/MCAsmInfoELF.h
-llvm37/include/llvm/MC/MCAsmLayout.h
-llvm37/include/llvm/MC/MCAssembler.h
-llvm37/include/llvm/MC/MCCodeEmitter.h
-llvm37/include/llvm/MC/MCCodeGenInfo.h
-llvm37/include/llvm/MC/MCContext.h
-llvm37/include/llvm/MC/MCDirectives.h
-llvm37/include/llvm/MC/MCDisassembler.h
-llvm37/include/llvm/MC/MCDwarf.h
-llvm37/include/llvm/MC/MCELFObjectWriter.h
-llvm37/include/llvm/MC/MCELFStreamer.h
-llvm37/include/llvm/MC/MCExpr.h
-llvm37/include/llvm/MC/MCExternalSymbolizer.h
-llvm37/include/llvm/MC/MCFixedLenDisassembler.h
-llvm37/include/llvm/MC/MCFixup.h
-llvm37/include/llvm/MC/MCFixupKindInfo.h
-llvm37/include/llvm/MC/MCInst.h
-llvm37/include/llvm/MC/MCInstBuilder.h
-llvm37/include/llvm/MC/MCInstPrinter.h
-llvm37/include/llvm/MC/MCInstrAnalysis.h
-llvm37/include/llvm/MC/MCInstrDesc.h
-llvm37/include/llvm/MC/MCInstrInfo.h
-llvm37/include/llvm/MC/MCInstrItineraries.h
-llvm37/include/llvm/MC/MCLabel.h
-llvm37/include/llvm/MC/MCLinkerOptimizationHint.h
-llvm37/include/llvm/MC/MCMachObjectWriter.h
-llvm37/include/llvm/MC/MCObjectFileInfo.h
-llvm37/include/llvm/MC/MCObjectStreamer.h
-llvm37/include/llvm/MC/MCObjectWriter.h
-llvm37/include/llvm/MC/MCParser/AsmCond.h
-llvm37/include/llvm/MC/MCParser/AsmLexer.h
-llvm37/include/llvm/MC/MCParser/MCAsmLexer.h
-llvm37/include/llvm/MC/MCParser/MCAsmParser.h
-llvm37/include/llvm/MC/MCParser/MCAsmParserExtension.h
-llvm37/include/llvm/MC/MCParser/MCAsmParserUtils.h
-llvm37/include/llvm/MC/MCParser/MCParsedAsmOperand.h
-llvm37/include/llvm/MC/MCRegisterInfo.h
-llvm37/include/llvm/MC/MCRelocationInfo.h
-llvm37/include/llvm/MC/MCSchedule.h
-llvm37/include/llvm/MC/MCSection.h
-llvm37/include/llvm/MC/MCSectionCOFF.h
-llvm37/include/llvm/MC/MCSectionELF.h
-llvm37/include/llvm/MC/MCSectionMachO.h
-llvm37/include/llvm/MC/MCStreamer.h
-llvm37/include/llvm/MC/MCSubtargetInfo.h
-llvm37/include/llvm/MC/MCSymbol.h
-llvm37/include/llvm/MC/MCSymbolCOFF.h
-llvm37/include/llvm/MC/MCSymbolELF.h
-llvm37/include/llvm/MC/MCSymbolMachO.h
-llvm37/include/llvm/MC/MCSymbolizer.h
-llvm37/include/llvm/MC/MCTargetAsmParser.h
-llvm37/include/llvm/MC/MCTargetOptions.h
-llvm37/include/llvm/MC/MCTargetOptionsCommandFlags.h
-llvm37/include/llvm/MC/MCValue.h
-llvm37/include/llvm/MC/MCWin64EH.h
-llvm37/include/llvm/MC/MCWinCOFFObjectWriter.h
-llvm37/include/llvm/MC/MCWinCOFFStreamer.h
-llvm37/include/llvm/MC/MCWinEH.h
-llvm37/include/llvm/MC/MachineLocation.h
-llvm37/include/llvm/MC/SectionKind.h
-llvm37/include/llvm/MC/StringTableBuilder.h
-llvm37/include/llvm/MC/SubtargetFeature.h
-llvm37/include/llvm/MC/YAML.h
-llvm37/include/llvm/Object/Archive.h
-llvm37/include/llvm/Object/ArchiveWriter.h
-llvm37/include/llvm/Object/Binary.h
-llvm37/include/llvm/Object/COFF.h
-llvm37/include/llvm/Object/COFFYAML.h
-llvm37/include/llvm/Object/ELF.h
-llvm37/include/llvm/Object/ELFObjectFile.h
-llvm37/include/llvm/Object/ELFTypes.h
-llvm37/include/llvm/Object/ELFYAML.h
-llvm37/include/llvm/Object/Error.h
-llvm37/include/llvm/Object/IRObjectFile.h
-llvm37/include/llvm/Object/MachO.h
-llvm37/include/llvm/Object/MachOUniversal.h
-llvm37/include/llvm/Object/ObjectFile.h
-llvm37/include/llvm/Object/RelocVisitor.h
-llvm37/include/llvm/Object/StackMapParser.h
-llvm37/include/llvm/Object/SymbolSize.h
-llvm37/include/llvm/Object/SymbolicFile.h
-llvm37/include/llvm/Option/Arg.h
-llvm37/include/llvm/Option/ArgList.h
-llvm37/include/llvm/Option/OptParser.td
-llvm37/include/llvm/Option/OptSpecifier.h
-llvm37/include/llvm/Option/OptTable.h
-llvm37/include/llvm/Option/Option.h
-llvm37/include/llvm/Pass.h
-llvm37/include/llvm/PassAnalysisSupport.h
-llvm37/include/llvm/PassInfo.h
-llvm37/include/llvm/PassRegistry.h
-llvm37/include/llvm/PassSupport.h
-llvm37/include/llvm/Passes/PassBuilder.h
-llvm37/include/llvm/ProfileData/CoverageMapping.h
-llvm37/include/llvm/ProfileData/CoverageMappingReader.h
-llvm37/include/llvm/ProfileData/CoverageMappingWriter.h
-llvm37/include/llvm/ProfileData/InstrProf.h
-llvm37/include/llvm/ProfileData/InstrProfReader.h
-llvm37/include/llvm/ProfileData/InstrProfWriter.h
-llvm37/include/llvm/ProfileData/SampleProf.h
-llvm37/include/llvm/ProfileData/SampleProfReader.h
-llvm37/include/llvm/ProfileData/SampleProfWriter.h
-llvm37/include/llvm/Support/AIXDataTypesFix.h
-llvm37/include/llvm/Support/ARMBuildAttributes.h
-llvm37/include/llvm/Support/ARMEHABI.h
-llvm37/include/llvm/Support/ARMWinEH.h
-llvm37/include/llvm/Support/AlignOf.h
-llvm37/include/llvm/Support/Allocator.h
-llvm37/include/llvm/Support/ArrayRecycler.h
-llvm37/include/llvm/Support/Atomic.h
-llvm37/include/llvm/Support/BlockFrequency.h
-llvm37/include/llvm/Support/BranchProbability.h
-llvm37/include/llvm/Support/CBindingWrapping.h
-llvm37/include/llvm/Support/COFF.h
-llvm37/include/llvm/Support/COM.h
-llvm37/include/llvm/Support/Capacity.h
-llvm37/include/llvm/Support/Casting.h
-llvm37/include/llvm/Support/CodeGen.h
-llvm37/include/llvm/Support/CommandLine.h
-llvm37/include/llvm/Support/Compiler.h
-llvm37/include/llvm/Support/Compression.h
-llvm37/include/llvm/Support/ConvertUTF.h
-llvm37/include/llvm/Support/CrashRecoveryContext.h
-llvm37/include/llvm/Support/DOTGraphTraits.h
-llvm37/include/llvm/Support/DataExtractor.h
-llvm37/include/llvm/Support/DataStream.h
-llvm37/include/llvm/Support/DataTypes.h
-llvm37/include/llvm/Support/Debug.h
-llvm37/include/llvm/Support/Dwarf.def
-llvm37/include/llvm/Support/Dwarf.h
-llvm37/include/llvm/Support/DynamicLibrary.h
-llvm37/include/llvm/Support/ELF.h
-llvm37/include/llvm/Support/ELFRelocs/AArch64.def
-llvm37/include/llvm/Support/ELFRelocs/ARM.def
-llvm37/include/llvm/Support/ELFRelocs/Hexagon.def
-llvm37/include/llvm/Support/ELFRelocs/Mips.def
-llvm37/include/llvm/Support/ELFRelocs/PowerPC.def
-llvm37/include/llvm/Support/ELFRelocs/PowerPC64.def
-llvm37/include/llvm/Support/ELFRelocs/Sparc.def
-llvm37/include/llvm/Support/ELFRelocs/SystemZ.def
-llvm37/include/llvm/Support/ELFRelocs/i386.def
-llvm37/include/llvm/Support/ELFRelocs/x86_64.def
-llvm37/include/llvm/Support/Endian.h
-llvm37/include/llvm/Support/EndianStream.h
-llvm37/include/llvm/Support/Errc.h
-llvm37/include/llvm/Support/Errno.h
-llvm37/include/llvm/Support/ErrorHandling.h
-llvm37/include/llvm/Support/ErrorOr.h
-llvm37/include/llvm/Support/FileOutputBuffer.h
-llvm37/include/llvm/Support/FileSystem.h
-llvm37/include/llvm/Support/FileUtilities.h
-llvm37/include/llvm/Support/Format.h
-llvm37/include/llvm/Support/FormattedStream.h
-llvm37/include/llvm/Support/GCOV.h
-llvm37/include/llvm/Support/GenericDomTree.h
-llvm37/include/llvm/Support/GenericDomTreeConstruction.h
-llvm37/include/llvm/Support/GraphWriter.h
-llvm37/include/llvm/Support/Host.h
-llvm37/include/llvm/Support/LEB128.h
-llvm37/include/llvm/Support/LICENSE.TXT
-llvm37/include/llvm/Support/LineIterator.h
-llvm37/include/llvm/Support/Locale.h
-llvm37/include/llvm/Support/LockFileManager.h
-llvm37/include/llvm/Support/MD5.h
-llvm37/include/llvm/Support/MachO.h
-llvm37/include/llvm/Support/ManagedStatic.h
-llvm37/include/llvm/Support/MathExtras.h
-llvm37/include/llvm/Support/Memory.h
-llvm37/include/llvm/Support/MemoryBuffer.h
-llvm37/include/llvm/Support/MemoryObject.h
-llvm37/include/llvm/Support/MipsABIFlags.h
-llvm37/include/llvm/Support/Mutex.h
-llvm37/include/llvm/Support/MutexGuard.h
-llvm37/include/llvm/Support/OnDiskHashTable.h
-llvm37/include/llvm/Support/Options.h
-llvm37/include/llvm/Support/OutputBuffer.h
-llvm37/include/llvm/Support/Path.h
-llvm37/include/llvm/Support/PluginLoader.h
-llvm37/include/llvm/Support/PointerLikeTypeTraits.h
-llvm37/include/llvm/Support/PrettyStackTrace.h
-llvm37/include/llvm/Support/Process.h
-llvm37/include/llvm/Support/Program.h
-llvm37/include/llvm/Support/RWMutex.h
-llvm37/include/llvm/Support/RandomNumberGenerator.h
-llvm37/include/llvm/Support/Recycler.h
-llvm37/include/llvm/Support/RecyclingAllocator.h
-llvm37/include/llvm/Support/Regex.h
-llvm37/include/llvm/Support/Registry.h
-llvm37/include/llvm/Support/RegistryParser.h
-llvm37/include/llvm/Support/SMLoc.h
-llvm37/include/llvm/Support/SaveAndRestore.h
-llvm37/include/llvm/Support/ScaledNumber.h
-llvm37/include/llvm/Support/Signals.h
-llvm37/include/llvm/Support/Solaris.h
-llvm37/include/llvm/Support/SourceMgr.h
-llvm37/include/llvm/Support/SpecialCaseList.h
-llvm37/include/llvm/Support/StreamingMemoryObject.h
-llvm37/include/llvm/Support/StringPool.h
-llvm37/include/llvm/Support/StringSaver.h
-llvm37/include/llvm/Support/SwapByteOrder.h
-llvm37/include/llvm/Support/SystemUtils.h
-llvm37/include/llvm/Support/TargetParser.h
-llvm37/include/llvm/Support/TargetRegistry.h
-llvm37/include/llvm/Support/TargetSelect.h
-llvm37/include/llvm/Support/ThreadLocal.h
-llvm37/include/llvm/Support/Threading.h
-llvm37/include/llvm/Support/TimeValue.h
-llvm37/include/llvm/Support/Timer.h
-llvm37/include/llvm/Support/ToolOutputFile.h
-llvm37/include/llvm/Support/Unicode.h
-llvm37/include/llvm/Support/UnicodeCharRanges.h
-llvm37/include/llvm/Support/UniqueLock.h
-llvm37/include/llvm/Support/Valgrind.h
-llvm37/include/llvm/Support/Watchdog.h
-llvm37/include/llvm/Support/Win64EH.h
-llvm37/include/llvm/Support/WindowsError.h
-llvm37/include/llvm/Support/YAMLParser.h
-llvm37/include/llvm/Support/YAMLTraits.h
-llvm37/include/llvm/Support/circular_raw_ostream.h
-llvm37/include/llvm/Support/raw_os_ostream.h
-llvm37/include/llvm/Support/raw_ostream.h
-llvm37/include/llvm/Support/type_traits.h
-llvm37/include/llvm/TableGen/Error.h
-llvm37/include/llvm/TableGen/Main.h
-llvm37/include/llvm/TableGen/Record.h
-llvm37/include/llvm/TableGen/SetTheory.h
-llvm37/include/llvm/TableGen/StringMatcher.h
-llvm37/include/llvm/TableGen/StringToOffsetTable.h
-llvm37/include/llvm/TableGen/TableGenBackend.h
-llvm37/include/llvm/Target/CostTable.h
-llvm37/include/llvm/Target/Target.td
-llvm37/include/llvm/Target/TargetCallingConv.h
-llvm37/include/llvm/Target/TargetCallingConv.td
-llvm37/include/llvm/Target/TargetFrameLowering.h
-llvm37/include/llvm/Target/TargetInstrInfo.h
-llvm37/include/llvm/Target/TargetIntrinsicInfo.h
-llvm37/include/llvm/Target/TargetItinerary.td
-llvm37/include/llvm/Target/TargetLowering.h
-llvm37/include/llvm/Target/TargetLoweringObjectFile.h
-llvm37/include/llvm/Target/TargetMachine.h
-llvm37/include/llvm/Target/TargetOpcodes.h
-llvm37/include/llvm/Target/TargetOptions.h
-llvm37/include/llvm/Target/TargetRecip.h
-llvm37/include/llvm/Target/TargetRegisterInfo.h
-llvm37/include/llvm/Target/TargetSchedule.td
-llvm37/include/llvm/Target/TargetSelectionDAG.td
-llvm37/include/llvm/Target/TargetSelectionDAGInfo.h
-llvm37/include/llvm/Target/TargetSubtargetInfo.h
-llvm37/include/llvm/Transforms/IPO.h
-llvm37/include/llvm/Transforms/IPO/InlinerPass.h
-llvm37/include/llvm/Transforms/IPO/LowerBitSets.h
-llvm37/include/llvm/Transforms/IPO/PassManagerBuilder.h
-llvm37/include/llvm/Transforms/InstCombine/InstCombine.h
-llvm37/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
-llvm37/include/llvm/Transforms/Instrumentation.h
-llvm37/include/llvm/Transforms/ObjCARC.h
-llvm37/include/llvm/Transforms/Scalar.h
-llvm37/include/llvm/Transforms/Scalar/EarlyCSE.h
-llvm37/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
-llvm37/include/llvm/Transforms/Scalar/SimplifyCFG.h
-llvm37/include/llvm/Transforms/Utils/ASanStackFrameLayout.h
-llvm37/include/llvm/Transforms/Utils/BasicBlockUtils.h
-llvm37/include/llvm/Transforms/Utils/BuildLibCalls.h
-llvm37/include/llvm/Transforms/Utils/BypassSlowDivision.h
-llvm37/include/llvm/Transforms/Utils/Cloning.h
-llvm37/include/llvm/Transforms/Utils/CmpInstAnalysis.h
-llvm37/include/llvm/Transforms/Utils/CodeExtractor.h
-llvm37/include/llvm/Transforms/Utils/CtorUtils.h
-llvm37/include/llvm/Transforms/Utils/GlobalStatus.h
-llvm37/include/llvm/Transforms/Utils/IntegerDivision.h
-llvm37/include/llvm/Transforms/Utils/Local.h
-llvm37/include/llvm/Transforms/Utils/LoopUtils.h
-llvm37/include/llvm/Transforms/Utils/LoopVersioning.h
-llvm37/include/llvm/Transforms/Utils/ModuleUtils.h
-llvm37/include/llvm/Transforms/Utils/PromoteMemToReg.h
-llvm37/include/llvm/Transforms/Utils/SSAUpdater.h
-llvm37/include/llvm/Transforms/Utils/SSAUpdaterImpl.h
-llvm37/include/llvm/Transforms/Utils/SimplifyIndVar.h
-llvm37/include/llvm/Transforms/Utils/SimplifyLibCalls.h
-llvm37/include/llvm/Transforms/Utils/SymbolRewriter.h
-llvm37/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
-llvm37/include/llvm/Transforms/Utils/UnrollLoop.h
-llvm37/include/llvm/Transforms/Utils/ValueMapper.h
-llvm37/include/llvm/Transforms/Vectorize.h
-llvm37/lib/BugpointPasses.so
-llvm37/lib/LLVMHello.so
-%%GOLD%%llvm37/lib/LLVMgold.so
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/asan_blacklist.txt
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/Intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/__stddef_max_align_t.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/__wmmintrin_aes.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/__wmmintrin_pclmul.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/adxintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/altivec.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/ammintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/arm_acle.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/arm_neon.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx2intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512bwintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512cdintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512dqintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512erintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512fintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512vlbwintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512vldqintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avx512vlintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/avxintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/bmi2intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/bmiintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/cpuid.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/cuda_builtin_vars.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/emmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/f16cintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/float.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/fma4intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/fmaintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/fxsrintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/htmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/htmxlintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/ia32intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/immintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/inttypes.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/iso646.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/lzcntintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/mm3dnow.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/mm_malloc.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/mmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/module.modulemap
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/nmmintrin.h
-%%OPENMP%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/omp.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/pmmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/popcntintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/prfchwintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/rdseedintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/rtmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/s390intrin.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/allocator_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/asan_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/common_interface_defs.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/coverage_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/dfsan_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/linux_syscall_hooks.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/lsan_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/msan_interface.h
-%%COMPILER_RT%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/sanitizer/tsan_interface_atomic.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/shaintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/smmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/tbmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/tgmath.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/tmmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/unwind.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/vadefs.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/vecintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/wmmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/x86intrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/xmmintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/xopintrin.h
-%%CLANG%%llvm37/lib/clang/%%LLVM_RELEASE%%/include/xtestintrin.h
-llvm37/lib/libLLVMAArch64AsmParser.so
-llvm37/lib/libLLVMAArch64AsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64AsmParser.so.3.7
-llvm37/lib/libLLVMAArch64AsmPrinter.so
-llvm37/lib/libLLVMAArch64AsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64AsmPrinter.so.3.7
-llvm37/lib/libLLVMAArch64CodeGen.so
-llvm37/lib/libLLVMAArch64CodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64CodeGen.so.3.7
-llvm37/lib/libLLVMAArch64Desc.so
-llvm37/lib/libLLVMAArch64Desc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64Desc.so.3.7
-llvm37/lib/libLLVMAArch64Disassembler.so
-llvm37/lib/libLLVMAArch64Disassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64Disassembler.so.3.7
-llvm37/lib/libLLVMAArch64Info.so
-llvm37/lib/libLLVMAArch64Info.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64Info.so.3.7
-llvm37/lib/libLLVMAArch64Utils.so
-llvm37/lib/libLLVMAArch64Utils.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAArch64Utils.so.3.7
-llvm37/lib/libLLVMAMDGPUAsmParser.so
-llvm37/lib/libLLVMAMDGPUAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUAsmParser.so.3.7
-llvm37/lib/libLLVMAMDGPUAsmPrinter.so
-llvm37/lib/libLLVMAMDGPUAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUAsmPrinter.so.3.7
-llvm37/lib/libLLVMAMDGPUCodeGen.so
-llvm37/lib/libLLVMAMDGPUCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUCodeGen.so.3.7
-llvm37/lib/libLLVMAMDGPUDesc.so
-llvm37/lib/libLLVMAMDGPUDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUDesc.so.3.7
-llvm37/lib/libLLVMAMDGPUInfo.so
-llvm37/lib/libLLVMAMDGPUInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUInfo.so.3.7
-llvm37/lib/libLLVMAMDGPUUtils.so
-llvm37/lib/libLLVMAMDGPUUtils.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAMDGPUUtils.so.3.7
-llvm37/lib/libLLVMARMAsmParser.so
-llvm37/lib/libLLVMARMAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMAsmParser.so.3.7
-llvm37/lib/libLLVMARMAsmPrinter.so
-llvm37/lib/libLLVMARMAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMAsmPrinter.so.3.7
-llvm37/lib/libLLVMARMCodeGen.so
-llvm37/lib/libLLVMARMCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMCodeGen.so.3.7
-llvm37/lib/libLLVMARMDesc.so
-llvm37/lib/libLLVMARMDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMDesc.so.3.7
-llvm37/lib/libLLVMARMDisassembler.so
-llvm37/lib/libLLVMARMDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMDisassembler.so.3.7
-llvm37/lib/libLLVMARMInfo.so
-llvm37/lib/libLLVMARMInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMARMInfo.so.3.7
-llvm37/lib/libLLVMAnalysis.so
-llvm37/lib/libLLVMAnalysis.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAnalysis.so.3.7
-llvm37/lib/libLLVMAsmParser.so
-llvm37/lib/libLLVMAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAsmParser.so.3.7
-llvm37/lib/libLLVMAsmPrinter.so
-llvm37/lib/libLLVMAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMAsmPrinter.so.3.7
-llvm37/lib/libLLVMBPFAsmPrinter.so
-llvm37/lib/libLLVMBPFAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBPFAsmPrinter.so.3.7
-llvm37/lib/libLLVMBPFCodeGen.so
-llvm37/lib/libLLVMBPFCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBPFCodeGen.so.3.7
-llvm37/lib/libLLVMBPFDesc.so
-llvm37/lib/libLLVMBPFDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBPFDesc.so.3.7
-llvm37/lib/libLLVMBPFInfo.so
-llvm37/lib/libLLVMBPFInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBPFInfo.so.3.7
-llvm37/lib/libLLVMBitReader.so
-llvm37/lib/libLLVMBitReader.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBitReader.so.3.7
-llvm37/lib/libLLVMBitWriter.so
-llvm37/lib/libLLVMBitWriter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMBitWriter.so.3.7
-llvm37/lib/libLLVMCodeGen.so
-llvm37/lib/libLLVMCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMCodeGen.so.3.7
-llvm37/lib/libLLVMCore.so
-llvm37/lib/libLLVMCore.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMCore.so.3.7
-llvm37/lib/libLLVMCppBackendCodeGen.so
-llvm37/lib/libLLVMCppBackendCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMCppBackendCodeGen.so.3.7
-llvm37/lib/libLLVMCppBackendInfo.so
-llvm37/lib/libLLVMCppBackendInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMCppBackendInfo.so.3.7
-llvm37/lib/libLLVMDebugInfoDWARF.so
-llvm37/lib/libLLVMDebugInfoDWARF.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMDebugInfoDWARF.so.3.7
-llvm37/lib/libLLVMDebugInfoPDB.so
-llvm37/lib/libLLVMDebugInfoPDB.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMDebugInfoPDB.so.3.7
-llvm37/lib/libLLVMExecutionEngine.so
-llvm37/lib/libLLVMExecutionEngine.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMExecutionEngine.so.3.7
-llvm37/lib/libLLVMHexagonCodeGen.so
-llvm37/lib/libLLVMHexagonCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMHexagonCodeGen.so.3.7
-llvm37/lib/libLLVMHexagonDesc.so
-llvm37/lib/libLLVMHexagonDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMHexagonDesc.so.3.7
-llvm37/lib/libLLVMHexagonDisassembler.so
-llvm37/lib/libLLVMHexagonDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMHexagonDisassembler.so.3.7
-llvm37/lib/libLLVMHexagonInfo.so
-llvm37/lib/libLLVMHexagonInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMHexagonInfo.so.3.7
-llvm37/lib/libLLVMIRReader.so
-llvm37/lib/libLLVMIRReader.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMIRReader.so.3.7
-llvm37/lib/libLLVMInstCombine.so
-llvm37/lib/libLLVMInstCombine.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMInstCombine.so.3.7
-llvm37/lib/libLLVMInstrumentation.so
-llvm37/lib/libLLVMInstrumentation.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMInstrumentation.so.3.7
-llvm37/lib/libLLVMInterpreter.so
-llvm37/lib/libLLVMInterpreter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMInterpreter.so.3.7
-llvm37/lib/libLLVMLTO.so
-llvm37/lib/libLLVMLTO.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMLTO.so.3.7
-llvm37/lib/libLLVMLibDriver.so
-llvm37/lib/libLLVMLibDriver.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMLibDriver.so.3.7
-llvm37/lib/libLLVMLineEditor.so
-llvm37/lib/libLLVMLineEditor.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMLineEditor.so.3.7
-llvm37/lib/libLLVMLinker.so
-llvm37/lib/libLLVMLinker.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMLinker.so.3.7
-llvm37/lib/libLLVMMC.so
-llvm37/lib/libLLVMMC.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMC.so.3.7
-llvm37/lib/libLLVMMCDisassembler.so
-llvm37/lib/libLLVMMCDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMCDisassembler.so.3.7
-llvm37/lib/libLLVMMCJIT.so
-llvm37/lib/libLLVMMCJIT.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMCJIT.so.3.7
-llvm37/lib/libLLVMMCParser.so
-llvm37/lib/libLLVMMCParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMCParser.so.3.7
-llvm37/lib/libLLVMMIRParser.so
-llvm37/lib/libLLVMMIRParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMIRParser.so.3.7
-llvm37/lib/libLLVMMSP430AsmPrinter.so
-llvm37/lib/libLLVMMSP430AsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMSP430AsmPrinter.so.3.7
-llvm37/lib/libLLVMMSP430CodeGen.so
-llvm37/lib/libLLVMMSP430CodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMSP430CodeGen.so.3.7
-llvm37/lib/libLLVMMSP430Desc.so
-llvm37/lib/libLLVMMSP430Desc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMSP430Desc.so.3.7
-llvm37/lib/libLLVMMSP430Info.so
-llvm37/lib/libLLVMMSP430Info.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMSP430Info.so.3.7
-llvm37/lib/libLLVMMipsAsmParser.so
-llvm37/lib/libLLVMMipsAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsAsmParser.so.3.7
-llvm37/lib/libLLVMMipsAsmPrinter.so
-llvm37/lib/libLLVMMipsAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsAsmPrinter.so.3.7
-llvm37/lib/libLLVMMipsCodeGen.so
-llvm37/lib/libLLVMMipsCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsCodeGen.so.3.7
-llvm37/lib/libLLVMMipsDesc.so
-llvm37/lib/libLLVMMipsDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsDesc.so.3.7
-llvm37/lib/libLLVMMipsDisassembler.so
-llvm37/lib/libLLVMMipsDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsDisassembler.so.3.7
-llvm37/lib/libLLVMMipsInfo.so
-llvm37/lib/libLLVMMipsInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMMipsInfo.so.3.7
-llvm37/lib/libLLVMNVPTXAsmPrinter.so
-llvm37/lib/libLLVMNVPTXAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMNVPTXAsmPrinter.so.3.7
-llvm37/lib/libLLVMNVPTXCodeGen.so
-llvm37/lib/libLLVMNVPTXCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMNVPTXCodeGen.so.3.7
-llvm37/lib/libLLVMNVPTXDesc.so
-llvm37/lib/libLLVMNVPTXDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMNVPTXDesc.so.3.7
-llvm37/lib/libLLVMNVPTXInfo.so
-llvm37/lib/libLLVMNVPTXInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMNVPTXInfo.so.3.7
-llvm37/lib/libLLVMObjCARCOpts.so
-llvm37/lib/libLLVMObjCARCOpts.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMObjCARCOpts.so.3.7
-llvm37/lib/libLLVMObject.so
-llvm37/lib/libLLVMObject.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMObject.so.3.7
-llvm37/lib/libLLVMOption.so
-llvm37/lib/libLLVMOption.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMOption.so.3.7
-llvm37/lib/libLLVMOrcJIT.so
-llvm37/lib/libLLVMOrcJIT.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMOrcJIT.so.3.7
-llvm37/lib/libLLVMPasses.so
-llvm37/lib/libLLVMPasses.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPasses.so.3.7
-llvm37/lib/libLLVMPowerPCAsmParser.so
-llvm37/lib/libLLVMPowerPCAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCAsmParser.so.3.7
-llvm37/lib/libLLVMPowerPCAsmPrinter.so
-llvm37/lib/libLLVMPowerPCAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCAsmPrinter.so.3.7
-llvm37/lib/libLLVMPowerPCCodeGen.so
-llvm37/lib/libLLVMPowerPCCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCCodeGen.so.3.7
-llvm37/lib/libLLVMPowerPCDesc.so
-llvm37/lib/libLLVMPowerPCDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCDesc.so.3.7
-llvm37/lib/libLLVMPowerPCDisassembler.so
-llvm37/lib/libLLVMPowerPCDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCDisassembler.so.3.7
-llvm37/lib/libLLVMPowerPCInfo.so
-llvm37/lib/libLLVMPowerPCInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMPowerPCInfo.so.3.7
-llvm37/lib/libLLVMProfileData.so
-llvm37/lib/libLLVMProfileData.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMProfileData.so.3.7
-llvm37/lib/libLLVMRuntimeDyld.so
-llvm37/lib/libLLVMRuntimeDyld.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMRuntimeDyld.so.3.7
-llvm37/lib/libLLVMScalarOpts.so
-llvm37/lib/libLLVMScalarOpts.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMScalarOpts.so.3.7
-llvm37/lib/libLLVMSelectionDAG.so
-llvm37/lib/libLLVMSelectionDAG.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSelectionDAG.so.3.7
-llvm37/lib/libLLVMSparcAsmParser.so
-llvm37/lib/libLLVMSparcAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcAsmParser.so.3.7
-llvm37/lib/libLLVMSparcAsmPrinter.so
-llvm37/lib/libLLVMSparcAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcAsmPrinter.so.3.7
-llvm37/lib/libLLVMSparcCodeGen.so
-llvm37/lib/libLLVMSparcCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcCodeGen.so.3.7
-llvm37/lib/libLLVMSparcDesc.so
-llvm37/lib/libLLVMSparcDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcDesc.so.3.7
-llvm37/lib/libLLVMSparcDisassembler.so
-llvm37/lib/libLLVMSparcDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcDisassembler.so.3.7
-llvm37/lib/libLLVMSparcInfo.so
-llvm37/lib/libLLVMSparcInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSparcInfo.so.3.7
-llvm37/lib/libLLVMSupport.so
-llvm37/lib/libLLVMSupport.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSupport.so.3.7
-llvm37/lib/libLLVMSystemZAsmParser.so
-llvm37/lib/libLLVMSystemZAsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZAsmParser.so.3.7
-llvm37/lib/libLLVMSystemZAsmPrinter.so
-llvm37/lib/libLLVMSystemZAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZAsmPrinter.so.3.7
-llvm37/lib/libLLVMSystemZCodeGen.so
-llvm37/lib/libLLVMSystemZCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZCodeGen.so.3.7
-llvm37/lib/libLLVMSystemZDesc.so
-llvm37/lib/libLLVMSystemZDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZDesc.so.3.7
-llvm37/lib/libLLVMSystemZDisassembler.so
-llvm37/lib/libLLVMSystemZDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZDisassembler.so.3.7
-llvm37/lib/libLLVMSystemZInfo.so
-llvm37/lib/libLLVMSystemZInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMSystemZInfo.so.3.7
-llvm37/lib/libLLVMTableGen.so
-llvm37/lib/libLLVMTableGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMTableGen.so.3.7
-llvm37/lib/libLLVMTarget.so
-llvm37/lib/libLLVMTarget.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMTarget.so.3.7
-llvm37/lib/libLLVMTransformUtils.so
-llvm37/lib/libLLVMTransformUtils.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMTransformUtils.so.3.7
-llvm37/lib/libLLVMVectorize.so
-llvm37/lib/libLLVMVectorize.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMVectorize.so.3.7
-llvm37/lib/libLLVMX86AsmParser.so
-llvm37/lib/libLLVMX86AsmParser.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86AsmParser.so.3.7
-llvm37/lib/libLLVMX86AsmPrinter.so
-llvm37/lib/libLLVMX86AsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86AsmPrinter.so.3.7
-llvm37/lib/libLLVMX86CodeGen.so
-llvm37/lib/libLLVMX86CodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86CodeGen.so.3.7
-llvm37/lib/libLLVMX86Desc.so
-llvm37/lib/libLLVMX86Desc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86Desc.so.3.7
-llvm37/lib/libLLVMX86Disassembler.so
-llvm37/lib/libLLVMX86Disassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86Disassembler.so.3.7
-llvm37/lib/libLLVMX86Info.so
-llvm37/lib/libLLVMX86Info.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86Info.so.3.7
-llvm37/lib/libLLVMX86Utils.so
-llvm37/lib/libLLVMX86Utils.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMX86Utils.so.3.7
-llvm37/lib/libLLVMXCoreAsmPrinter.so
-llvm37/lib/libLLVMXCoreAsmPrinter.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMXCoreAsmPrinter.so.3.7
-llvm37/lib/libLLVMXCoreCodeGen.so
-llvm37/lib/libLLVMXCoreCodeGen.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMXCoreCodeGen.so.3.7
-llvm37/lib/libLLVMXCoreDesc.so
-llvm37/lib/libLLVMXCoreDesc.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMXCoreDesc.so.3.7
-llvm37/lib/libLLVMXCoreDisassembler.so
-llvm37/lib/libLLVMXCoreDisassembler.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMXCoreDisassembler.so.3.7
-llvm37/lib/libLLVMXCoreInfo.so
-llvm37/lib/libLLVMXCoreInfo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMXCoreInfo.so.3.7
-llvm37/lib/libLLVMipa.so
-llvm37/lib/libLLVMipa.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMipa.so.3.7
-llvm37/lib/libLLVMipo.so
-llvm37/lib/libLLVMipo.so.%%LLVM_RELEASE%%
-llvm37/lib/libLLVMipo.so.3.7
-llvm37/lib/libLTO.so
-llvm37/lib/libLTO.so.%%LLVM_RELEASE%%
-llvm37/lib/libLTO.so.3.7
-%%CLANG%%llvm37/lib/libclang.so
-%%CLANG%%llvm37/lib/libclang.so.3.7
-%%CLANG%%llvm37/lib/libclangARCMigrate.so
-%%CLANG%%llvm37/lib/libclangARCMigrate.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangARCMigrate.so.3.7
-%%CLANG%%llvm37/lib/libclangAST.so
-%%CLANG%%llvm37/lib/libclangAST.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangAST.so.3.7
-%%CLANG%%llvm37/lib/libclangASTMatchers.so
-%%CLANG%%llvm37/lib/libclangASTMatchers.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangASTMatchers.so.3.7
-%%CLANG%%llvm37/lib/libclangAnalysis.so
-%%CLANG%%llvm37/lib/libclangAnalysis.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangAnalysis.so.3.7
-%%EXTRAS%%llvm37/lib/libclangApplyReplacements.so
-%%EXTRAS%%llvm37/lib/libclangApplyReplacements.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangApplyReplacements.so.3.7
-%%CLANG%%llvm37/lib/libclangBasic.so
-%%CLANG%%llvm37/lib/libclangBasic.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangBasic.so.3.7
-%%CLANG%%llvm37/lib/libclangCodeGen.so
-%%CLANG%%llvm37/lib/libclangCodeGen.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangCodeGen.so.3.7
-%%CLANG%%llvm37/lib/libclangDriver.so
-%%CLANG%%llvm37/lib/libclangDriver.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangDriver.so.3.7
-%%CLANG%%llvm37/lib/libclangDynamicASTMatchers.so
-%%CLANG%%llvm37/lib/libclangDynamicASTMatchers.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangDynamicASTMatchers.so.3.7
-%%CLANG%%llvm37/lib/libclangEdit.so
-%%CLANG%%llvm37/lib/libclangEdit.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangEdit.so.3.7
-%%CLANG%%llvm37/lib/libclangFormat.so
-%%CLANG%%llvm37/lib/libclangFormat.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangFormat.so.3.7
-%%CLANG%%llvm37/lib/libclangFrontend.so
-%%CLANG%%llvm37/lib/libclangFrontend.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangFrontend.so.3.7
-%%CLANG%%llvm37/lib/libclangFrontendTool.so
-%%CLANG%%llvm37/lib/libclangFrontendTool.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangFrontendTool.so.3.7
-%%CLANG%%llvm37/lib/libclangIndex.so
-%%CLANG%%llvm37/lib/libclangIndex.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangIndex.so.3.7
-%%CLANG%%llvm37/lib/libclangLex.so
-%%CLANG%%llvm37/lib/libclangLex.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangLex.so.3.7
-%%CLANG%%llvm37/lib/libclangParse.so
-%%CLANG%%llvm37/lib/libclangParse.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangParse.so.3.7
-%%EXTRAS%%llvm37/lib/libclangQuery.so
-%%EXTRAS%%llvm37/lib/libclangQuery.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangQuery.so.3.7
-%%EXTRAS%%llvm37/lib/libclangRename.so
-%%EXTRAS%%llvm37/lib/libclangRename.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangRename.so.3.7
-%%CLANG%%llvm37/lib/libclangRewrite.so
-%%CLANG%%llvm37/lib/libclangRewrite.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangRewrite.so.3.7
-%%CLANG%%llvm37/lib/libclangRewriteFrontend.so
-%%CLANG%%llvm37/lib/libclangRewriteFrontend.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangRewriteFrontend.so.3.7
-%%CLANG%%llvm37/lib/libclangSema.so
-%%CLANG%%llvm37/lib/libclangSema.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangSema.so.3.7
-%%CLANG%%llvm37/lib/libclangSerialization.so
-%%CLANG%%llvm37/lib/libclangSerialization.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangSerialization.so.3.7
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCheckers.so
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCheckers.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCheckers.so.3.7
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCore.so
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCore.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerCore.so.3.7
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerFrontend.so
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerFrontend.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangStaticAnalyzerFrontend.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidy.so
-%%EXTRAS%%llvm37/lib/libclangTidy.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidy.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidyGoogleModule.so
-%%EXTRAS%%llvm37/lib/libclangTidyGoogleModule.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidyGoogleModule.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidyLLVMModule.so
-%%EXTRAS%%llvm37/lib/libclangTidyLLVMModule.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidyLLVMModule.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidyMiscModule.so
-%%EXTRAS%%llvm37/lib/libclangTidyMiscModule.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidyMiscModule.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidyReadabilityModule.so
-%%EXTRAS%%llvm37/lib/libclangTidyReadabilityModule.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidyReadabilityModule.so.3.7
-%%EXTRAS%%llvm37/lib/libclangTidyUtils.so
-%%EXTRAS%%llvm37/lib/libclangTidyUtils.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libclangTidyUtils.so.3.7
-%%CLANG%%llvm37/lib/libclangTooling.so
-%%CLANG%%llvm37/lib/libclangTooling.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangTooling.so.3.7
-%%CLANG%%llvm37/lib/libclangToolingCore.so
-%%CLANG%%llvm37/lib/libclangToolingCore.so.%%LLVM_RELEASE%%
-%%CLANG%%llvm37/lib/libclangToolingCore.so.3.7
-%%OPENMP%%llvm37/lib/libgomp.so
-%%OPENMP%%llvm37/lib/libiomp5.so
-%%LLD%%llvm37/lib/liblldAArch64ELFTarget.so
-%%LLD%%llvm37/lib/liblldAArch64ELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldAArch64ELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldARMELFTarget.so
-%%LLD%%llvm37/lib/liblldARMELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldARMELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldCOFF.so
-%%LLD%%llvm37/lib/liblldCOFF.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldCOFF.so.3.7
-%%LLD%%llvm37/lib/liblldConfig.so
-%%LLD%%llvm37/lib/liblldConfig.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldConfig.so.3.7
-%%LLD%%llvm37/lib/liblldCore.so
-%%LLD%%llvm37/lib/liblldCore.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldCore.so.3.7
-%%LLD%%llvm37/lib/liblldDriver.so
-%%LLD%%llvm37/lib/liblldDriver.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldDriver.so.3.7
-%%LLD%%llvm37/lib/liblldELF.so
-%%LLD%%llvm37/lib/liblldELF.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldELF.so.3.7
-%%LLD%%llvm37/lib/liblldExampleSubTarget.so
-%%LLD%%llvm37/lib/liblldExampleSubTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldExampleSubTarget.so.3.7
-%%LLD%%llvm37/lib/liblldHexagonELFTarget.so
-%%LLD%%llvm37/lib/liblldHexagonELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldHexagonELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldMachO.so
-%%LLD%%llvm37/lib/liblldMachO.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldMachO.so.3.7
-%%LLD%%llvm37/lib/liblldMipsELFTarget.so
-%%LLD%%llvm37/lib/liblldMipsELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldMipsELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldPECOFF.so
-%%LLD%%llvm37/lib/liblldPECOFF.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldPECOFF.so.3.7
-%%LLD%%llvm37/lib/liblldReaderWriter.so
-%%LLD%%llvm37/lib/liblldReaderWriter.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldReaderWriter.so.3.7
-%%LLD%%llvm37/lib/liblldX86ELFTarget.so
-%%LLD%%llvm37/lib/liblldX86ELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldX86ELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldX86_64ELFTarget.so
-%%LLD%%llvm37/lib/liblldX86_64ELFTarget.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldX86_64ELFTarget.so.3.7
-%%LLD%%llvm37/lib/liblldYAML.so
-%%LLD%%llvm37/lib/liblldYAML.so.%%LLVM_RELEASE%%
-%%LLD%%llvm37/lib/liblldYAML.so.3.7
-%%LLDB%%llvm37/lib/liblldb.so
-%%LLDB%%llvm37/lib/liblldb.so.%%LLVM_RELEASE%%
-%%LLDB%%llvm37/lib/liblldb.so.3.7
-%%LLDB%%llvm37/lib/liblldbBase.a
-%%LLDB%%llvm37/lib/liblldbBreakpoint.a
-%%LLDB%%llvm37/lib/liblldbCommands.a
-%%LLDB%%llvm37/lib/liblldbCore.a
-%%LLDB%%llvm37/lib/liblldbDataFormatters.a
-%%LLDB%%llvm37/lib/liblldbExpression.a
-%%LLDB%%llvm37/lib/liblldbHost.a
-%%LLDB%%llvm37/lib/liblldbInitialization.a
-%%LLDB%%llvm37/lib/liblldbInterpreter.a
-%%LLDB%%llvm37/lib/liblldbPluginABIMacOSX_arm.a
-%%LLDB%%llvm37/lib/liblldbPluginABIMacOSX_arm64.a
-%%LLDB%%llvm37/lib/liblldbPluginABIMacOSX_i386.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_arm.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_arm64.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_hexagon.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_i386.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_mips.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_mips64.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_ppc.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_ppc64.a
-%%LLDB%%llvm37/lib/liblldbPluginABISysV_x86_64.a
-%%LLDB%%llvm37/lib/liblldbPluginAppleObjCRuntime.a
-%%LLDB%%llvm37/lib/liblldbPluginCXXItaniumABI.a
-%%LLDB%%llvm37/lib/liblldbPluginDisassemblerLLVM.a
-%%LLDB%%llvm37/lib/liblldbPluginDynamicLoaderHexagonDYLD.a
-%%LLDB%%llvm37/lib/liblldbPluginDynamicLoaderMacOSXDYLD.a
-%%LLDB%%llvm37/lib/liblldbPluginDynamicLoaderPosixDYLD.a
-%%LLDB%%llvm37/lib/liblldbPluginDynamicLoaderStatic.a
-%%LLDB%%llvm37/lib/liblldbPluginDynamicLoaderWindowsDYLD.a
-%%LLDB%%llvm37/lib/liblldbPluginInstructionARM.a
-%%LLDB%%llvm37/lib/liblldbPluginInstructionARM64.a
-%%LLDB%%llvm37/lib/liblldbPluginInstructionMIPS.a
-%%LLDB%%llvm37/lib/liblldbPluginInstructionMIPS64.a
-%%LLDB%%llvm37/lib/liblldbPluginInstrumentationRuntimeAddressSanitizer.a
-%%LLDB%%llvm37/lib/liblldbPluginJITLoaderGDB.a
-%%LLDB%%llvm37/lib/liblldbPluginMemoryHistoryASan.a
-%%LLDB%%llvm37/lib/liblldbPluginOSPython.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectContainerBSDArchive.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectContainerMachOArchive.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectFileELF.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectFileJIT.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectFileMachO.a
-%%LLDB%%llvm37/lib/liblldbPluginObjectFilePECOFF.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformAndroid.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformFreeBSD.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformGDB.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformKalimba.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformLinux.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformMacOSX.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformPOSIX.a
-%%LLDB%%llvm37/lib/liblldbPluginPlatformWindows.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessElfCore.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessFreeBSD.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessGDBRemote.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessMachCore.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessPOSIX.a
-%%LLDB%%llvm37/lib/liblldbPluginProcessUtility.a
-%%LLDB%%llvm37/lib/liblldbPluginRenderScriptRuntime.a
-%%LLDB%%llvm37/lib/liblldbPluginSymbolFileDWARF.a
-%%LLDB%%llvm37/lib/liblldbPluginSymbolFileSymtab.a
-%%LLDB%%llvm37/lib/liblldbPluginSymbolVendorELF.a
-%%LLDB%%llvm37/lib/liblldbPluginSystemRuntimeMacOSX.a
-%%LLDB%%llvm37/lib/liblldbPluginUnwindAssemblyInstEmulation.a
-%%LLDB%%llvm37/lib/liblldbPluginUnwindAssemblyX86.a
-%%LLDB%%llvm37/lib/liblldbSymbol.a
-%%LLDB%%llvm37/lib/liblldbTarget.a
-%%LLDB%%llvm37/lib/liblldbUtility.a
-%%EXTRAS%%llvm37/lib/libmodernizeCore.so
-%%EXTRAS%%llvm37/lib/libmodernizeCore.so.%%LLVM_RELEASE%%
-%%EXTRAS%%llvm37/lib/libmodernizeCore.so.3.7
-%%OPENMP%%llvm37/lib/libomp.so
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/__init__.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/_lldb.so
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/argdumper
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/embedded_interpreter.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/Logger.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/__init__.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/attrib_fromdict.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/cache.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/cpp/__init__.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/cpp/gnu_libstdcpp.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/cpp/libcxx.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/formatters/metrics.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/runtime/__init__.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/utils/__init__.py
-%%LLDB%%llvm37/lib/python2.7/site-packages/lldb/utils/symbolication.py
-%%CLANG%%llvm37/libexec/c++-analyzer
-%%CLANG%%llvm37/libexec/ccc-analyzer
-%%CLANG%%llvm37/share/clang/clang-format-bbedit.applescript
-%%CLANG%%llvm37/share/clang/clang-format-diff.py
-%%CLANG%%llvm37/share/clang/clang-format-sublime.py
-%%CLANG%%llvm37/share/clang/clang-format.el
-%%CLANG%%llvm37/share/clang/clang-format.py
-%%EXTRAS%%llvm37/share/clang/clang-tidy-diff.py
-%%EXTRAS%%llvm37/share/clang/run-clang-tidy.py
-llvm37/share/llvm/cmake/AddLLVM.cmake
-llvm37/share/llvm/cmake/AddLLVMDefinitions.cmake
-llvm37/share/llvm/cmake/AddOCaml.cmake
-llvm37/share/llvm/cmake/AddSphinxTarget.cmake
-llvm37/share/llvm/cmake/ChooseMSVCCRT.cmake
-llvm37/share/llvm/cmake/CrossCompile.cmake
-llvm37/share/llvm/cmake/FindOCaml.cmake
-llvm37/share/llvm/cmake/FindSphinx.cmake
-llvm37/share/llvm/cmake/GetSVN.cmake
-llvm37/share/llvm/cmake/HandleLLVMOptions.cmake
-llvm37/share/llvm/cmake/HandleLLVMStdlib.cmake
-llvm37/share/llvm/cmake/LLVM-Config.cmake
-llvm37/share/llvm/cmake/LLVMConfig.cmake
-llvm37/share/llvm/cmake/LLVMConfigVersion.cmake
-llvm37/share/llvm/cmake/LLVMExports-%%CMAKE_BUILD_TYPE%%.cmake
-llvm37/share/llvm/cmake/LLVMExports.cmake
-llvm37/share/llvm/cmake/LLVMProcessSources.cmake
-llvm37/share/llvm/cmake/TableGen.cmake
-%%CLANG%%llvm37/share/scan-build/scanview.css
-%%CLANG%%llvm37/share/scan-build/sorttable.js
-%%CLANG%%llvm37/share/scan-view/FileRadar.scpt
-%%CLANG%%llvm37/share/scan-view/GetRadarVersion.scpt
-%%CLANG%%llvm37/share/scan-view/Reporter.py
-%%CLANG%%llvm37/share/scan-view/ScanView.py
-%%CLANG%%llvm37/share/scan-view/bugcatcher.ico
-%%CLANG%%llvm37/share/scan-view/startfile.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/LitConfig.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/LitTestCase.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/ProgressBar.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/ShCommands.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/ShUtil.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/Test.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/TestRunner.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/TestingConfig.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/__init__.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/discovery.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/main.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/run.py
-%%LIT%%%%PYTHON_SITELIBDIR%%/lit37/util.py
diff --git a/lang/clang37/Makefile b/lang/clang37/Makefile
deleted file mode 100644
index 788ada95ae1c..000000000000
--- a/lang/clang37/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# Created by: Brooks Davis
-# $FreeBSD$
-
-PORTNAME= clang
-PORTVERSION= 3.7
-PORTREVISION= 3
-CATEGORIES= lang devel
-PKGNAMESUFFIX= ${LLVM_SUFFIX}
-
-MAINTAINER= brooks@FreeBSD.org
-COMMENT= C, Objective-C, and C++ compiler (use devel/llvm${LLVM_SUFFIX})
-
-RUN_DEPENDS+= ${LOCALBASE}/bin/clang${LLVM_SUFFIX}:devel/llvm${LLVM_SUFFIX}
-
-LLVM_SUFFIX= 37
-
-USES= metaport
-
-.include <bsd.port.mk>
diff --git a/lang/clang37/pkg-descr b/lang/clang37/pkg-descr
deleted file mode 100644
index 1df07184406d..000000000000
--- a/lang/clang37/pkg-descr
+++ /dev/null
@@ -1,7 +0,0 @@
-The goal of the Clang project is to create a new C, C++, Objective C and
-Objective C++ front-end for the LLVM compiler.
-
-This is a meta port. The Clang compiler is installed by the
-devel/llvm-devel port.
-
-WWW: http://clang.llvm.org/