changeset 1170:ee9a3ed0343b

vanilla: upgrade LLVM toolchain to 9.0.0
author David Demelier <markand@malikania.fr>
date Fri, 11 Oct 2019 08:36:11 +0000
parents 194681a6d42d
children 4beb14cb5714
files dev/clang/clang.sh dev/clang/clang.sha1 dev/clang/patch-musl.patch dev/lld/lld.sh dev/lld/lld.sha1 dev/lldb/lldb.sh dev/lldb/lldb.sha1 dev/llvm/llvm.sh dev/llvm/llvm.sha1 lib/compiler-rt/D28791.diff lib/compiler-rt/compiler-rt.sh lib/compiler-rt/compiler-rt.sha1 lib/libc++/libc++.sh lib/libc++/libc++.sha1 lib/libc++abi/libc++abi.sh lib/libc++abi/libc++abi.sha1 lib/libunwind/libunwind.sh lib/libunwind/libunwind.sha1 lib/openmp/openmp.sh lib/openmp/openmp.sha1
diffstat 20 files changed, 34 insertions(+), 664 deletions(-) [+]
line wrap: on
line diff
--- a/dev/clang/clang.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/clang/clang.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,12 +16,12 @@
 #
 
 PKGNAME=clang
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="C language family frontend for LLVM"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/cfe-$PKGVERSION.src.tar.xz
-             https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/clang-tools-extra-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/cfe-$PKGVERSION.src.tar.xz
+             http://releases.llvm.org/$PKGVERSION/clang-tools-extra-$PKGVERSION.src.tar.xz"
 PKGDEPENDS="cmake:build"
 PKGOPTIONS="COMPILER_RT LIBCXX LLD TOOLS"
 
@@ -60,7 +60,6 @@
 		mv tools/clang-tools-extra-$PKGVERSION.src tools/extra
 	fi
 
-	patch -p0 < ../patch-musl.patch
 	mkdir build && cd build
 	cmake .. -Wno-dev \
 		-DCMAKE_BUILD_TYPE=Release \
--- a/dev/clang/clang.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/clang/clang.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,2 +1,2 @@
-0174e060781fc01e5f97f2ff9b51a03165d7b37a  clang-tools-extra-8.0.1.src.tar.xz
-e1d7f274c4fd623f19255cc52c6d7b39cf8769ee  cfe-8.0.1.src.tar.xz
+ac64403321d8486699d8bea5376b2438663dbb41  clang-tools-extra-9.0.0.src.tar.xz
+6977cf7a802a053c57fa74138d3648b563e71e88  cfe-9.0.0.src.tar.xz
--- a/dev/clang/patch-musl.patch	Thu Oct 10 13:47:08 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
---- lib/Driver/ToolChains/Linux.cpp.orig	2019-08-08 15:11:01.916922289 +0200
-+++ lib/Driver/ToolChains/Linux.cpp	2019-08-08 15:12:53.132925706 +0200
-@@ -659,11 +659,11 @@
-   if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
-     addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include");
- 
--  if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
--    SmallString<128> P(D.ResourceDir);
--    llvm::sys::path::append(P, "include");
--    addSystemInclude(DriverArgs, CC1Args, P);
--  }
-+  SmallString<128> ResourceDirInclude(D.ResourceDir);
-+  llvm::sys::path::append(ResourceDirInclude, "include");
-+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) &&
-+      (!getTriple().isMusl() || DriverArgs.hasArg(options::OPT_nostdlibinc)))
-+    addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
- 
-   if (DriverArgs.hasArg(options::OPT_nostdlibinc))
-     return;
-@@ -861,6 +861,9 @@
-   addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include");
- 
-   addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
-+
-+  if (!DriverArgs.hasArg(options::OPT_nobuiltininc) && getTriple().isMusl())
-+    addSystemInclude(DriverArgs, CC1Args, ResourceDirInclude);
- }
- 
- static std::string DetectLibcxxIncludePath(StringRef base) {
--- a/dev/lld/lld.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/lld/lld.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,11 +16,11 @@
 #
 
 PKGNAME=lld
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="LLVM's linker"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
 PKGDEPENDS="cmake:build"
 
 : ${CC:=clang}
--- a/dev/lld/lld.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/lld/lld.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-67d84c054c8b858d29389aa8ad47a25f632e4a3a  lld-8.0.1.src.tar.xz
+021a8c38cf27d63db37d939c7cdec46ffd627be2  lld-9.0.0.src.tar.xz
--- a/dev/lldb/lldb.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/lldb/lldb.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,11 +16,11 @@
 #
 
 PKGNAME=lldb
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="LLVM debugger"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
 PKGDEPENDS="cmake:build swig:build libffi libxml2"
 PKGOPTIONS="COMPLETION NCURSES PYTHON"
 
--- a/dev/lldb/lldb.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/lldb/lldb.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-ca188f74b4896cd243ed1c3797d27c3371185146  lldb-8.0.0.src.tar.xz
+7ac23c548c805be55713a759c4275d0389f9197e  lldb-9.0.0.src.tar.xz
--- a/dev/llvm/llvm.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/llvm/llvm.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,13 +16,14 @@
 #
 
 PKGNAME=llvm
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="low level virtual machine compiler infrastructure"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
 PKGDEPENDS="ncurses python zlib cmake:build"
 PKGOPTIONS="DOXYGEN FFI LIBCXX LIBEDIT XML LLD NCURSES SPHINX TARGETS ZLIB"
+PKGPRESERVE="lib/libLLVM-9.so lib/libLTO.so.9 lib/libRemarks.so.9"
 
 : ${CHOST:=$(uname -m)-linux-musl}
 : ${CC:=clang}
--- a/dev/llvm/llvm.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/dev/llvm/llvm.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-09964f9eabc364f221a3caefbdaea28557273b4a  llvm-8.0.1.src.tar.xz
+7ef2527ba3da7603a41ce3592a8cd890f8d27ffa  llvm-9.0.0.src.tar.xz
--- a/lib/compiler-rt/D28791.diff	Thu Oct 10 13:47:08 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,593 +0,0 @@
-Index: compiler-rt/CMakeLists.txt
-===================================================================
---- compiler-rt/CMakeLists.txt
-+++ compiler-rt/CMakeLists.txt
-@@ -29,6 +29,8 @@
- 
- option(COMPILER_RT_BUILD_BUILTINS "Build builtins" ON)
- mark_as_advanced(COMPILER_RT_BUILD_BUILTINS)
-+option(COMPILER_RT_BUILD_CRT "Build crtbegin.o/crtend.o" ON)
-+mark_as_advanced(COMPILER_RT_BUILD_CRT)
- option(COMPILER_RT_BUILD_SANITIZERS "Build sanitizers" ON)
- mark_as_advanced(COMPILER_RT_BUILD_SANITIZERS)
- option(COMPILER_RT_BUILD_XRAY "Build xray" ON)
-Index: compiler-rt/cmake/Modules/AddCompilerRT.cmake
-===================================================================
---- compiler-rt/cmake/Modules/AddCompilerRT.cmake
-+++ compiler-rt/cmake/Modules/AddCompilerRT.cmake
-@@ -132,7 +132,7 @@
- # Adds static or shared runtime for a list of architectures and operating
- # systems and puts it in the proper directory in the build and install trees.
- # add_compiler_rt_runtime(<name>
--#                         {STATIC|SHARED}
-+#                         {OBJECT|STATIC|SHARED}
- #                         ARCHS <architectures>
- #                         OS <os list>
- #                         SOURCES <source files>
-@@ -144,8 +144,8 @@
- #                         PARENT_TARGET <convenience parent target>
- #                         ADDITIONAL_HEADERS <header files>)
- function(add_compiler_rt_runtime name type)
--  if(NOT type MATCHES "^(STATIC|SHARED)$")
--    message(FATAL_ERROR "type argument must be STATIC or SHARED")
-+  if(NOT type MATCHES "^(OBJECT|STATIC|SHARED)$")
-+    message(FATAL_ERROR "type argument must be OBJECT, STATIC or SHARED")
-     return()
-   endif()
-   cmake_parse_arguments(LIB
-@@ -204,7 +204,10 @@
-         message(FATAL_ERROR "Architecture ${arch} can't be targeted")
-         return()
-       endif()
--      if(type STREQUAL "STATIC")
-+      if(type STREQUAL "OBJECT")
-+        set(libname "${name}-${arch}")
-+        set(output_name_${libname} ${libname}${COMPILER_RT_OS_SUFFIX})
-+      elseif(type STREQUAL "STATIC")
-         set(libname "${name}-${arch}")
-         set_output_name(output_name_${libname} ${name} ${arch})
-       else()
-@@ -270,12 +273,34 @@
-       set(COMPONENT_OPTION COMPONENT ${libname})
-     endif()
- 
--    add_library(${libname} ${type} ${sources_${libname}})
--    set_target_compile_flags(${libname} ${extra_cflags_${libname}})
--    set_target_link_flags(${libname} ${extra_link_flags_${libname}})
--    set_property(TARGET ${libname} APPEND PROPERTY
--                COMPILE_DEFINITIONS ${LIB_DEFS})
--    set_target_output_directories(${libname} ${output_dir_${libname}})
-+    if(type STREQUAL "OBJECT")
-+      string(TOUPPER ${CMAKE_BUILD_TYPE} config)
-+      get_property(cflags SOURCE ${sources_${libname}} PROPERTY COMPILE_FLAGS)
-+      separate_arguments(cflags)
-+      add_custom_command(
-+          OUTPUT ${output_dir_${libname}}/${libname}.o
-+          COMMAND ${CMAKE_C_COMPILER} ${sources_${libname}} ${cflags} ${extra_cflags_${libname}} -c -o ${output_dir_${libname}}/${libname}.o
-+          DEPENDS ${sources_${libname}}
-+          COMMENT "Building C object ${libname}.o")
-+      add_custom_target(${libname} DEPENDS ${output_dir_${libname}}/${libname}.o)
-+      install(FILES ${output_dir_${libname}}/${libname}.o
-+        DESTINATION ${install_dir_${libname}}
-+        ${COMPONENT_OPTION})
-+    else()
-+      add_library(${libname} ${type} ${sources_${libname}})
-+      set_target_compile_flags(${libname} ${extra_cflags_${libname}})
-+      set_target_link_flags(${libname} ${extra_link_flags_${libname}})
-+      set_property(TARGET ${libname} APPEND PROPERTY
-+                   COMPILE_DEFINITIONS ${LIB_DEFS})
-+      set_target_output_directories(${libname} ${output_dir_${libname}})
-+      install(TARGETS ${libname}
-+        ARCHIVE DESTINATION ${install_dir_${libname}}
-+                ${COMPONENT_OPTION}
-+        LIBRARY DESTINATION ${install_dir_${libname}}
-+                ${COMPONENT_OPTION}
-+        RUNTIME DESTINATION ${install_dir_${libname}}
-+                ${COMPONENT_OPTION})
-+    endif()
-     set_target_properties(${libname} PROPERTIES
-         OUTPUT_NAME ${output_name_${libname}})
-     set_target_properties(${libname} PROPERTIES FOLDER "Compiler-RT Runtime")
-@@ -299,13 +324,6 @@
-         )
-       endif()
-     endif()
--    install(TARGETS ${libname}
--      ARCHIVE DESTINATION ${install_dir_${libname}}
--              ${COMPONENT_OPTION}
--      LIBRARY DESTINATION ${install_dir_${libname}}
--              ${COMPONENT_OPTION}
--      RUNTIME DESTINATION ${install_dir_${libname}}
--              ${COMPONENT_OPTION})
- 
-     # We only want to generate per-library install targets if you aren't using
-     # an IDE because the extra targets get cluttered in IDEs.
-Index: compiler-rt/cmake/config-ix.cmake
-===================================================================
---- compiler-rt/cmake/config-ix.cmake
-+++ compiler-rt/cmake/config-ix.cmake
-@@ -227,6 +227,7 @@
-     ${ARM32} ${ARM64} ${MIPS32} ${MIPS64} ${S390X})
- set(ALL_ASAN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
-     ${MIPS32} ${MIPS64} ${PPC64} ${S390X})
-+set(ALL_CRT_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64})
- set(ALL_DFSAN_SUPPORTED_ARCH ${X86_64} ${MIPS64} ${ARM64})
- set(ALL_FUZZER_SUPPORTED_ARCH ${X86_64} ${ARM64})
- 
-@@ -474,6 +475,7 @@
-     SANITIZER_COMMON_SUPPORTED_ARCH)
- 
- else()
-+  filter_available_targets(CRT_SUPPORTED_ARCH ${ALL_CRT_SUPPORTED_ARCH})
-   # Architectures supported by compiler-rt libraries.
-   filter_available_targets(SANITIZER_COMMON_SUPPORTED_ARCH
-     ${ALL_SANITIZER_COMMON_SUPPORTED_ARCH})
-@@ -563,6 +565,12 @@
- 
- # TODO: Add builtins support.
- 
-+if (CRT_SUPPORTED_ARCH AND OS_NAME MATCHES "Linux")
-+  set(COMPILER_RT_HAS_CRT TRUE)
-+else()
-+  set(COMPILER_RT_HAS_CRT FALSE)
-+endif()
-+
- if (COMPILER_RT_HAS_SANITIZER_COMMON AND DFSAN_SUPPORTED_ARCH AND
-     OS_NAME MATCHES "Linux")
-   set(COMPILER_RT_HAS_DFSAN TRUE)
-Index: compiler-rt/lib/CMakeLists.txt
-===================================================================
---- compiler-rt/lib/CMakeLists.txt
-+++ compiler-rt/lib/CMakeLists.txt
-@@ -17,6 +17,10 @@
-   add_subdirectory(builtins)
- endif()
- 
-+if(COMPILER_RT_BUILD_CRT)
-+  add_subdirectory(crt)
-+endif()
-+
- function(compiler_rt_build_runtime runtime)
-   string(TOUPPER ${runtime} runtime_uppercase)
-   if(COMPILER_RT_HAS_${runtime_uppercase})
-Index: compiler-rt/lib/crt/CMakeLists.txt
-===================================================================
---- /dev/null
-+++ compiler-rt/lib/crt/CMakeLists.txt
-@@ -0,0 +1,102 @@
-+add_compiler_rt_component(crt)
-+
-+function(check_cxx_section_exists section output)
-+  cmake_parse_arguments(ARG "" "" "SOURCE;FLAGS" ${ARGN})
-+  if(NOT ARG_SOURCE)
-+    set(ARG_SOURCE "int main() { return 0; }\n")
-+  endif()
-+
-+  string(RANDOM TARGET_NAME)
-+  set(TARGET_NAME "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/cmTC_${TARGET_NAME}.dir")
-+  file(MAKE_DIRECTORY ${TARGET_NAME})
-+
-+  file(WRITE "${TARGET_NAME}/CheckSectionExists.c" "${ARG_SOURCE}\n")
-+
-+  string(REGEX MATCHALL "<[A-Za-z0-9_]*>" substitutions
-+         ${CMAKE_C_COMPILE_OBJECT})
-+
-+  set(try_compile_flags "${ARG_FLAGS}")
-+  if(CMAKE_C_COMPILER_ID MATCHES Clang AND CMAKE_C_COMPILER_TARGET)
-+    list(APPEND try_compile_flags "-target ${CMAKE_C_COMPILER_TARGET}")
-+  endif()
-+
-+  string(REPLACE ";" " " extra_flags "${try_compile_flags}")
-+
-+  set(test_compile_command "${CMAKE_C_COMPILE_OBJECT}")
-+  foreach(substitution ${substitutions})
-+    if(substitution STREQUAL "<CMAKE_C_COMPILER>")
-+      string(REPLACE "<CMAKE_C_COMPILER>"
-+             "${CMAKE_C_COMPILER}" test_compile_command ${test_compile_command})
-+    elseif(substitution STREQUAL "<OBJECT>")
-+      string(REPLACE "<OBJECT>" "${TARGET_NAME}/CheckSectionExists.o"
-+             test_compile_command ${test_compile_command})
-+    elseif(substitution STREQUAL "<SOURCE>")
-+      string(REPLACE "<SOURCE>" "${TARGET_NAME}/CheckSectionExists.c"
-+             test_compile_command ${test_compile_command})
-+    elseif(substitution STREQUAL "<FLAGS>")
-+      string(REPLACE "<FLAGS>" "${CMAKE_C_FLAGS} ${extra_flags}"
-+             test_compile_command ${test_compile_command})
-+    else()
-+      string(REPLACE "${substitution}" "" test_compile_command
-+             ${test_compile_command})
-+    endif()
-+  endforeach()
-+
-+  string(REPLACE " " ";" test_compile_command "${test_compile_command}")
-+
-+  execute_process(
-+    COMMAND ${test_compile_command}
-+    RESULT_VARIABLE TEST_RESULT
-+    OUTPUT_VARIABLE TEST_OUTPUT
-+    ERROR_VARIABLE TEST_ERROR
-+  )
-+
-+  execute_process(
-+    COMMAND ${CMAKE_OBJDUMP} -h "${TARGET_NAME}/CheckSectionExists.o"
-+    RESULT_VARIABLE CHECK_RESULT
-+    OUTPUT_VARIABLE CHECK_OUTPUT
-+    ERROR_VARIABLE CHECK_ERROR
-+  )
-+  string(FIND "${CHECK_OUTPUT}" "${section}" SECTION_FOUND)
-+
-+  if(NOT SECTION_FOUND EQUAL -1)
-+    set(${output} TRUE PARENT_SCOPE)
-+  else()
-+    set(${output} FALSE PARENT_SCOPE)
-+  endif()
-+
-+  file(REMOVE_RECURSE ${TARGET_NAME})
-+endfunction()
-+
-+check_cxx_section_exists(".init_array" COMPILER_RT_HAS_INITFINI_ARRAY
-+  SOURCE "__attribute__((constructor)) void f() {}\nint main() { return 0; }\n")
-+
-+append_list_if(COMPILER_RT_HAS_INITFINI_ARRAY -DCRT_HAS_INITFINI_ARRAY CRT_CFLAGS)
-+append_list_if(COMPILER_RT_HAS_FPIC_FLAG -fPIC CRT_CFLAGS)
-+
-+foreach(arch ${CRT_SUPPORTED_ARCH})
-+  add_compiler_rt_runtime(clang_rt.crtbegin
-+    OBJECT
-+    ARCHS ${arch}
-+    SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtbegin.c
-+    CFLAGS ${CRT_CFLAGS}
-+    PARENT_TARGET crt)
-+  add_compiler_rt_runtime(clang_rt.crtbegin_shared
-+    OBJECT
-+    ARCHS ${arch}
-+    SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtbegin.c
-+    CFLAGS ${CRT_CFLAGS} -DCRT_SHARED
-+    PARENT_TARGET crt)
-+  add_compiler_rt_runtime(clang_rt.crtend
-+    OBJECT
-+    ARCHS ${arch}
-+    SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtend.c
-+    CFLAGS ${CRT_CFLAGS}
-+    PARENT_TARGET crt)
-+  add_compiler_rt_runtime(clang_rt.crtend_shared
-+    OBJECT
-+    ARCHS ${arch}
-+    SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/crtend.c
-+    CFLAGS ${CRT_CFLAGS} -DCRT_SHARED
-+    PARENT_TARGET crt)
-+endforeach()
-Index: compiler-rt/lib/crt/crtbegin.c
-===================================================================
---- /dev/null
-+++ compiler-rt/lib/crt/crtbegin.c
-@@ -0,0 +1,108 @@
-+/* ===-- crtbegin.c - Start of constructors and destructors ----------------===
-+ *
-+ *      	       The LLVM Compiler Infrastructure
-+ *
-+ * This file is dual licensed under the MIT and the University of Illinois Open
-+ * Source Licenses. See LICENSE.TXT for details.
-+ *
-+ * ===----------------------------------------------------------------------===
-+ */
-+
-+#include <stddef.h>
-+
-+__attribute__((visibility("hidden")))
-+#ifdef CRT_SHARED
-+void *__dso_handle = &__dso_handle;
-+#else
-+void *__dso_handle = (void *)0;
-+#endif
-+
-+static long __EH_FRAME_LIST__[]
-+    __attribute__((section(".eh_frame"), aligned(sizeof(void *)))) = {};
-+
-+extern void __register_frame_info(const void *, void *) __attribute__((weak));
-+extern void *__deregister_frame_info(const void *) __attribute__((weak));
-+
-+#ifndef CRT_HAS_INITFINI_ARRAY
-+typedef void (*fp)(void);
-+
-+static fp __CTOR_LIST__[]
-+    __attribute__((section(".ctors"), aligned(sizeof(fp)), used)) = {(fp)-1};
-+extern fp __CTOR_LIST_END__[];
-+#endif
-+
-+#ifdef CRT_SHARED
-+extern void __cxa_finalize(void *) __attribute__((weak));
-+#endif
-+
-+static void __attribute__((used)) __do_init() {
-+  static _Bool __initialized;
-+  if (__builtin_expect(__initialized, 0))
-+    return;
-+  __initialized = 1;
-+
-+  static struct { void *p[8]; } __object;
-+  if (__register_frame_info)
-+    __register_frame_info(__EH_FRAME_LIST__, &__object);
-+
-+#ifndef CRT_HAS_INITFINI_ARRAY
-+  const size_t n = __CTOR_LIST_END__ - __CTOR_LIST__ - 1;
-+  for (size_t i = n; i >= 1; i--) __CTOR_LIST__[i]();
-+#endif
-+}
-+
-+#ifdef CRT_HAS_INITFINI_ARRAY
-+__attribute__((section(".init_array"),
-+               used)) static void (*__init)(void) = __do_init;
-+#else  // CRT_HAS_INITFINI_ARRAY
-+#if defined(__i386__) || defined(__x86_64__)
-+asm(".pushsection .init,\"ax\",@progbits\n\t"
-+    "call " __USER_LABEL_PREFIX__ "__do_init\n\t"
-+    ".popsection");
-+#elif defined(__arm__)
-+asm(".pushsection .init,\"ax\",%progbits\n\t"
-+    "bl " __USER_LABEL_PREFIX__ "__do_init\n\t"
-+    ".popsection");
-+#endif  // CRT_HAS_INITFINI_ARRAY
-+#endif
-+
-+#ifndef CRT_HAS_INITFINI_ARRAY
-+static fp __DTOR_LIST__[]
-+    __attribute__((section(".dtors"), aligned(sizeof(fp)), used)) = {(fp)-1};
-+extern fp __DTOR_LIST_END__[];
-+#endif
-+
-+static void __attribute__((used)) __do_fini() {
-+  static _Bool __finalized;
-+  if (__builtin_expect(__finalized, 0))
-+    return;
-+  __finalized = 1;
-+
-+#ifdef CRT_SHARED
-+  if (__cxa_finalize)
-+    __cxa_finalize(__dso_handle);
-+#endif
-+
-+#ifndef CRT_HAS_INITFINI_ARRAY
-+  if (__deregister_frame_info)
-+    __deregister_frame_info(__EH_FRAME_LIST__);
-+
-+  const size_t n = __DTOR_LIST_END__ - __DTOR_LIST__ - 1;
-+  for (size_t i = 1; i < n; i++) __DTOR_LIST__[i]();
-+#endif
-+}
-+
-+#ifdef CRT_HAS_INITFINI_ARRAY
-+__attribute__((section(".fini_array"),
-+               used)) static void (*__fini)(void) = __do_fini;
-+#else  // CRT_HAS_INITFINI_ARRAY
-+#if defined(__i386__) || defined(__x86_64__)
-+asm(".pushsection .fini,\"ax\",@progbits\n\t"
-+    "call " __USER_LABEL_PREFIX__ "__do_fini\n\t"
-+    ".popsection");
-+#elif defined(__arm__)
-+asm(".pushsection .fini,\"ax\",%progbits\n\t"
-+    "bl " __USER_LABEL_PREFIX__ "__do_fini\n\t"
-+    ".popsection");
-+#endif
-+#endif  // CRT_HAS_INIT_FINI_ARRAY
-Index: compiler-rt/lib/crt/crtend.c
-===================================================================
---- /dev/null
-+++ compiler-rt/lib/crt/crtend.c
-@@ -0,0 +1,24 @@
-+/* ===-- crtend.c - End of constructors and destructors --------------------===
-+ *
-+ *      	       The LLVM Compiler Infrastructure
-+ *
-+ * This file is dual licensed under the MIT and the University of Illinois Open
-+ * Source Licenses. See LICENSE.TXT for details.
-+ *
-+ * ===----------------------------------------------------------------------===
-+ */
-+
-+#include <stdint.h>
-+
-+// Put 4-byte zero which is the length field in FDE at the end as a terminator.
-+const int32_t __EH_FRAME_LIST_END__[]
-+    __attribute__((section(".eh_frame"), aligned(sizeof(int32_t)),
-+                   visibility("hidden"), used)) = {0};
-+
-+#ifndef CRT_HAS_INITFINI_ARRAY
-+typedef void (*fp)(void);
-+fp __CTOR_LIST_END__[]
-+    __attribute__((section(".ctors"), visibility("hidden"), used)) = {0};
-+fp __DTOR_LIST_END__[]
-+    __attribute__((section(".dtors"), visibility("hidden"), used)) = {0};
-+#endif
-Index: compiler-rt/test/CMakeLists.txt
-===================================================================
---- compiler-rt/test/CMakeLists.txt
-+++ compiler-rt/test/CMakeLists.txt
-@@ -73,6 +73,9 @@
-   if(COMPILER_RT_BUILD_XRAY)
-     compiler_rt_test_runtime(xray)
-   endif()
-+  if(COMPILER_RT_HAS_CRT)
-+    add_subdirectory(crt)
-+  endif()
-   # ShadowCallStack does not yet provide a runtime with compiler-rt, the tests
-   # include their own minimal runtime
-   add_subdirectory(shadowcallstack)
-Index: compiler-rt/test/crt/CMakeLists.txt
-===================================================================
---- /dev/null
-+++ compiler-rt/test/crt/CMakeLists.txt
-@@ -0,0 +1,31 @@
-+set(CRT_LIT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-+
-+set(CRT_TESTSUITES)
-+
-+set(CRT_TEST_DEPS "")
-+
-+if(NOT COMPILER_RT_STANDALONE_BUILD AND COMPILER_RT_BUILD_CRT AND
-+   COMPILER_RT_HAS_CRT)
-+  list(APPEND CRT_TEST_DEPS crt)
-+endif()
-+
-+set(CRT_TEST_ARCH ${CRT_SUPPORTED_ARCH})
-+if (COMPILER_RT_BUILD_CRT AND COMPILER_RT_HAS_CRT)
-+  foreach(arch ${CRT_TEST_ARCH})
-+    set(CRT_TEST_TARGET_ARCH ${arch})
-+    string(TOLOWER "-${arch}-${OS_NAME}" CRT_TEST_CONFIG_SUFFIX)
-+    get_test_cc_for_arch(${arch} CRT_TEST_TARGET_CC CRT_TEST_TARGET_CFLAGS)
-+    string(TOUPPER ${arch} ARCH_UPPER_CASE)
-+    set(CONFIG_NAME ${ARCH_UPPER_CASE}${OS_NAME}Config)
-+
-+    configure_lit_site_cfg(
-+      ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
-+      ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME}/lit.site.cfg)
-+    list(APPEND CRT_TESTSUITES ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
-+  endforeach()
-+endif()
-+
-+add_lit_testsuite(check-crt "Running the CRT tests"
-+  ${CRT_TESTSUITES}
-+  DEPENDS ${CRT_TEST_DEPS})
-+set_target_properties(check-crt PROPERTIES FOLDER "Compiler-RT Misc")
-Index: compiler-rt/test/crt/dso_handle.cpp
-===================================================================
---- /dev/null
-+++ compiler-rt/test/crt/dso_handle.cpp
-@@ -0,0 +1,33 @@
-+// RUN: %clangxx -g -DCRT_SHARED -c %s -fPIC -o %tshared.o
-+// RUN: %clangxx -g -c %s -fPIC -o %t.o
-+// RUN: %clangxx -g -shared -o %t.so -nostdlib %crti %shared_crtbegin %tshared.o %libstdcxx -lc -lm -lgcc_s %shared_crtend %crtn
-+// RUN: %clangxx -g -o %t -nostdlib %crt1 %crti %crtbegin %t.o %libstdcxx -lc -lm %libgcc %t.so %crtend %crtn
-+// RUN: %run %t 2>&1 | FileCheck %s
-+
-+#include <stdio.h>
-+
-+// CHECK: 1
-+// CHECK-NEXT: ~A()
-+
-+#ifdef CRT_SHARED
-+bool G;
-+void C() {
-+  printf("%d\n", G);
-+}
-+
-+struct A {
-+  A() { G = true; }
-+  ~A() {
-+    printf("~A()\n");
-+  }
-+};
-+
-+A a;
-+#else
-+void C();
-+
-+int main() {
-+  C();
-+  return 0;
-+}
-+#endif
-Index: compiler-rt/test/crt/lit.cfg
-===================================================================
---- /dev/null
-+++ compiler-rt/test/crt/lit.cfg
-@@ -0,0 +1,80 @@
-+# -*- Python -*-
-+
-+import os
-+import subprocess
-+
-+# Setup config name.
-+config.name = 'CRT' + config.name_suffix
-+
-+# Setup source root.
-+config.test_source_root = os.path.dirname(__file__)
-+
-+
-+def get_library_path(file):
-+    cmd = subprocess.Popen([config.clang.strip(),
-+                            config.target_cflags.strip(),
-+                            '-print-file-name=%s' % file],
-+                           stdout=subprocess.PIPE,
-+                           env=config.environment)
-+    if not cmd.stdout:
-+      lit_config.fatal("Couldn't find the library path for '%s'" % file)
-+    dir = cmd.stdout.read().strip()
-+    if sys.platform in ['win32'] and execute_external:
-+        # Don't pass dosish path separator to msys bash.exe.
-+        dir = dir.replace('\\', '/')
-+    # Ensure the result is an ascii string, across Python2.5+ - Python3.
-+    return str(dir.decode('ascii'))
-+
-+
-+def get_libgcc_file_name():
-+    cmd = subprocess.Popen([config.clang.strip(),
-+                            config.target_cflags.strip(),
-+                            '-print-libgcc-file-name'],
-+                           stdout=subprocess.PIPE,
-+                           env=config.environment)
-+    if not cmd.stdout:
-+      lit_config.fatal("Couldn't find the library path for '%s'" % file)
-+    dir = cmd.stdout.read().strip()
-+    if sys.platform in ['win32'] and execute_external:
-+        # Don't pass dosish path separator to msys bash.exe.
-+        dir = dir.replace('\\', '/')
-+    # Ensure the result is an ascii string, across Python2.5+ - Python3.
-+    return str(dir.decode('ascii'))
-+
-+
-+def build_invocation(compile_flags):
-+    return ' ' + ' '.join([config.clang] + compile_flags) + ' '
-+
-+
-+# Setup substitutions.
-+config.substitutions.append(
-+    ('%clang ', build_invocation([config.target_cflags])))
-+config.substitutions.append(
-+    ('%clangxx ',
-+     build_invocation(config.cxx_mode_flags + [config.target_cflags])))
-+
-+base_lib = os.path.join(
-+    config.compiler_rt_libdir, "clang_rt.%%s-%s.o" % config.target_arch)
-+config.substitutions.append(('%crtbegin', base_lib % "crtbegin"))
-+config.substitutions.append(('%shared_crtbegin', base_lib % "crtbegin_shared"))
-+config.substitutions.append(('%crtend', base_lib % "crtend"))
-+config.substitutions.append(('%shared_crtend', base_lib % "crtend_shared"))
-+
-+config.substitutions.append(
-+    ('%crt1', get_library_path('crt1.o')))
-+config.substitutions.append(
-+    ('%crti', get_library_path('crti.o')))
-+config.substitutions.append(
-+    ('%crtn', get_library_path('crtn.o')))
-+
-+config.substitutions.append(
-+    ('%libgcc', get_libgcc_file_name()))
-+
-+config.substitutions.append(
-+    ('%libstdcxx', '-l' + config.sanitizer_cxx_lib.lstrip('lib')))
-+
-+# Default test suffixes.
-+config.suffixes = ['.c', '.cc', '.cpp']
-+
-+if config.host_os not in ['Linux']:
-+    config.unsupported = True
-Index: compiler-rt/test/crt/lit.site.cfg.in
-===================================================================
---- /dev/null
-+++ compiler-rt/test/crt/lit.site.cfg.in
-@@ -0,0 +1,14 @@
-+@LIT_SITE_CFG_IN_HEADER@
-+
-+# Tool-specific config options.
-+config.name_suffix = "@CRT_TEST_CONFIG_SUFFIX@"
-+config.crt_lit_source_dir = "@CRT_LIT_SOURCE_DIR@"
-+config.target_cflags = "@CRT_TEST_TARGET_CFLAGS@"
-+config.target_arch = "@CRT_TEST_TARGET_ARCH@"
-+config.sanitizer_cxx_lib = "@SANITIZER_TEST_CXX_LIBNAME@"
-+
-+# Load common config for all compiler-rt lit tests
-+lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured")
-+
-+# Load tool-specific config that would do the real work.
-+lit_config.load_config(config, "@CRT_LIT_SOURCE_DIR@/lit.cfg")
--- a/lib/compiler-rt/compiler-rt.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/compiler-rt/compiler-rt.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,11 +16,11 @@
 #
 
 PKGNAME=compiler-rt
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="compiler-rt runtime libraries"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
 
 : ${CC:=clang}
 : ${CFLAGS:=-O2}
@@ -33,8 +33,6 @@
 	tar xvf $PKGNAME-$PKGVERSION.src.tar.xz
 	cd $PKGNAME-$PKGVERSION.src
 
-	# LLVM 9.0.0: remove this patch and the links created below.
-	patch -p1 < ../D28791.diff
 	mkdir build && cd build
 	cmake .. \
 		-DCMAKE_BUILD_TYPE=Release \
@@ -49,15 +47,6 @@
 		-DCOMPILER_RT_USE_BUILTINS_LIBRARY=On
 	make
 	make install DESTDIR=$DESTDIR
-	# LLVM 9.0.0: remove the following temporary links.
-	ln -sf clang_rt.crtbegin_shared-$(uname -m).o \
-		$DESTDIR/lib/clang/$PKGVERSION/lib/linux/crtbeginS.o
-	ln -sf clang_rt.crtend_shared-$(uname -m).o \
-		$DESTDIR/lib/clang/$PKGVERSION/lib/linux/crtendS.o
-	ln -sf clang_rt.crtbegin-$(uname -m).o \
-		$DESTDIR/lib/clang/$PKGVERSION/lib/linux/crtbeginT.o
-	ln -sf clang_rt.crtend-$(uname -m).o \
-		$DESTDIR/lib/clang/$PKGVERSION/lib/linux/crtend.o
 	cd ..
 
 	cd ..
--- a/lib/compiler-rt/compiler-rt.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/compiler-rt/compiler-rt.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-f6520fb47fae9cc4362a9d50abee22019c27457a  compiler-rt-8.0.1.src.tar.xz
+4e00cb231ff87fd4f970f35b2da86185a612e0e2  compiler-rt-9.0.0.src.tar.xz
--- a/lib/libc++/libc++.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libc++/libc++.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,12 +16,13 @@
 #
 
 PKGNAME=libc++
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="C++ standard library from LLVM"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/libcxx-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/libcxx-$PKGVERSION.src.tar.xz"
 PKGOPTIONS="ABI COMPILER_RT LIBUNWIND "
+PKGPRESERVE="lib/libc++.so.1.0"
 
 : ${CC:=clang}
 : ${CFLAGS:=-O2}
@@ -59,7 +60,6 @@
 		-DCMAKE_INSTALL_PREFIX= \
 		-DLIBCXX_CXX_ABI=$ABI \
 		-DLIBCXX_HAS_MUSL_LIBC=On \
-		-DLIBCXX_HAS_GCC_S_LIB=Off \
 		$with_compiler_rt \
 		$with_libunwind
 	make
--- a/lib/libc++/libc++.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libc++/libc++.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-4aeec12226a98d438d600cd0e0a76975419989a0  libcxx-8.0.1.src.tar.xz
+e27ce439b2aec1f4af302db255359ccbc1cc6f46  libcxx-9.0.0.src.tar.xz
--- a/lib/libc++abi/libc++abi.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libc++abi/libc++abi.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,12 +16,13 @@
 #
 
 PKGNAME=libc++abi
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="low level support for the standard C++ library"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/libcxxabi-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/libcxxabi-$PKGVERSION.src.tar.xz"
 PKGOPTIONS="COMPILER_RT LIBUNWIND"
+PKGPRESERVE="lib/libc++abi.so.1.0"
 
 : ${CC:=clang}
 : ${CFLAGS:=-O2}
--- a/lib/libc++abi/libc++abi.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libc++abi/libc++abi.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-7834b58ad0e7adb5229342a8daa08ef1d29a8b13  libcxxabi-8.0.1.src.tar.xz
+9e6532595d98eca447cb00352848fed7688f722c  libcxxabi-9.0.0.src.tar.xz
--- a/lib/libunwind/libunwind.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libunwind/libunwind.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,11 +16,12 @@
 #
 
 PKGNAME=libunwind
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="MIT CUSTOM"
 PKGSUMMARY="LLVM's unwinder"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGPRESERVE="lib/libunwind.so.1.0"
 
 : ${CC:=clang}
 : ${CFLAGS:=-O2}
--- a/lib/libunwind/libunwind.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/libunwind/libunwind.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-6aebc6eaa54408138143ace8b5745301981883c8  libunwind-8.0.1.src.tar.xz
+ae3cc4616986b8131e8336f40e60f97745cbddfb  libunwind-9.0.0.src.tar.xz
--- a/lib/openmp/openmp.sh	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/openmp/openmp.sh	Fri Oct 11 08:36:11 2019 +0000
@@ -16,11 +16,12 @@
 #
 
 PKGNAME=openmp
-PKGVERSION=8.0.1
+PKGVERSION=9.0.0
 PKGREVISION=1
 PKGLICENSE="CUSTOM"
 PKGSUMMARY="OpenMP implementation from LLVM"
-PKGDOWNLOAD="https://github.com/llvm/llvm-project/releases/download/llvmorg-$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDOWNLOAD="http://releases.llvm.org/$PKGVERSION/$PKGNAME-$PKGVERSION.src.tar.xz"
+PKGDEPENDS="python:build perl:build"
 
 : ${CC:=clang}
 : ${CFLAGS:=-O2}
--- a/lib/openmp/openmp.sha1	Thu Oct 10 13:47:08 2019 +0200
+++ b/lib/openmp/openmp.sha1	Fri Oct 11 08:36:11 2019 +0000
@@ -1,1 +1,1 @@
-64fc83d7ba5be944835961827acad93fd36a9c0c  openmp-8.0.1.src.tar.xz
+53a17a74f23a2b6a24964cc3f6c1dd8a8e7d8eb3  openmp-9.0.0.src.tar.xz