diff options
Diffstat (limited to 'llvm-runtimes/compiler-rt-sanitizers')
-rw-r--r-- | llvm-runtimes/compiler-rt-sanitizers/Manifest | 2 | ||||
-rw-r--r-- | llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250311.ebuild | 222 |
2 files changed, 224 insertions, 0 deletions
diff --git a/llvm-runtimes/compiler-rt-sanitizers/Manifest b/llvm-runtimes/compiler-rt-sanitizers/Manifest index 681460e3e668..bb2b2e0ce2af 100644 --- a/llvm-runtimes/compiler-rt-sanitizers/Manifest +++ b/llvm-runtimes/compiler-rt-sanitizers/Manifest @@ -17,6 +17,7 @@ DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf DIST llvm-project-20.1.0.src.tar.xz 147206476 BLAKE2B 8e8bd8aa995a84d17ac7d634098a6b72a47c30f1752029b620f4541a2de4039edf09117286094ae7bc59c4e84374dcffb8e5ee6ef5feaf4ea7ddb58dd04ea803 SHA512 c90fbc43c40e148357912adc40d799a79cce3d3a929136c137421f6342ed7338659e651f1dedfa8e10b94b9f2897e25b2962e17709add02857f89f10615a2397 DIST llvm-project-20.1.0.src.tar.xz.sig 566 BLAKE2B 98979ce89f3fe6e95eef6096066cf855245a585608e7d1fddb5bbb2c73077f3ee28204260e18d7e45e3051daae3639520c39bc3d0dc51524873ac213e2511456 SHA512 68da1c2a13aaa48a67bbb9e716f9f030cf372edc651bca2861453378a6a9172a207ff59e29b175001f042888bf1f9c118fbf938f757e1f4c966943baa7e2696a DIST llvm-project-7e8a06cfa4a2951b8ee77e19e34926e6e535b4d1.tar.gz 228792296 BLAKE2B cd9357bdca9342770820f9fadfbd0b129a83324847f18e2ebac1fed8df4afb101aba2dc19d90264ae1e2d5692e34149ca24ef82a4973e7aeddb157268bb411b6 SHA512 9821a34a559e1db596940d76ce9388360baea43c1a9de814f567bfcf1428a0c6e3ced61b1e07537058454785d9c3aa3f443cbcf742a01fb40dd20b476a906442 +DIST llvm-project-cb7298f66d62a3548fcf3bd230304067ecf30d17.tar.gz 229200711 BLAKE2B 1910569812e7423cf566b0dec67269404ba8db8232ab293bc603a88914f2b756e3088bf2133c0fca612cc58d39691c7b813b3c5839a7ac9a3d177fe6bde766c6 SHA512 07c3f6ce34e7d32c5ebce1d2efb77e6a1dde49f9eedf7191733a20bdcb6ffd0c03f8fc8de85fd00bd9465b209f140639a68a367d2218c028bfa6e06067cc3e14 EBUILD compiler-rt-sanitizers-15.0.7-r1.ebuild 6680 BLAKE2B 2b340c1586fa11a42dc3bf831434b361255ce9ab3109184154596ca687f07f8cebd3cc27aed5b42aa678913df041e137d7424f70b5eb5c1fe4cb5404e37d7b38 SHA512 dc4c7b9b7cd5e9c587b6d16cbaf3c92463a2763a73cbcaa85fe4dbc9bb9d15bce62f7311b619865240fd66245ed4c331025a405d67d53c24b27a38a98e8f8094 EBUILD compiler-rt-sanitizers-16.0.6-r1.ebuild 6667 BLAKE2B d3182bab58c5af35d74d22bb76d465fd9769142b9cbadf7e588672f46b1d2336b5112d0a1da378893a4babc35d4f6cdc0dbc521654f20098ff0096f34f0408d2 SHA512 859dfc9f4c35359e452ac5d66468a5ad721b901b3fc559287fcd5bbf325c9600082a6fdd661b15181bf966034f2e1b2bb2d863ededf43b6cb238fa191d1fd53f EBUILD compiler-rt-sanitizers-17.0.6-r1.ebuild 6499 BLAKE2B f13e81206f639910f3c6cb66ac02a510e195f9588ba40650afb5097f59ba7ca22ffaf8d7a1a706c01622eb266f6417ebfbecca5bb8e093a6071d00c80f385493 SHA512 ef242193c0f2657563fe3deddfe166771da8ea195afd71e598bb2373eb1e2d6d19ce0da1c6dcc5be7ca8118a1213fb311128607aebb8f2edcc6cc407b462ff03 @@ -26,4 +27,5 @@ EBUILD compiler-rt-sanitizers-19.1.7.ebuild 6488 BLAKE2B a16fb17cfeca14301ebe109 EBUILD compiler-rt-sanitizers-20.1.0.ebuild 6502 BLAKE2B 7d31884afd882ea10b605020cdf7f592264e47c97eaf253c69788538c19c7d0018a60f7c8b44c38d6444d1279ca9f76077d4309070982e3100f3f389ada7ca25 SHA512 4904ba28e16eeeb6c0836b1202fcc394ee1670ea81399f29b8689fd80b850fc0a2a34d1d1f065af008f2f0bb7dea634177e4770e468478cea1b34a3ad5876232 EBUILD compiler-rt-sanitizers-21.0.0.9999.ebuild 6406 BLAKE2B 9ea304f58e813fe53da0a9dc478af5c1fda3202e83a6fcd501582f438f0fd1b57a71f97e4f9f7832483bafd05c368fa2a237ae4770eec1e9a9f9873e9c76329c SHA512 a91e59950eb9d923b4b517bfbb83846a75abd4a64b8832ca22aa5347640970f82785c7d4d3ad3465da58ac30cbc3cf8973da814b90f77fc1371bd9fd0ccb7ff9 EBUILD compiler-rt-sanitizers-21.0.0_pre20250301.ebuild 6406 BLAKE2B 9ea304f58e813fe53da0a9dc478af5c1fda3202e83a6fcd501582f438f0fd1b57a71f97e4f9f7832483bafd05c368fa2a237ae4770eec1e9a9f9873e9c76329c SHA512 a91e59950eb9d923b4b517bfbb83846a75abd4a64b8832ca22aa5347640970f82785c7d4d3ad3465da58ac30cbc3cf8973da814b90f77fc1371bd9fd0ccb7ff9 +EBUILD compiler-rt-sanitizers-21.0.0_pre20250311.ebuild 6406 BLAKE2B 9ea304f58e813fe53da0a9dc478af5c1fda3202e83a6fcd501582f438f0fd1b57a71f97e4f9f7832483bafd05c368fa2a237ae4770eec1e9a9f9873e9c76329c SHA512 a91e59950eb9d923b4b517bfbb83846a75abd4a64b8832ca22aa5347640970f82785c7d4d3ad3465da58ac30cbc3cf8973da814b90f77fc1371bd9fd0ccb7ff9 MISC metadata.xml 1657 BLAKE2B 9fd760c7d197b4bf4effd441027b22a0705e70294d1962a8c9b045897e206c5e222bfdb7b0e27e4753c9103f836ac4614f523d34a7621b0bf03770171aafdede SHA512 4800ff405f3599775e6276b0ce36043a702f328b14f1b8cfe940be5115d1787193be5475ad9323a6770e7621d7253db660e5de57797503d878dca67de934702e diff --git a/llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250311.ebuild b/llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250311.ebuild new file mode 100644 index 000000000000..09cf1645bd1a --- /dev/null +++ b/llvm-runtimes/compiler-rt-sanitizers/compiler-rt-sanitizers-21.0.0_pre20250311.ebuild @@ -0,0 +1,222 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..13} ) +inherit check-reqs cmake flag-o-matic llvm.org llvm-utils python-any-r1 + +DESCRIPTION="Compiler runtime libraries for clang (sanitizers & xray)" +HOMEPAGE="https://llvm.org/" + +LICENSE="Apache-2.0-with-LLVM-exceptions || ( UoI-NCSA MIT )" +SLOT="${LLVM_MAJOR}" +IUSE="+abi_x86_32 abi_x86_64 +clang +debug test" +# base targets +IUSE+=" +ctx-profile +libfuzzer +memprof +orc +profile +xray" +# sanitizer targets, keep in sync with config-ix.cmake +# NB: ubsan, scudo deliberately match two entries +SANITIZER_FLAGS=( + asan dfsan lsan msan hwasan tsan ubsan safestack cfi scudo + shadowcallstack gwp-asan nsan rtsan +) +IUSE+=" ${SANITIZER_FLAGS[@]/#/+}" +REQUIRED_USE=" + || ( ${SANITIZER_FLAGS[*]} libfuzzer orc profile xray ) + test? ( + cfi? ( ubsan ) + gwp-asan? ( scudo ) + ) +" +RESTRICT=" + !clang? ( test ) + !test? ( test ) +" + +DEPEND=" + llvm-core/llvm:${LLVM_MAJOR} + virtual/libcrypt[abi_x86_32(-)?,abi_x86_64(-)?] +" +BDEPEND=" + clang? ( + llvm-core/clang:${LLVM_MAJOR} + llvm-runtimes/compiler-rt:${LLVM_MAJOR} + ) + elibc_glibc? ( net-libs/libtirpc ) + test? ( + $(python_gen_any_dep ">=dev-python/lit-15[\${PYTHON_USEDEP}]") + =llvm-core/clang-${LLVM_VERSION}*:${LLVM_MAJOR} + ) + !test? ( + ${PYTHON_DEPS} + ) +" + +LLVM_COMPONENTS=( compiler-rt cmake llvm/cmake ) +LLVM_TEST_COMPONENTS=( + llvm/include/llvm/ProfileData llvm/lib/Testing/Support third-party +) +llvm.org_set_globals + +python_check_deps() { + use test || return 0 + python_has_version ">=dev-python/lit-15[${PYTHON_USEDEP}]" +} + +check_space() { + if use test; then + local CHECKREQS_DISK_BUILD=11G + check-reqs_pkg_pretend + fi +} + +pkg_pretend() { + check_space +} + +pkg_setup() { + check_space + python-any-r1_pkg_setup +} + +src_prepare() { + sed -i -e 's:-Werror::' lib/tsan/go/buildgo.sh || die + + local flag + for flag in "${SANITIZER_FLAGS[@]}"; do + if ! use "${flag}"; then + local cmake_flag=${flag/-/_} + sed -i -e "/COMPILER_RT_HAS_${cmake_flag^^}/s:TRUE:FALSE:" \ + cmake/config-ix.cmake || die + fi + done + + # TODO: fix these tests to be skipped upstream + if use asan && ! use profile; then + rm test/asan/TestCases/asan_and_llvm_coverage_test.cpp || die + fi + if use ubsan && ! use cfi; then + > test/cfi/CMakeLists.txt || die + fi + # hangs, sigh + rm test/tsan/getline_nohang.cpp || die + + llvm.org_src_prepare +} + +src_configure() { + llvm_prepend_path "${LLVM_MAJOR}" + + # LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844 + use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG" + + # pre-set since we need to pass it to cmake + BUILD_DIR=${WORKDIR}/compiler-rt_build + + if use clang; then + local -x CC=${CHOST}-clang + local -x CXX=${CHOST}-clang++ + strip-unsupported-flags + fi + + local flag want_sanitizer=OFF + for flag in "${SANITIZER_FLAGS[@]}"; do + if use "${flag}"; then + want_sanitizer=ON + break + fi + done + + local mycmakeargs=( + -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${LLVM_MAJOR}" + # use a build dir structure consistent with install + # this makes it possible to easily deploy test-friendly clang + -DCOMPILER_RT_OUTPUT_DIR="${BUILD_DIR}/lib/clang/${LLVM_MAJOR}" + + -DCOMPILER_RT_INCLUDE_TESTS=$(usex test) + # builtins & crt installed by llvm-runtimes/compiler-rt + -DCOMPILER_RT_BUILD_BUILTINS=OFF + -DCOMPILER_RT_BUILD_CRT=OFF + -DCOMPILER_RT_BUILD_CTX_PROFILE=$(usex ctx-profile) + -DCOMPILER_RT_BUILD_LIBFUZZER=$(usex libfuzzer) + -DCOMPILER_RT_BUILD_MEMPROF=$(usex memprof) + -DCOMPILER_RT_BUILD_ORC=$(usex orc) + -DCOMPILER_RT_BUILD_PROFILE=$(usex profile) + -DCOMPILER_RT_BUILD_SANITIZERS="${want_sanitizer}" + -DCOMPILER_RT_BUILD_XRAY=$(usex xray) + + -DPython3_EXECUTABLE="${PYTHON}" + ) + + if use amd64; then + mycmakeargs+=( + -DCAN_TARGET_i386=$(usex abi_x86_32) + -DCAN_TARGET_x86_64=$(usex abi_x86_64) + ) + fi + + if use test; then + mycmakeargs+=( + -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" + -DLLVM_LIT_ARGS="$(get_lit_flags)" + + # they are created during src_test() + -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAJOR}/bin/clang" + -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${LLVM_MAJOR}/bin/clang++" + ) + + # same flags are passed for build & tests, so we need to strip + # them down to a subset supported by clang + CC=${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang \ + CXX=${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/bin/clang++ \ + strip-unsupported-flags + fi + + if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then + mycmakeargs+=( + # setting -isysroot is disabled with compiler-rt-prefix-paths.patch + # this allows adding arm64 support using SDK in EPREFIX + -DDARWIN_macosx_CACHED_SYSROOT="${EPREFIX}/MacOSX.sdk" + # Set version based on the SDK in EPREFIX + # This disables i386 for SDK >= 10.15 + # Will error if has_use tsan and SDK < 10.12 + -DDARWIN_macosx_OVERRIDE_SDK_VERSION="$(realpath "${EPREFIX}/MacOSX.sdk" | sed -e 's/.*MacOSX\(.*\)\.sdk/\1/')" + # Use our libtool instead of looking it up with xcrun + -DCMAKE_LIBTOOL="${EPREFIX}/usr/bin/${CHOST}-libtool" + ) + fi + + cmake_src_configure + + if use test; then + local sys_dir=( "${EPREFIX}"/usr/lib/clang/${LLVM_MAJOR}/lib/* ) + [[ -e ${sys_dir} ]] || die "Unable to find ${sys_dir}" + [[ ${#sys_dir[@]} -eq 1 ]] || die "Non-deterministic compiler-rt install: ${sys_dir[*]}" + + # copy clang over since resource_dir is located relatively to binary + # therefore, we can put our new libraries in it + mkdir -p "${BUILD_DIR}"/lib/{llvm/${LLVM_MAJOR}/{bin,$(get_libdir)},clang/${LLVM_MAJOR}/include} || die + cp "${EPREFIX}"/usr/lib/llvm/${LLVM_MAJOR}/bin/clang{,++} \ + "${BUILD_DIR}"/lib/llvm/${LLVM_MAJOR}/bin/ || die + cp "${EPREFIX}"/usr/lib/clang/${LLVM_MAJOR}/include/*.h \ + "${BUILD_DIR}"/lib/clang/${LLVM_MAJOR}/include/ || die + cp "${sys_dir}"/*builtins*.a \ + "${BUILD_DIR}/lib/clang/${LLVM_MAJOR}/lib/${sys_dir##*/}/" || die + # we also need LLVMgold.so for gold-based tests + if [[ -f ${EPREFIX}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/LLVMgold.so ]]; then + ln -s "${EPREFIX}"/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/LLVMgold.so \ + "${BUILD_DIR}"/lib/llvm/${LLVM_MAJOR}/$(get_libdir)/ || die + fi + fi +} + +src_test() { + # respect TMPDIR! + local -x LIT_PRESERVES_TMP=1 + # disable sandbox to have it stop clobbering LD_PRELOAD + local -x SANDBOX_ON=0 + # wipe LD_PRELOAD to make ASAN happy + local -x LD_PRELOAD= + + cmake_build check-all +} |