summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-09-01 15:37:50 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-09-01 15:37:50 +0000
commit21202ba8dd28661793d19643d76c10eecdc206cb (patch)
tree7a7b7af88f03cb940a67d8a6a3cb0720929fa8aa
parent263bab01f8c4604f6526df370b40c2b76d69a29d (diff)
downloadbcm5719-llvm-21202ba8dd28661793d19643d76c10eecdc206cb.tar.gz
bcm5719-llvm-21202ba8dd28661793d19643d76c10eecdc206cb.zip
[asan] Update asan_device_setup to support Android L Preview.
llvm-svn: 216884
-rwxr-xr-xcompiler-rt/lib/asan/scripts/asan_device_setup65
1 files changed, 42 insertions, 23 deletions
diff --git a/compiler-rt/lib/asan/scripts/asan_device_setup b/compiler-rt/lib/asan/scripts/asan_device_setup
index 261e2c6a47d..cb87f690248 100755
--- a/compiler-rt/lib/asan/scripts/asan_device_setup
+++ b/compiler-rt/lib/asan/scripts/asan_device_setup
@@ -77,9 +77,19 @@ if [[ x$revert == xyes ]]; then
$ADB root
$ADB wait-for-device
$ADB remount
- $ADB shell mv /system/bin/app_process.real /system/bin/app_process
- $ADB shell rm /system/bin/asanwrapper
- $ADB shell rm /system/lib/$ASAN_RT
+
+ if ! $ADB shell readlink /system/bin/app_process | grep 'app_process' >&/dev/null; then
+ echo '>> Pre-L device detected.'
+ $ADB shell mv /system/bin/app_process.real /system/bin/app_process
+ $ADB shell rm /system/bin/asanwrapper
+ $ADB shell rm /system/lib/$ASAN_RT
+ else
+ $ADB shell rm /system/bin/app_process.wrap
+ $ADB shell rm /system/bin/asanwrapper
+ $ADB shell rm /system/lib/$ASAN_RT
+ $ADB shell rm /system/bin/app_process
+ $ADB shell ln -s /system/bin/app_process32 /system/bin/app_process
+ fi
echo '>> Restarting shell'
$ADB shell stop
@@ -105,7 +115,7 @@ elif [[ $(basename "$HERE") == "bin" ]]; then
fi
if [[ -z "$ASAN_RT_PATH" || ! -f "$ASAN_RT_PATH/$ASAN_RT" ]]; then
- echo "ASan runtime library not found"
+ echo ">> ASan runtime library not found"
exit 1
fi
@@ -119,23 +129,28 @@ $ADB root
$ADB wait-for-device
$ADB remount
+if ! $ADB shell readlink /system/bin/app_process | grep 'app_process' >&/dev/null; then
+
+ if $ADB pull /system/bin/app_process.real /dev/null >&/dev/null; then
+ echo '>> Old-style ASan installation detected. Reverting.'
+ $ADB shell mv /system/bin/app_process.real /system/bin/app_process
+ fi
+
+ echo '>> Pre-L device detected. Setting up app_process symlink.'
+ $ADB shell mv /system/bin/app_process /system/bin/app_process32
+ $ADB shell ln -s /system/bin/app_process32 /system/bin/app_process
+fi
+
echo '>> Copying files from the device'
-$ADB pull /system/bin/app_process "$TMPDIROLD"
-$ADB pull /system/bin/app_process.real "$TMPDIROLD" || true
+$ADB pull /system/bin/app_process.wrap "$TMPDIROLD" || true
$ADB pull /system/bin/asanwrapper "$TMPDIROLD" || true
$ADB pull /system/lib/libclang_rt.asan-arm-android.so "$TMPDIROLD" || true
cp -r "$TMPDIROLD" "$TMPDIR"
-if ! [[ -f "$TMPDIR/app_process" ]]; then
- echo "app_process missing???"
- exit 1
-fi
-
-if [[ -f "$TMPDIR/app_process.real" ]]; then
- echo "app_process.real exists, updating the wrapper"
+if [[ -f "$TMPDIR/app_process.wrap" ]]; then
+ echo ">> Previous installation detected"
else
- echo "app_process.real missing, new installation"
- mv "$TMPDIR/app_process" "$TMPDIR/app_process.real"
+ echo ">> New installation"
fi
echo '>> Generating wrappers'
@@ -150,11 +165,11 @@ if [[ x$extra_options != x ]] ; then
fi
# Zygote wrapper.
-cat <<EOF >"$TMPDIR/app_process"
+cat <<EOF >"$TMPDIR/app_process.wrap"
#!/system/bin/sh
ASAN_OPTIONS=$ASAN_OPTIONS \\
LD_PRELOAD=libclang_rt.asan-arm-android.so \\
-exec /system/bin/app_process.real \$@
+exec /system/bin/app_process32 \$@
EOF
@@ -170,16 +185,20 @@ EOF
if ! ( cd "$TMPDIRBASE" && diff -qr old/ new/ ) ; then
echo '>> Pushing files to the device'
$ADB push "$TMPDIR/$ASAN_RT" /system/lib/
- $ADB push "$TMPDIR/app_process" /system/bin/app_process
- $ADB push "$TMPDIR/app_process.real" /system/bin/app_process.real
+ $ADB push "$TMPDIR/app_process.wrap" /system/bin/app_process.wrap
$ADB push "$TMPDIR/asanwrapper" /system/bin/asanwrapper
+
+ $ADB shell rm /system/bin/app_process
+ $ADB shell ln -s /system/bin/app_process.wrap /system/bin/app_process
+
$ADB shell chown root.shell \
- /system/bin/app_process \
- /system/bin/app_process.real \
+ /system/lib/"$ASAN_RT" \
+ /system/bin/app_process.wrap \
/system/bin/asanwrapper
+ $ADB shell chmod 644 \
+ /system/lib/"$ASAN_RT"
$ADB shell chmod 755 \
- /system/bin/app_process \
- /system/bin/app_process.real \
+ /system/bin/app_process.wrap \
/system/bin/asanwrapper
echo '>> Restarting shell (asynchronous)'
OpenPOWER on IntegriCloud