ca871c37b994a2d3e28904fd7fa23c2fc22ffb68
[gentoo.git] /
1 From e198d21b9a5851dbc061f60911e3b3da910bca0a Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
3 Date: Wed, 6 Jun 2018 12:16:38 +0200
4 Subject: [PATCH 7/8] [sanitizer_common] Fix using libtirpc on Linux
5
6 Fix using libtirpc on Linux by using pkg-config to detect it, and append
7 appropriate include directory.  The libtirpc headers reference one
8 another via '#include <rpc/...>', so attempting to include it via
9 '#include <tirpc/...>' just failed and resulted in RPC headers not being
10 detected at all.
11
12 Additionally, perform the header check without -nodefaultlibs as that
13 apparently causes it to fail.
14 ---
15  lib/sanitizer_common/CMakeLists.txt                   | 11 ++++++++++-
16  .../sanitizer_platform_limits_posix.cc                |  4 +---
17  2 files changed, 11 insertions(+), 4 deletions(-)
18
19 diff --git a/lib/sanitizer_common/CMakeLists.txt b/lib/sanitizer_common/CMakeLists.txt
20 index e0226ae49..4071bc0e8 100644
21 --- a/lib/sanitizer_common/CMakeLists.txt
22 +++ b/lib/sanitizer_common/CMakeLists.txt
23 @@ -151,9 +151,18 @@ include_directories(..)
24  
25  set(SANITIZER_COMMON_DEFINITIONS)
26  
27 +include(FindPkgConfig)
28 +pkg_check_modules(TIRPC libtirpc)
29 +if (TIRPC_FOUND)
30 +  include_directories(${TIRPC_INCLUDE_DIRS})
31 +  set(CMAKE_REQUIRED_INCLUDES ${TIRPC_INCLUDE_DIRS})
32 +endif()
33 +
34  include(CheckIncludeFile)
35 +cmake_push_check_state()
36 +string(REPLACE "-nodefaultlibs" "" CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
37  append_have_file_definition(rpc/xdr.h HAVE_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS)
38 -append_have_file_definition(tirpc/rpc/xdr.h HAVE_TIRPC_RPC_XDR_H SANITIZER_COMMON_DEFINITIONS)
39 +cmake_pop_check_state()
40  
41  set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
42  append_rtti_flag(OFF SANITIZER_CFLAGS)
43 diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
44 index feb7bad6f..2e736ee26 100644
45 --- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
46 +++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
47 @@ -146,8 +146,6 @@ typedef struct user_fpregs elf_fpregset_t;
48  #include <netrom/netrom.h>
49  #if HAVE_RPC_XDR_H
50  # include <rpc/xdr.h>
51 -#elif HAVE_TIRPC_RPC_XDR_H
52 -# include <tirpc/rpc/xdr.h>
53  #endif
54  #include <scsi/scsi.h>
55  #include <sys/mtio.h>
56 @@ -1236,7 +1234,7 @@ CHECK_SIZE_AND_OFFSET(group, gr_passwd);
57  CHECK_SIZE_AND_OFFSET(group, gr_gid);
58  CHECK_SIZE_AND_OFFSET(group, gr_mem);
59  
60 -#if HAVE_RPC_XDR_H || HAVE_TIRPC_RPC_XDR_H
61 +#if HAVE_RPC_XDR_H
62  CHECK_TYPE_SIZE(XDR);
63  CHECK_SIZE_AND_OFFSET(XDR, x_op);
64  CHECK_SIZE_AND_OFFSET(XDR, x_ops);
65 -- 
66 2.18.0
67