From 73fa10f6ea1f98fa52bb5cddbcb7d793d5fee1cb Mon Sep 17 00:00:00 2001 From: Michał Górny Date: Fri, 19 Apr 2019 21:48:43 +0200 Subject: sys-libs/compiler-rt-sanitizers: Remove 7.0.9999 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- .../compiler-rt-sanitizers-7.0.1.ebuild | 4 +- .../compiler-rt-sanitizers-7.0.9999.ebuild | 177 --------------------- .../compiler-rt-sanitizers-7.1.0.ebuild | 4 +- ...itizer_common-Fix-using-libtirpc-on-Linux.patch | 67 -------- ...0002-test-Support-using-libtirpc-on-Linux.patch | 100 ------------ ...itizer_common-Fix-using-libtirpc-on-Linux.patch | 67 ++++++++ ...0002-test-Support-using-libtirpc-on-Linux.patch | 100 ++++++++++++ 7 files changed, 171 insertions(+), 348 deletions(-) delete mode 100644 sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.9999.ebuild delete mode 100644 sys-libs/compiler-rt-sanitizers/files/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch delete mode 100644 sys-libs/compiler-rt-sanitizers/files/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch create mode 100644 sys-libs/compiler-rt-sanitizers/files/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch create mode 100644 sys-libs/compiler-rt-sanitizers/files/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch (limited to 'sys-libs') diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.1.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.1.ebuild index de149ae7e0a9..4365238f16c2 100644 --- a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.1.ebuild +++ b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.1.ebuild @@ -78,8 +78,8 @@ src_prepare() { cmake-utils_src_prepare # apply the fixes for new glibc / split tirpc - eapply "${FILESDIR}/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch" - eapply "${FILESDIR}/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch" + eapply "${FILESDIR}/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch" + eapply "${FILESDIR}/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch" if use test; then # remove tests that are (still) broken by new glibc diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.9999.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.9999.ebuild deleted file mode 100644 index b15b2a7a43a2..000000000000 --- a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.0.9999.ebuild +++ /dev/null @@ -1,177 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -: ${CMAKE_MAKEFILE_GENERATOR:=ninja} -# (needed due to CMAKE_BUILD_TYPE != Gentoo) -CMAKE_MIN_VERSION=3.7.0-r1 -PYTHON_COMPAT=( python2_7 ) - -inherit check-reqs cmake-utils flag-o-matic git-r3 llvm \ - multiprocessing python-any-r1 - -DESCRIPTION="Compiler runtime libraries for clang (sanitizers & xray)" -HOMEPAGE="https://llvm.org/" -SRC_URI="" -EGIT_REPO_URI="https://git.llvm.org/git/compiler-rt.git - https://github.com/llvm-mirror/compiler-rt.git" -EGIT_BRANCH="release_70" - -LICENSE="|| ( UoI-NCSA MIT )" -# Note: this needs to be updated to match version of clang-9999 -SLOT="7.0.1" -KEYWORDS="" -IUSE="+clang +libfuzzer +profile +sanitize test +xray elibc_glibc" -# FIXME: libfuzzer does not enable all its necessary dependencies -REQUIRED_USE="libfuzzer? ( || ( sanitize xray ) )" -RESTRICT="!test? ( test ) !clang? ( test )" - -CLANG_SLOT=${SLOT%%.*} -# llvm-6 for new lit options -DEPEND=" - >=sys-devel/llvm-6 - clang? ( sys-devel/clang ) - elibc_glibc? ( net-libs/libtirpc ) - test? ( - !=dev-python/lit-5[\${PYTHON_USEDEP}]") - =sys-devel/clang-${PV%_*}*:${CLANG_SLOT} - sys-libs/compiler-rt:${SLOT} ) - ${PYTHON_DEPS}" - -# least intrusive of all -CMAKE_BUILD_TYPE=RelWithDebInfo - -check_space() { - if use test; then - local CHECKREQS_DISK_BUILD=11G - check-reqs_pkg_pretend - fi -} - -pkg_pretend() { - check_space -} - -pkg_setup() { - check_space - llvm_pkg_setup - python-any-r1_pkg_setup -} - -src_unpack() { - if use test; then - # needed for patched gtest - git-r3_fetch "https://git.llvm.org/git/llvm.git - https://github.com/llvm-mirror/llvm.git" - fi - git-r3_fetch - - if use test; then - git-r3_checkout https://llvm.org/git/llvm.git \ - "${WORKDIR}"/llvm '' utils/unittest - fi - git-r3_checkout -} - -src_prepare() { - cmake-utils_src_prepare - - # apply the fixes for new glibc / split tirpc - eapply "${FILESDIR}/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch" - eapply "${FILESDIR}/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch" - - if use test; then - # remove tests that are (still) broken by new glibc - # https://bugs.llvm.org/show_bug.cgi?id=36065 - if use elibc_glibc && has_version '>=sys-libs/glibc-2.25'; then - rm test/lsan/TestCases/Linux/use_tls_dynamic.cc || die - rm test/msan/dtls_test.c || die - fi - fi -} - -src_configure() { - # pre-set since we need to pass it to cmake - BUILD_DIR=${WORKDIR}/${P}_build - - if use clang; then - local -x CC=${CHOST}-clang - local -x CXX=${CHOST}-clang++ - strip-unsupported-flags - fi - - local mycmakeargs=( - -DCOMPILER_RT_INSTALL_PATH="${EPREFIX}/usr/lib/clang/${SLOT}" - # 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/${SLOT}" - - -DCOMPILER_RT_INCLUDE_TESTS=$(usex test) - # built-ins installed by sys-libs/compiler-rt - -DCOMPILER_RT_BUILD_BUILTINS=OFF - -DCOMPILER_RT_BUILD_LIBFUZZER=$(usex libfuzzer) - -DCOMPILER_RT_BUILD_PROFILE=$(usex profile) - -DCOMPILER_RT_BUILD_SANITIZERS=$(usex sanitize) - -DCOMPILER_RT_BUILD_XRAY=$(usex xray) - ) - if use test; then - mycmakeargs+=( - -DLLVM_MAIN_SRC_DIR="${WORKDIR}/llvm" - -DLLVM_EXTERNAL_LIT="${EPREFIX}/usr/bin/lit" - -DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}" - - # they are created during src_test() - -DCOMPILER_RT_TEST_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/bin/clang" - -DCOMPILER_RT_TEST_CXX_COMPILER="${BUILD_DIR}/lib/llvm/${CLANG_SLOT}/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/${CLANG_SLOT}/bin/clang \ - CXX=${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/bin/clang++ \ - strip-unsupported-flags - fi - - if use prefix && [[ "${CHOST}" == *-darwin* ]] ; then - mycmakeargs+=( - # disable use of SDK for the system itself - -DDARWIN_macosx_CACHED_SYSROOT=/ - ) - fi - - cmake-utils_src_configure - - if use test; then - local sys_dir=( "${EPREFIX}"/usr/lib/clang/${SLOT}/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/${CLANG_SLOT}/{bin,$(get_libdir)},clang/${SLOT}/include} || die - cp "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/bin/clang{,++} \ - "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/bin/ || die - cp "${EPREFIX}"/usr/lib/clang/${SLOT}/include/*.h \ - "${BUILD_DIR}"/lib/clang/${SLOT}/include/ || die - cp "${sys_dir}"/*builtins*.a \ - "${BUILD_DIR}/lib/clang/${SLOT}/lib/${sys_dir##*/}/" || die - # we also need LLVMgold.so for gold-based tests - if [[ -f ${EPREFIX}/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so ]]; then - ln -s "${EPREFIX}"/usr/lib/llvm/${CLANG_SLOT}/$(get_libdir)/LLVMgold.so \ - "${BUILD_DIR}"/lib/llvm/${CLANG_SLOT}/$(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-utils_src_make check-all -} diff --git a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.1.0.ebuild b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.1.0.ebuild index 7f5f41923f74..64095484294c 100644 --- a/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.1.0.ebuild +++ b/sys-libs/compiler-rt-sanitizers/compiler-rt-sanitizers-7.1.0.ebuild @@ -78,8 +78,8 @@ src_prepare() { cmake-utils_src_prepare # apply the fixes for new glibc / split tirpc - eapply "${FILESDIR}/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch" - eapply "${FILESDIR}/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch" + eapply "${FILESDIR}/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch" + eapply "${FILESDIR}/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch" if use test; then # remove tests that are (still) broken by new glibc diff --git a/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch b/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch deleted file mode 100644 index ca871c37b994..000000000000 --- a/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch +++ /dev/null @@ -1,67 +0,0 @@ -From e198d21b9a5851dbc061f60911e3b3da910bca0a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Wed, 6 Jun 2018 12:16:38 +0200 -Subject: [PATCH 7/8] [sanitizer_common] Fix using libtirpc on Linux - -Fix using libtirpc on Linux by using pkg-config to detect it, and append -appropriate include directory. The libtirpc headers reference one -another via '#include ', so attempting to include it via -'#include ' just failed and resulted in RPC headers not being -detected at all. - -Additionally, perform the header check without -nodefaultlibs as that -apparently causes it to fail. ---- - lib/sanitizer_common/CMakeLists.txt | 11 ++++++++++- - .../sanitizer_platform_limits_posix.cc | 4 +--- - 2 files changed, 11 insertions(+), 4 deletions(-) - -diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt -index e0226ae49..4071bc0e8 100644 ---- a/lib/sanitizer_common/CMakeLists.txt -+++ b/lib/sanitizer_common/CMakeLists.txt -@@ -151,9 +151,18 @@ include_directories(..) - - set(SANITIZER_COMMON_DEFINITIONS) - -+include(FindPkgConfig) -+pkg_check_modules(TIRPC libtirpc) -+if (TIRPC_FOUND) -+ include_directories(${TIRPC_INCLUDE_DIRS}) -+ set(CMAKE_REQUIRED_INCLUDES ${TIRPC_INCLUDE_DIRS}) -+endif() -+ - include(CheckIncludeFile) -+cmake_push_check_state() -+string(REPLACE "-nodefaultlibs" "" CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) - append_have_file_definition(rpc/xdr.h HAVE_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS) --append_have_file_definition(tirpc/rpc/xdr.h HAVE_TIRPC_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS) -+cmake_pop_check_state() - - set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS}) - append_rtti_flag(OFF SANITIZER_CFLAGS) -diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc -index feb7bad6f..2e736ee26 100644 ---- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc -+++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc -@@ -146,8 +146,6 @@ typedef struct user_fpregs elf_fpregset_t; - #include - #if HAVE_RPC_XDR_H - # include --#elif HAVE_TIRPC_RPC_XDR_H --# include - #endif - #include - #include -@@ -1236,7 +1234,7 @@ CHECK_SIZE_AND_OFFSET(group, gr_passwd); - CHECK_SIZE_AND_OFFSET(group, gr_gid); - CHECK_SIZE_AND_OFFSET(group, gr_mem); - --#if HAVE_RPC_XDR_H || HAVE_TIRPC_RPC_XDR_H -+#if HAVE_RPC_XDR_H - CHECK_TYPE_SIZE(XDR); - CHECK_SIZE_AND_OFFSET(XDR, x_op); - CHECK_SIZE_AND_OFFSET(XDR, x_ops); --- -2.18.0 - diff --git a/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch b/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch deleted file mode 100644 index 880284775e22..000000000000 --- a/sys-libs/compiler-rt-sanitizers/files/7.0.9999/0002-test-Support-using-libtirpc-on-Linux.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 4fc99ef388e2f110759dc774428fd194b65614c8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= -Date: Wed, 6 Jun 2018 12:45:55 +0200 -Subject: [PATCH 8/8] [test] Support using libtirpc on Linux - -Add compiler flags necessary for using libtirpc on Linux (RPC headers -split out of glibc). The flags are obtained via pkg-config. This fixes -test failures due to tests being unable to find includes. ---- - cmake/base-config-ix.cmake | 4 ++++ - lib/sanitizer_common/CMakeLists.txt | 2 -- - test/msan/lit.cfg | 3 ++- - test/msan/lit.site.cfg.in | 1 + - test/tsan/lit.cfg | 3 ++- - test/tsan/lit.site.cfg.in | 1 + - 6 files changed, 10 insertions(+), 4 deletions(-) - -diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake -index b208f0852..46b88f72b 100644 ---- a/cmake/base-config-ix.cmake -+++ b/cmake/base-config-ix.cmake -@@ -8,6 +8,10 @@ include(CheckCXXSourceCompiles) - - check_include_file(unwind.h HAVE_UNWIND_H) - -+# used in sanitizer_common and tests -+include(FindPkgConfig) -+pkg_check_modules(TIRPC libtirpc) -+ - # Top level target used to build all compiler-rt libraries. - add_custom_target(compiler-rt ALL) - add_custom_target(install-compiler-rt) -diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt -index 4071bc0e8..08d1781a6 100644 ---- a/lib/sanitizer_common/CMakeLists.txt -+++ b/lib/sanitizer_common/CMakeLists.txt -@@ -151,8 +151,6 @@ include_directories(..) - - set(SANITIZER_COMMON_DEFINITIONS) - --include(FindPkgConfig) --pkg_check_modules(TIRPC libtirpc) - if (TIRPC_FOUND) - include_directories(${TIRPC_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_INCLUDES ${TIRPC_INCLUDE_DIRS}) -diff --git a/test/msan/lit.cfg b/test/msan/lit.cfg -index cac260999..fe8525047 100644 ---- a/test/msan/lit.cfg -+++ b/test/msan/lit.cfg -@@ -14,7 +14,8 @@ clang_msan_cflags = (["-fsanitize=memory", - "-fno-omit-frame-pointer", - "-fno-optimize-sibling-calls"] + - [config.target_cflags] + -- config.debug_info_flags) -+ config.debug_info_flags + -+ [config.rpc_cflags]) - # Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD. - if config.host_os == 'FreeBSD': - clang_msan_cflags += ["-lexecinfo"] -diff --git a/test/msan/lit.site.cfg.in b/test/msan/lit.site.cfg.in -index f744d71fd..35634d324 100644 ---- a/test/msan/lit.site.cfg.in -+++ b/test/msan/lit.site.cfg.in -@@ -6,6 +6,7 @@ config.target_cflags = "@MSAN_TEST_TARGET_CFLAGS@" - config.target_arch = "@MSAN_TEST_TARGET_ARCH@" - config.use_lld = @MSAN_TEST_USE_LLD@ - config.use_thinlto = @MSAN_TEST_USE_THINLTO@ -+config.rpc_cflags = "@TIRPC_CFLAGS@" - - # Load common config for all compiler-rt lit tests. - lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") -diff --git a/test/tsan/lit.cfg b/test/tsan/lit.cfg -index fdbafefbc..82fd2f79d 100644 ---- a/test/tsan/lit.cfg -+++ b/test/tsan/lit.cfg -@@ -49,7 +49,8 @@ clang_tsan_cflags = (["-fsanitize=thread", - [config.target_cflags] + - config.debug_info_flags + - extra_cflags + -- ["-I%s" % tsan_incdir]) -+ ["-I%s" % tsan_incdir] + -+ [config.rpc_cflags]) - clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags + ["-std=c++11"] + ["-I%s" % tsan_incdir] - # Add additional flags if we're using instrumented libc++. - # Instrumented libcxx currently not supported on Darwin. -diff --git a/test/tsan/lit.site.cfg.in b/test/tsan/lit.site.cfg.in -index a215e664a..142d61bf2 100644 ---- a/test/tsan/lit.site.cfg.in -+++ b/test/tsan/lit.site.cfg.in -@@ -7,6 +7,7 @@ config.ios = @TSAN_TEST_IOS_PYBOOL@ - config.iossim = @TSAN_TEST_IOSSIM_PYBOOL@ - config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@" - config.target_arch = "@TSAN_TEST_TARGET_ARCH@" -+config.rpc_cflags = "@TIRPC_CFLAGS@" - - # Load common config for all compiler-rt lit tests. - lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") --- -2.18.0 - diff --git a/sys-libs/compiler-rt-sanitizers/files/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch b/sys-libs/compiler-rt-sanitizers/files/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch new file mode 100644 index 000000000000..ca871c37b994 --- /dev/null +++ b/sys-libs/compiler-rt-sanitizers/files/7.1.0/0001-sanitizer_common-Fix-using-libtirpc-on-Linux.patch @@ -0,0 +1,67 @@ +From e198d21b9a5851dbc061f60911e3b3da910bca0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Wed, 6 Jun 2018 12:16:38 +0200 +Subject: [PATCH 7/8] [sanitizer_common] Fix using libtirpc on Linux + +Fix using libtirpc on Linux by using pkg-config to detect it, and append +appropriate include directory. The libtirpc headers reference one +another via '#include ', so attempting to include it via +'#include ' just failed and resulted in RPC headers not being +detected at all. + +Additionally, perform the header check without -nodefaultlibs as that +apparently causes it to fail. +--- + lib/sanitizer_common/CMakeLists.txt | 11 ++++++++++- + .../sanitizer_platform_limits_posix.cc | 4 +--- + 2 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt +index e0226ae49..4071bc0e8 100644 +--- a/lib/sanitizer_common/CMakeLists.txt ++++ b/lib/sanitizer_common/CMakeLists.txt +@@ -151,9 +151,18 @@ include_directories(..) + + set(SANITIZER_COMMON_DEFINITIONS) + ++include(FindPkgConfig) ++pkg_check_modules(TIRPC libtirpc) ++if (TIRPC_FOUND) ++ include_directories(${TIRPC_INCLUDE_DIRS}) ++ set(CMAKE_REQUIRED_INCLUDES ${TIRPC_INCLUDE_DIRS}) ++endif() ++ + include(CheckIncludeFile) ++cmake_push_check_state() ++string(REPLACE "-nodefaultlibs" "" CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + append_have_file_definition(rpc/xdr.h HAVE_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS) +-append_have_file_definition(tirpc/rpc/xdr.h HAVE_TIRPC_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS) ++cmake_pop_check_state() + + set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS}) + append_rtti_flag(OFF SANITIZER_CFLAGS) +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +index feb7bad6f..2e736ee26 100644 +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -146,8 +146,6 @@ typedef struct user_fpregs elf_fpregset_t; + #include + #if HAVE_RPC_XDR_H + # include +-#elif HAVE_TIRPC_RPC_XDR_H +-# include + #endif + #include + #include +@@ -1236,7 +1234,7 @@ CHECK_SIZE_AND_OFFSET(group, gr_passwd); + CHECK_SIZE_AND_OFFSET(group, gr_gid); + CHECK_SIZE_AND_OFFSET(group, gr_mem); + +-#if HAVE_RPC_XDR_H || HAVE_TIRPC_RPC_XDR_H ++#if HAVE_RPC_XDR_H + CHECK_TYPE_SIZE(XDR); + CHECK_SIZE_AND_OFFSET(XDR, x_op); + CHECK_SIZE_AND_OFFSET(XDR, x_ops); +-- +2.18.0 + diff --git a/sys-libs/compiler-rt-sanitizers/files/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch b/sys-libs/compiler-rt-sanitizers/files/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch new file mode 100644 index 000000000000..880284775e22 --- /dev/null +++ b/sys-libs/compiler-rt-sanitizers/files/7.1.0/0002-test-Support-using-libtirpc-on-Linux.patch @@ -0,0 +1,100 @@ +From 4fc99ef388e2f110759dc774428fd194b65614c8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Wed, 6 Jun 2018 12:45:55 +0200 +Subject: [PATCH 8/8] [test] Support using libtirpc on Linux + +Add compiler flags necessary for using libtirpc on Linux (RPC headers +split out of glibc). The flags are obtained via pkg-config. This fixes +test failures due to tests being unable to find includes. +--- + cmake/base-config-ix.cmake | 4 ++++ + lib/sanitizer_common/CMakeLists.txt | 2 -- + test/msan/lit.cfg | 3 ++- + test/msan/lit.site.cfg.in | 1 + + test/tsan/lit.cfg | 3 ++- + test/tsan/lit.site.cfg.in | 1 + + 6 files changed, 10 insertions(+), 4 deletions(-) + +diff --git a/cmake/base-config-ix.cmake b/cmake/base-config-ix.cmake +index b208f0852..46b88f72b 100644 +--- a/cmake/base-config-ix.cmake ++++ b/cmake/base-config-ix.cmake +@@ -8,6 +8,10 @@ include(CheckCXXSourceCompiles) + + check_include_file(unwind.h HAVE_UNWIND_H) + ++# used in sanitizer_common and tests ++include(FindPkgConfig) ++pkg_check_modules(TIRPC libtirpc) ++ + # Top level target used to build all compiler-rt libraries. + add_custom_target(compiler-rt ALL) + add_custom_target(install-compiler-rt) +diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt +index 4071bc0e8..08d1781a6 100644 +--- a/lib/sanitizer_common/CMakeLists.txt ++++ b/lib/sanitizer_common/CMakeLists.txt +@@ -151,8 +151,6 @@ include_directories(..) + + set(SANITIZER_COMMON_DEFINITIONS) + +-include(FindPkgConfig) +-pkg_check_modules(TIRPC libtirpc) + if (TIRPC_FOUND) + include_directories(${TIRPC_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_INCLUDES ${TIRPC_INCLUDE_DIRS}) +diff --git a/test/msan/lit.cfg b/test/msan/lit.cfg +index cac260999..fe8525047 100644 +--- a/test/msan/lit.cfg ++++ b/test/msan/lit.cfg +@@ -14,7 +14,8 @@ clang_msan_cflags = (["-fsanitize=memory", + "-fno-omit-frame-pointer", + "-fno-optimize-sibling-calls"] + + [config.target_cflags] + +- config.debug_info_flags) ++ config.debug_info_flags + ++ [config.rpc_cflags]) + # Some Msan tests leverage backtrace() which requires libexecinfo on FreeBSD. + if config.host_os == 'FreeBSD': + clang_msan_cflags += ["-lexecinfo"] +diff --git a/test/msan/lit.site.cfg.in b/test/msan/lit.site.cfg.in +index f744d71fd..35634d324 100644 +--- a/test/msan/lit.site.cfg.in ++++ b/test/msan/lit.site.cfg.in +@@ -6,6 +6,7 @@ config.target_cflags = "@MSAN_TEST_TARGET_CFLAGS@" + config.target_arch = "@MSAN_TEST_TARGET_ARCH@" + config.use_lld = @MSAN_TEST_USE_LLD@ + config.use_thinlto = @MSAN_TEST_USE_THINLTO@ ++config.rpc_cflags = "@TIRPC_CFLAGS@" + + # Load common config for all compiler-rt lit tests. + lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") +diff --git a/test/tsan/lit.cfg b/test/tsan/lit.cfg +index fdbafefbc..82fd2f79d 100644 +--- a/test/tsan/lit.cfg ++++ b/test/tsan/lit.cfg +@@ -49,7 +49,8 @@ clang_tsan_cflags = (["-fsanitize=thread", + [config.target_cflags] + + config.debug_info_flags + + extra_cflags + +- ["-I%s" % tsan_incdir]) ++ ["-I%s" % tsan_incdir] + ++ [config.rpc_cflags]) + clang_tsan_cxxflags = config.cxx_mode_flags + clang_tsan_cflags + ["-std=c++11"] + ["-I%s" % tsan_incdir] + # Add additional flags if we're using instrumented libc++. + # Instrumented libcxx currently not supported on Darwin. +diff --git a/test/tsan/lit.site.cfg.in b/test/tsan/lit.site.cfg.in +index a215e664a..142d61bf2 100644 +--- a/test/tsan/lit.site.cfg.in ++++ b/test/tsan/lit.site.cfg.in +@@ -7,6 +7,7 @@ config.ios = @TSAN_TEST_IOS_PYBOOL@ + config.iossim = @TSAN_TEST_IOSSIM_PYBOOL@ + config.target_cflags = "@TSAN_TEST_TARGET_CFLAGS@" + config.target_arch = "@TSAN_TEST_TARGET_ARCH@" ++config.rpc_cflags = "@TIRPC_CFLAGS@" + + # Load common config for all compiler-rt lit tests. + lit_config.load_config(config, "@COMPILER_RT_BINARY_DIR@/test/lit.common.configured") +-- +2.18.0 + -- cgit v1.2.3-65-gdbad