aboutsummaryrefslogtreecommitdiff
path: root/bazel
diff options
context:
space:
mode:
authorFabian Meumertzheim <meumertzheim@code-intelligence.com>2021-06-25 10:29:43 +0200
committerFabian Meumertzheim <fabian@meumertzhe.im>2021-06-25 11:25:04 +0200
commit43bd323d7d237d3d2c7431b54167f17e7726fadb (patch)
tree883ab89df16e70f5da719dc937597c15458d816c /bazel
parent4179c2f486339ca71a4eb979a81f92ea51bd5c9b (diff)
downloadjazzer-api-43bd323d7d237d3d2c7431b54167f17e7726fadb.tar.gz
Improve LD_LIBRARY_PATH in jazzer and fuzz_target_test_wrapper.sh
fuzz_target_test_wrapper.sh also needs logic to add libjvm.so to the LD_LIBRARY_PATH or tests fail on some machines. Along the way, clean up the script and add comments.
Diffstat (limited to 'bazel')
-rwxr-xr-xbazel/fuzz_target_test_wrapper.sh9
-rwxr-xr-xbazel/jazzer14
2 files changed, 17 insertions, 6 deletions
diff --git a/bazel/fuzz_target_test_wrapper.sh b/bazel/fuzz_target_test_wrapper.sh
index f79809e2..53a46e35 100755
--- a/bazel/fuzz_target_test_wrapper.sh
+++ b/bazel/fuzz_target_test_wrapper.sh
@@ -16,6 +16,15 @@
# Crashes will be available as test outputs. These are cleared on the next run,
# so this is only useful for examples.
DEFAULT_CRASH_PREFIX="$TEST_UNDECLARED_OUTPUTS_DIR"
+
+# Determine the path to load libjvm.so from, either relative to the location of
+# the java binary or to $JAVA_HOME, if set.
+JAVA_BIN=$(readlink -f "$(which java)")
+JAVA_HOME=${JAVA_HOME:-${JAVA_BIN%/bin/java}}
+# The location of libjvm.so relative to the JDK differs between JDK <= 8 and 9+.
+JVM_LD_LIBRARY_PATH="$JAVA_HOME/lib/server:$JAVA_HOME/lib/amd64/server"
+
+LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$JVM_LD_LIBRARY_PATH \
eval "$1" -artifact_prefix="$DEFAULT_CRASH_PREFIX/" --reproducer_path="$DEFAULT_CRASH_PREFIX" -seed=2735196724 "${@:2}"
# Assert that we either found a crash in java (exit code 77) or an ASan crash
# (exit code 76).
diff --git a/bazel/jazzer b/bazel/jazzer
index 0bf1fd17..97a0ada1 100755
--- a/bazel/jazzer
+++ b/bazel/jazzer
@@ -1,9 +1,11 @@
#!/usr/bin/env bash
-JAVA_BIN=$(readlink -f "$(command -v java)")
-HEURISTIC_JAVA_BASE_PATH=${JAVA_BIN%/bin/java}
-JAVA_BASE_PATH=${JAVA_HOME:-$HEURISTIC_JAVA_BASE_PATH}
-JVM_LD_LIBRARY_PATH="$JAVA_BASE_PATH/lib/server:$JAVA_BASE_PATH/lib/amd64/server"
-MODIFIED_LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$JVM_LD_LIBRARY_PATH"
+# Determine the path to load libjvm.so from, either relative to the location of
+# the java binary or to $JAVA_HOME, if set.
+JAVA_BIN=$(readlink -f "$(which java)")
+JAVA_HOME=${JAVA_HOME:-${JAVA_BIN%/bin/java}}
+# The location of libjvm.so relative to the JDK differs between JDK <= 8 and 9+.
+JVM_LD_LIBRARY_PATH="$JAVA_HOME/lib/server:$JAVA_HOME/lib/amd64/server"
-LD_LIBRARY_PATH="$MODIFIED_LD_LIBRARY_PATH" $(dirname "$0")/jazzer_driver "$@"
+LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$JVM_LD_LIBRARY_PATH \
+"$(dirname "$0")/jazzer_driver" "$@"