From c95ecbf9db8263eea620384666ee724fa75b1b1b Mon Sep 17 00:00:00 2001 From: Fabian Meumertzheim Date: Fri, 19 Mar 2021 14:26:02 +0100 Subject: Do not intercept JVM-internal C stdlib calls The JVM frequently calls strcmp/memcmp/..., which fills up the table of recent compares with entries that are either duplicates of values already reported by the bytecode instrumentation or JDK-internal strings that are not relevant for fuzzing. This commit adds an ignorelist to the C stdlib interceptors that filters out calls from known JVM libraries. If the fuzz target has not yet loaded a native library, all such callbacks are ignored, which greatly improves fuzzer performance for string-heavy targets. E.g., JsonSanitizerDenylistFuzzer takes < 1 million runs now when it used to take over 3 million. --- WORKSPACE.bazel | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'WORKSPACE.bazel') diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index f190a084..d54cdba4 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -206,9 +206,10 @@ http_archive( name = "libFuzzer", build_file = "//third_party:libFuzzer.BUILD", patches = [ + "//third_party:libFuzzer-make-interceptors-configurable.patch", "//third_party:libFuzzer-pass-death-callback-to-jazzer.patch", ], - sha256 = "8ad4ddbafac4f2c8f2ea523c2c4196f940e8e16f9e635210537582a48622a5d5", - strip_prefix = "llvm-project-llvmorg-11.0.0", - url = "https://github.com/llvm/llvm-project/archive/llvmorg-11.0.0.tar.gz", + sha256 = "a78949f86fc9852f51b11ceb3e6c2c61bb6e4ebb073198cebddc82451f708adf", + strip_prefix = "llvm-project-llvmorg-12.0.0-rc3", + url = "https://github.com/llvm/llvm-project/archive/llvmorg-12.0.0-rc3.tar.gz", ) -- cgit v1.2.3