Skip to content

Commit e401ce2

Browse files
authored
Add trace-pc-guard to no-sanitize-coverage. (#114)
This allows building libcxx and libcxxabi with the HonggFuzz fuzzer which requires sanitize-coverage. [0] google/oss-fuzz#7033
1 parent eeef3bc commit e401ce2

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
From 0205f99a266c762d00c3f2fa4e3d87ec2366928f Mon Sep 17 00:00:00 2001
2+
From: Ben Wagner <[email protected]>
3+
Date: Fri, 17 Dec 2021 23:12:05 -0500
4+
Subject: [PATCH] Add trace-pc-guard to -fno-sanitize-coverage.
5+
6+
This allows libcxx, libcxxabi, and libunwind to be built with HonggFuzz.
7+
---
8+
libcxx/cmake/config-ix.cmake | 2 +-
9+
libcxxabi/cmake/config-ix.cmake | 2 +-
10+
libunwind/cmake/config-ix.cmake | 2 +-
11+
3 files changed, 3 insertions(+), 3 deletions(-)
12+
13+
diff --git a/libcxx/cmake/config-ix.cmake b/libcxx/cmake/config-ix.cmake
14+
index a2f1ff9f1a3b..91b1749c75af 100644
15+
--- a/libcxx/cmake/config-ix.cmake
16+
+++ b/libcxx/cmake/config-ix.cmake
17+
@@ -73,7 +73,7 @@ if (LIBCXX_SUPPORTS_NOSTDLIBXX_FLAG OR LIBCXX_SUPPORTS_NODEFAULTLIBS_FLAG)
18+
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize=all")
19+
endif ()
20+
if (CMAKE_C_FLAGS MATCHES -fsanitize-coverage OR CMAKE_CXX_FLAGS MATCHES -fsanitize-coverage)
21+
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters")
22+
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters")
23+
endif ()
24+
endif ()
25+
26+
diff --git a/libcxxabi/cmake/config-ix.cmake b/libcxxabi/cmake/config-ix.cmake
27+
index 7f1cecbcd254..86370a712220 100644
28+
--- a/libcxxabi/cmake/config-ix.cmake
29+
+++ b/libcxxabi/cmake/config-ix.cmake
30+
@@ -66,7 +66,7 @@ if (LIBCXXABI_SUPPORTS_NOSTDLIBXX_FLAG OR LIBCXXABI_SUPPORTS_NODEFAULTLIBS_FLAG)
31+
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize=all")
32+
endif ()
33+
if (CMAKE_C_FLAGS MATCHES -fsanitize-coverage OR CMAKE_CXX_FLAGS MATCHES -fsanitize-coverage)
34+
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters")
35+
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters")
36+
endif ()
37+
endif ()
38+
39+
diff --git a/libunwind/cmake/config-ix.cmake b/libunwind/cmake/config-ix.cmake
40+
index 4ca6bdd8e95d..34381fbd8721 100644
41+
--- a/libunwind/cmake/config-ix.cmake
42+
+++ b/libunwind/cmake/config-ix.cmake
43+
@@ -67,7 +67,7 @@ if (LIBUNWIND_SUPPORTS_NOSTDLIBXX_FLAG OR LIBUNWIND_SUPPORTS_NODEFAULTLIBS_FLAG)
44+
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize=all")
45+
endif ()
46+
if (CMAKE_C_FLAGS MATCHES -fsanitize-coverage OR CMAKE_CXX_FLAGS MATCHES -fsanitize-coverage)
47+
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters")
48+
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters")
49+
endif ()
50+
endif ()
51+
52+
--
53+
2.34.1.173.g76aa8bc2d0-goog
54+

fuzzing/scripts/build/libcxx.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ set -euxo pipefail
1111
# fully.
1212

1313
dir="${PWD}"
14-
cd $( dirname $( readlink -f "${0}" ) ) # go to `/fuzzing/scripts/build'
14+
path_to_self=$( dirname $( readlink -f "${0}" ) )
15+
cd "${path_to_self}" # go to `/fuzzing/scripts/build'
1516

1617
path_to_src=$( readlink -f "../../../external/llvm-project" )
1718
path_to_build="${path_to_src}/build"
@@ -26,6 +27,9 @@ if [[ "${#}" == "0" || "${1}" != "--no-init" ]]; then
2627
git reset --hard
2728
git rev-parse HEAD
2829

30+
# See https://github.com/google/oss-fuzz/pull/7033
31+
git apply ${path_to_self}/0001-Add-trace-pc-guard-to-fno-sanitize-coverage.patch
32+
2933
mkdir "${path_to_build}" && cd "${path_to_build}"
3034

3135
case ${SANITIZER} in

0 commit comments

Comments
 (0)