+++ /dev/null
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python{2_7,3_{6,7}} )
-inherit cmake-utils flag-o-matic llvm llvm.org multiprocessing \
- python-any-r1 toolchain-funcs
-
-DESCRIPTION="Compiler runtime library for clang (built-in part)"
-HOMEPAGE="https://llvm.org/"
-LLVM_COMPONENTS=( compiler-rt )
-llvm.org_set_globals
-
-LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )"
-SLOT="$(ver_cut 1-3)"
-KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux ~ppc-macos ~x64-macos ~x86-macos"
-IUSE="+clang test"
-RESTRICT="!test? ( test ) !clang? ( test )"
-
-CLANG_SLOT=${SLOT%%.*}
-# llvm-6 for new lit options
-DEPEND="
- >=sys-devel/llvm-6"
-BDEPEND="
- clang? ( sys-devel/clang )
- test? (
- $(python_gen_any_dep "dev-python/lit[\${PYTHON_USEDEP}]")
- =sys-devel/clang-${PV%_*}*:${CLANG_SLOT} )
- ${PYTHON_DEPS}"
-
-# least intrusive of all
-CMAKE_BUILD_TYPE=RelWithDebInfo
-
-PATCHES=(
- # Fix building broken crtbegin/crtend
- # https://bugs.gentoo.org/698086
- "${FILESDIR}"/9.0.0/0001-compiler-rt-crt-make-test-case-nontrivial-in-check_c.patch
-)
-
-python_check_deps() {
- has_version "dev-python/lit[${PYTHON_USEDEP}]"
-}
-
-pkg_pretend() {
- if ! use clang && ! tc-is-clang; then
- ewarn "Building using a compiler other than clang may result in broken atomics"
- ewarn "library. Enable USE=clang unless you have a very good reason not to."
- fi
-}
-
-pkg_setup() {
- llvm_pkg_setup
- use test && python-any-r1_pkg_setup
-}
-
-test_compiler() {
- $(tc-getCC) ${CFLAGS} ${LDFLAGS} "${@}" -o /dev/null -x c - \
- <<<'int main() { return 0; }' &>/dev/null
-}
-
-src_configure() {
- # pre-set since we need to pass it to cmake
- BUILD_DIR=${WORKDIR}/${P}_build
-
- local nolib_flags=( -nodefaultlibs -lc )
- if use clang; then
- local -x CC=${CHOST}-clang
- local -x CXX=${CHOST}-clang++
- # ensure we can use clang before installing compiler-rt
- local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
- strip-unsupported-flags
- elif ! test_compiler; then
- if test_compiler "${nolib_flags[@]}"; then
- local -x LDFLAGS="${LDFLAGS} ${nolib_flags[*]}"
- ewarn "${CC} seems to lack runtime, trying with ${nolib_flags[*]}"
- fi
- fi
-
- local mycmakeargs=(
- -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}"
-
- -DCOMPILER_RT_INCLUDE_TESTS=$(usex test)
- -DCOMPILER_RT_BUILD_LIBFUZZER=OFF
- -DCOMPILER_RT_BUILD_PROFILE=OFF
- -DCOMPILER_RT_BUILD_SANITIZERS=OFF
- -DCOMPILER_RT_BUILD_XRAY=OFF
- )
-
- if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then
- mycmakeargs+=(
- # disable use of SDK for the system itself
- -DDARWIN_macosx_CACHED_SYSROOT=/
- )
- fi
-
- if use test; then
- mycmakeargs+=(
- -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit"
- -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
-
- -DCOMPILER_RT_TEST_COMPILER="${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang"
- -DCOMPILER_RT_TEST_CXX_COMPILER="${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++"
- )
- fi
-
- cmake-utils_src_configure
-}
-
-src_test() {
- # respect TMPDIR!
- local -x LIT_PRESERVES_TMP=1
-
- cmake-utils_src_make check-builtins
-}
+++ /dev/null
-From 155a43edb0c161bb5122ad4eeee991b43a0278bc Mon Sep 17 00:00:00 2001
-From: Jian Cai <caij2003@gmail.com>
-Date: Mon, 16 Sep 2019 21:47:47 +0000
-Subject: [PATCH] [compiler-rt][crt] make test case nontrivial in
- check_cxx_section_exists
-
-Summary:
-.init_array gets optimized away when building with -O2 and as a result,
-check_cxx_section_exists failed to pass -DCOMPILER_RT_HAS_INITFINI_ARRAY
-when building crtbegin.o and crtend.o, which causes binaries linked with
-them encounter segmentation fault. See https://crbug.com/855759 for
-details. This change prevents .init_array section to be optimized away
-even with -O2 or higher optimization level.
-
-Subscribers: dberris, mgorny, #sanitizers, llvm-commits
-
-Tags: #sanitizers, #llvm
-
-Differential Revision: https://reviews.llvm.org/D67628
-
-llvm-svn: 372038
----
- lib/crt/CMakeLists.txt | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/crt/CMakeLists.txt b/lib/crt/CMakeLists.txt
-index 34c368f7ca4..90e94b93db4 100644
---- a/lib/crt/CMakeLists.txt
-+++ b/lib/crt/CMakeLists.txt
-@@ -70,7 +70,7 @@ function(check_cxx_section_exists section output)
- endfunction()
-
- check_cxx_section_exists(".init_array" COMPILER_RT_HAS_INITFINI_ARRAY
-- SOURCE "__attribute__((constructor)) void f() {}\nint main() { return 0; }\n")
-+ SOURCE "volatile int x;\n__attribute__((constructor)) void f() {x = 0;}\nint main() { return 0; }\n")
-
- append_list_if(COMPILER_RT_HAS_STD_C11_FLAG -std=c11 CRT_CFLAGS)
- append_list_if(COMPILER_RT_HAS_INITFINI_ARRAY -DCRT_HAS_INITFINI_ARRAY CRT_CFLAGS)
---
-2.23.0
-