26 lines
No EOL
1 KiB
Bash
26 lines
No EOL
1 KiB
Bash
|
|
#!/system/bin/sh
|
|
HERE=$(cd "$(dirname "$0")" && pwd)
|
|
cmd=$1
|
|
shift
|
|
# This must be called *before* `LD_PRELOAD` is set. Otherwise, if this is a 32-
|
|
# bit app running on a 64-bit device, the 64-bit getprop will fail to load
|
|
# because it will preload a 32-bit ASan runtime.
|
|
# https://github.com/android/ndk/issues/1744
|
|
os_version=$(getprop ro.build.version.sdk)
|
|
if [ "$os_version" -eq "27" ]; then
|
|
cmd="$cmd -Xrunjdwp:transport=dt_android_adb,suspend=n,server=y -Xcompiler-option --debuggable $@"
|
|
elif [ "$os_version" -eq "28" ]; then
|
|
cmd="$cmd -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y -Xcompiler-option --debuggable $@"
|
|
else
|
|
cmd="$cmd -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y $@"
|
|
fi
|
|
export ASAN_OPTIONS=log_to_syslog=false,allow_user_segv_handler=1
|
|
ASAN_LIB=$(ls "$HERE"/libclang_rt.asan-*-android.so)
|
|
if [ -f "$HERE/libc++_shared.so" ]; then
|
|
# Workaround for https://github.com/android-ndk/ndk/issues/988.
|
|
export LD_PRELOAD="$ASAN_LIB $HERE/libc++_shared.so"
|
|
else
|
|
export LD_PRELOAD="$ASAN_LIB"
|
|
fi
|
|
exec $cmd |