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