Skip to content

Commit b93a669

Browse files
asg017claude
andcommitted
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 <noreply@anthropic.com>
1 parent 1b53b94 commit b93a669

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

.github/workflows/fuzz.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
LLVM=/opt/homebrew/opt/llvm@18
7474
make -C tests/fuzz all \
7575
FUZZ_CC=$LLVM/bin/clang \
76-
FUZZ_LDFLAGS="-Wl,-ld_classic"
76+
FUZZ_LDFLAGS="-Wl,-ld_classic -nostdlib++ -L$LLVM/lib/c++ -lc++ -Wl,-rpath,$LLVM/lib/c++"
7777
- name: Run fuzz targets
7878
env:
7979
DYLD_LIBRARY_PATH: "/opt/homebrew/opt/llvm@18/lib/c++:${{ env.DYLD_LIBRARY_PATH }}"

0 commit comments

Comments
 (0)