From 75486c8ed87a480b9f0c4dc7a10f3cd4eee87b12 Mon Sep 17 00:00:00 2001 From: Max Edwards Date: Tue, 25 Feb 2025 15:36:06 -0500 Subject: [PATCH] doc: update fuzz instructions when on macOS Default linker on macOS does not work with recent versions of LLVM. Updated the instructions for fuzzing to use lld instead. --- doc/fuzzing.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/fuzzing.md b/doc/fuzzing.md index 3b3c2c4c0e1b9..ac6e0cf0ccd88 100644 --- a/doc/fuzzing.md +++ b/doc/fuzzing.md @@ -153,13 +153,16 @@ You may also need to take care of giving the correct path for `clang` and `clang++`, like `CC=/path/to/clang CXX=/path/to/clang++` if the non-systems `clang` does not come first in your path. -Full configuration step that was tested on macOS with `brew` installed `llvm`: +Using `lld` is required due to issues with Apple's `ld` and `LLVM`. + +Full configuration step for macOS: ```sh +$ brew install llvm lld $ cmake --preset=libfuzzer \ -DCMAKE_C_COMPILER="$(brew --prefix llvm)/bin/clang" \ -DCMAKE_CXX_COMPILER="$(brew --prefix llvm)/bin/clang++" \ - -DAPPEND_LDFLAGS=-Wl,-no_warn_duplicate_libraries + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" ``` Read the [libFuzzer documentation](https://llvm.org/docs/LibFuzzer.html) for more information. This [libFuzzer tutorial](https://github.com/google/fuzzing/blob/master/tutorial/libFuzzerTutorial.md) might also be of interest.