Mercurial > vanilla
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}