#!/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