diff options
author | steadmon <josh@steadmon.net> | 2022-07-16 16:46:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-17 00:46:23 +0100 |
commit | 930fa5780e8d42587fb076fb1df9d64daed2087f (patch) | |
tree | 227e00ecddcd62bfe2b5e9942a93fdacf6aba1b4 /projects | |
parent | aabda0f17f4cd037130a5bf87d05016cbb03fcdf (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.
Diffstat (limited to 'projects')
-rwxr-xr-x | projects/git/build.sh | 5 | ||||
-rw-r--r-- | projects/git/project.yaml | 5 |
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 |