From b93a669224d2a6703dedc4ffdda1acbce13fb8ca Mon Sep 17 00:00:00 2001 From: Alex Garcia Date: Tue, 3 Mar 2026 10:06:36 -0800 Subject: [PATCH] Fix macOS fuzz: explicitly link LLVM libc++ to avoid weak-def symbol error The fuzz targets were crashing on macOS 14 with: dyld: weak-def symbol not found '__ZnwmSt19__type_descriptor_t' libFuzzer compiled with LLVM 18 uses typed allocation ABI symbols not present in macOS 14's system libc++. Since DYLD_LIBRARY_PATH cannot override SIP-protected /usr/lib/libc++.1.dylib at runtime, we fix this at link time: - -nostdlib++: suppress implicit system libc++ linking - -L$LLVM/lib/c++ -lc++: explicitly link LLVM's libc++ (which has the symbol) - -Wl,-rpath,$LLVM/lib/c++: embed rpath so dyld finds LLVM's libc++ at runtime Co-Authored-By: Claude Opus 4.6 --- .github/workflows/fuzz.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fuzz.yaml b/.github/workflows/fuzz.yaml index 0602072..72c0192 100644 --- a/.github/workflows/fuzz.yaml +++ b/.github/workflows/fuzz.yaml @@ -73,7 +73,7 @@ jobs: LLVM=/opt/homebrew/opt/llvm@18 make -C tests/fuzz all \ FUZZ_CC=$LLVM/bin/clang \ - FUZZ_LDFLAGS="-Wl,-ld_classic" + FUZZ_LDFLAGS="-Wl,-ld_classic -nostdlib++ -L$LLVM/lib/c++ -lc++ -Wl,-rpath,$LLVM/lib/c++" - name: Run fuzz targets env: DYLD_LIBRARY_PATH: "/opt/homebrew/opt/llvm@18/lib/c++:${{ env.DYLD_LIBRARY_PATH }}"