aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar steadmon <josh@steadmon.net>2022-07-16 16:46:23 -0700
committerGravatar GitHub <noreply@github.com>2022-07-17 00:46:23 +0100
commit930fa5780e8d42587fb076fb1df9d64daed2087f (patch)
tree227e00ecddcd62bfe2b5e9942a93fdacf6aba1b4
parentaabda0f17f4cd037130a5bf87d05016cbb03fcdf (diff)
git: workaround new requirement to use common-main (#7818)
Due to upstream changes, the Git fuzzers must now link against common-main.o; however, this breaks the build in two ways: 1) Linking with common-main.o causes main() to have multiple definitions, one in common-main.o and one from the fuzzing engine. 2) To avoid #1, the Git Makefile specifically excludes common-main.o from the fuzzer build rule. To work around these issues, we can override FUZZ_CXXFLAGS (add "-Wl,--allow-multiple-definition" to fix #1) and LIB_FUZZING_ENGINE (add "common-main.o" to fix #2). Once we can get a Makefile fix into Git's upstream, we can remove the override for LIB_FUZZING_ENGINE. However, this change causes `check_build` to fail for honggfuzz, and we have not yet been able to diagnose the reason. So for now, we also need to limit our engines to afl and libfuzzer.
-rwxr-xr-xprojects/git/build.sh5
-rw-r--r--projects/git/project.yaml5
2 files changed, 8 insertions, 2 deletions
diff --git a/projects/git/build.sh b/projects/git/build.sh
index 8770a831..eb3dbfa7 100755
--- a/projects/git/build.sh
+++ b/projects/git/build.sh
@@ -16,8 +16,9 @@
################################################################################
# build fuzzers
-make -j$(nproc) CC=$CC CXX=$CXX CFLAGS="$CFLAGS" FUZZ_CXXFLAGS="$CXXFLAGS" \
- LIB_FUZZING_ENGINE=$LIB_FUZZING_ENGINE fuzz-all
+make -j$(nproc) CC=$CC CXX=$CXX CFLAGS="$CFLAGS" \
+ FUZZ_CXXFLAGS="$CXXFLAGS -Wl,--allow-multiple-definition" \
+ LIB_FUZZING_ENGINE="common-main.o $LIB_FUZZING_ENGINE" fuzz-all
FUZZERS="fuzz-pack-headers fuzz-pack-idx fuzz-commit-graph"
diff --git a/projects/git/project.yaml b/projects/git/project.yaml
index 8203db61..0684d021 100644
--- a/projects/git/project.yaml
+++ b/projects/git/project.yaml
@@ -7,3 +7,8 @@ auto_ccs:
- "jonathantanmy@google.com"
- "jrn@google.com"
main_repo: 'https://github.com/git/git'
+
+# Disable honggfuzz due to undiagnosed build failures
+fuzzing_engines:
+ - libfuzzer
+ - afl