Skip to content

Commit

Permalink
Build fix: WK_LIBFUZZER_COVERAGE should default to trace-pc-guard whe…
Browse files Browse the repository at this point in the history
…n Fuzzilli is enabled

https://bugs.webkit.org/show_bug.cgi?id=269796
<rdar://123317614>

Unreviewed build fix.

Enabling Fuzzilli failed to compile and link with
-fsanitize-coverage=trace-pc-guard.

The fix is to have separate OTHER_CFLAGS and OTHER_LDFLAGS for Fuzzilli
and LibFuzzer that both use the shared $(WK_SANITIZER_COVERAGE).

* Configurations/Sanitizers.xcconfig:
(WK_SANITIZER_OTHER_CFLAGS):
- Rearrange switches.
(WK_SANITIZER_OTHER_CPLUSPLUSFLAGS):
- Remove $(WK_LIBFUZZER_OTHER_CPLUSPLUSFLAGS_$(ENABLE_LIBFUZZER)) as it
  is not used.
(WK_SANITIZER_OTHER_LDFLAGS):
- Add $(WK_FUZZILLI_OTHER_LDFLAGS_$(ENABLE_FUZZILLI)).
(WK_SANITIZER_COVERAGE*):
- Rename from WK_LIBFUZZER_COVERAGE.
(WK_SANITIZER_COVERAGE_OTHER_FLAGS): Add.
- This is shared between Fuzzilli and LibFuzzer.
(WK_LIBFUZZER_OTHER_CFLAGS_YES):
(WK_LIBFUZZER_OTHER_LDFLAGS_YES):
(WK_FUZZILLI_OTHER_CFLAGS_YES): Add.
(WK_FUZZILLI_OTHER_LDFLAGS_YES): Add.
- Make use of $(WK_SANITIZER_COVERAGE_OTHER_FLAGS).

Canonical link: https://commits.webkit.org/275632@main
  • Loading branch information
David Kilzer authored and ddkilzer committed Mar 4, 2024
1 parent f5f7adb commit b3a8dd3
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions Configurations/Sanitizers.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Debug = 0;
WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Production = 1;
WK_SANITIZER_GCC_OPTIMIZATION_LEVEL_Release = 1;

WK_SANITIZER_OTHER_CFLAGS = $(WK_ANY_SANITIZER_CFLAGS_$(WK_ANY_SANITIZER_ENABLED)) $(WK_ADDRESS_SANITIZER_OTHER_CFLAGS_$(ENABLE_ADDRESS_SANITIZER)) $(WK_UNDEFINED_BEHAVIOR_SANITIZER_OTHER_CFLAGS_$(ENABLE_UNDEFINED_BEHAVIOR_SANITIZER)) $(WK_LIBFUZZER_OTHER_CFLAGS_$(ENABLE_LIBFUZZER)) $(WK_FUZZILLI_OTHER_CFLAGS_$(ENABLE_FUZZILLI));
WK_SANITIZER_OTHER_CFLAGS = $(WK_ANY_SANITIZER_CFLAGS_$(WK_ANY_SANITIZER_ENABLED)) $(WK_ADDRESS_SANITIZER_OTHER_CFLAGS_$(ENABLE_ADDRESS_SANITIZER)) $(WK_UNDEFINED_BEHAVIOR_SANITIZER_OTHER_CFLAGS_$(ENABLE_UNDEFINED_BEHAVIOR_SANITIZER)) $(WK_FUZZILLI_OTHER_CFLAGS_$(ENABLE_FUZZILLI)) $(WK_LIBFUZZER_OTHER_CFLAGS_$(ENABLE_LIBFUZZER));

WK_SANITIZER_OTHER_CPLUSPLUSFLAGS = $(WK_ADDRESS_SANITIZER_OTHER_CPLUSPLUSFLAGS_$(ENABLE_ADDRESS_SANITIZER)) $(WK_LIBFUZZER_OTHER_CPLUSPLUSFLAGS_$(ENABLE_LIBFUZZER));
WK_SANITIZER_OTHER_CPLUSPLUSFLAGS = $(WK_ADDRESS_SANITIZER_OTHER_CPLUSPLUSFLAGS_$(ENABLE_ADDRESS_SANITIZER));

WK_SANITIZER_OTHER_LDFLAGS = $(WK_ANY_SANITIZER_LDFLAGS_$(WK_ANY_SANITIZER_ENABLED)) $(WK_LIBFUZZER_OTHER_LDFLAGS_$(ENABLE_LIBFUZZER));
WK_SANITIZER_OTHER_LDFLAGS = $(WK_ANY_SANITIZER_LDFLAGS_$(WK_ANY_SANITIZER_ENABLED)) $(WK_FUZZILLI_OTHER_LDFLAGS_$(ENABLE_FUZZILLI)) $(WK_LIBFUZZER_OTHER_LDFLAGS_$(ENABLE_LIBFUZZER));

WK_SANITIZER_OTHER_TAPI_FLAGS = $(WK_SANITIZER_OTHER_TAPI_FLAGS_ASAN_$(ENABLE_ADDRESS_SANITIZER)) $(WK_SANITIZER_OTHER_TAPI_FLAGS_LIBFUZZER_$(ENABLE_LIBFUZZER)) $(WK_SANITIZER_OTHER_TAPI_FLAGS_TSAN_$(ENABLE_THREAD_SANITIZER)) $(WK_SANITIZER_OTHER_TAPI_FLAGS_UBSAN_$(ENABLE_UNDEFINED_BEHAVIOR_SANITIZER));
WK_SANITIZER_OTHER_TAPI_FLAGS_ASAN_YES = -Xparser -fsanitize=address;
Expand Down Expand Up @@ -91,18 +91,24 @@ WK_XCODE_VERSION_AFTER_13_3_1700 = YES;
// -fno-optimize-sibling-calls: disable tail call elimination for more accurate crash stacks.
WK_UNDEFINED_BEHAVIOR_SANITIZER_OTHER_CFLAGS_YES = -fno-delete-null-pointer-checks -fno-optimize-sibling-calls -fno-sanitize=vptr -fsanitize=enum,return;

// Libfuzzer
// Sanitizer Coverage

WK_LIBFUZZER_COVERAGE = $(WK_LIBFUZZER_COVERAGE_FUZZILLI_$(ENABLE_FUZZILLI));
WK_LIBFUZZER_COVERAGE_FUZZILLI_ = inline-8bit-counters,trace-cmp;
WK_LIBFUZZER_COVERAGE_FUZZILLI_NO = $(WK_LIBFUZZER_COVERAGE_FUZZILLI_);
WK_LIBFUZZER_COVERAGE_FUZZILLI_YES = trace-pc-guard;
WK_LIBFUZZER_OTHER_CFLAGS_YES = -fsanitize-coverage=$(WK_LIBFUZZER_COVERAGE) -Wno-error -DENABLE_LIBFUZZER=1;
WK_LIBFUZZER_OTHER_LDFLAGS_YES = -fsanitize-coverage=$(WK_LIBFUZZER_COVERAGE);
WK_SANITIZER_COVERAGE = $(WK_SANITIZER_COVERAGE_FUZZILLI_$(ENABLE_FUZZILLI));
WK_SANITIZER_COVERAGE_FUZZILLI_ = inline-8bit-counters,trace-cmp;
WK_SANITIZER_COVERAGE_FUZZILLI_NO = $(WK_SANITIZER_COVERAGE_FUZZILLI_);
WK_SANITIZER_COVERAGE_FUZZILLI_YES = trace-pc-guard;

WK_SANITIZER_COVERAGE_OTHER_FLAGS = -fsanitize-coverage=$(WK_SANITIZER_COVERAGE);

// LibFuzzer

WK_LIBFUZZER_OTHER_CFLAGS_YES = $(WK_SANITIZER_COVERAGE_OTHER_FLAGS) -Wno-error -DENABLE_LIBFUZZER=1;
WK_LIBFUZZER_OTHER_LDFLAGS_YES = $(WK_SANITIZER_COVERAGE_OTHER_FLAGS);

// Fuzzilli for JavaScriptCore

WK_FUZZILLI_OTHER_CFLAGS_YES = -DENABLE_FUZZILLI=1;
WK_FUZZILLI_OTHER_CFLAGS_YES = $(WK_SANITIZER_COVERAGE_OTHER_FLAGS) -DENABLE_FUZZILLI=1;
WK_FUZZILLI_OTHER_LDFLAGS_YES = $(WK_SANITIZER_COVERAGE_OTHER_FLAGS);

// Clang Static Analyzer

Expand Down

0 comments on commit b3a8dd3

Please sign in to comment.