diff options
Diffstat (limited to 'driver/libfuzzer_driver.cpp')
-rw-r--r-- | driver/libfuzzer_driver.cpp | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/driver/libfuzzer_driver.cpp b/driver/libfuzzer_driver.cpp index 67638350..02ef1b8e 100644 --- a/driver/libfuzzer_driver.cpp +++ b/driver/libfuzzer_driver.cpp @@ -14,8 +14,6 @@ #include "libfuzzer_driver.h" -#include <dlfcn.h> - #include <algorithm> #include <filesystem> #include <fstream> @@ -44,26 +42,16 @@ DECLARE_string(id_sync_file); // Defined in fuzz_target_runner.cpp DECLARE_string(coverage_report); +// This symbol is defined by sanitizers if linked into Jazzer or in +// sanitizer_symbols.cpp if no sanitizer is used. +extern "C" void __sanitizer_set_death_callback(void (*)()); + // We apply a patch to libFuzzer to make it call this function instead of // __sanitizer_set_death_callback to pass us the death callback. extern "C" [[maybe_unused]] void __jazzer_set_death_callback( void (*callback)()) { jazzer::AbstractLibfuzzerDriver::libfuzzer_print_crashing_input_ = callback; - void *sanitizer_set_death_callback = - dlsym(RTLD_DEFAULT, "__sanitizer_set_death_callback"); - if (sanitizer_set_death_callback != nullptr) - reinterpret_cast<void (*)(void (*)())>(sanitizer_set_death_callback)( - callback); -} - -// Suppress libFuzzer warnings about missing sanitizer methods in non-ASan -// builds. -extern "C" __attribute__((weak)) int __sanitizer_acquire_crash_state() { - return true; -} - -extern "C" __attribute__((weak)) void __sanitizer_print_stack_trace() { - jazzer::DumpJvmStackTraces(); + __sanitizer_set_death_callback(callback); } namespace { |