| Index: tools/android/asan/asan_device_setup.sh
|
| diff --git a/tools/android/asan/asan_device_setup.sh b/tools/android/asan/asan_device_setup.sh
|
| index 03e84a44f0ee9b2937c0495c69fb2eb8cf9e8cfb..25fb26af9f052cff0a91d8ca8a23c6ce920efa64 100755
|
| --- a/tools/android/asan/asan_device_setup.sh
|
| +++ b/tools/android/asan/asan_device_setup.sh
|
| @@ -1,9 +1,14 @@
|
| #!/bin/bash -e
|
| -# Copyright (c) 2014 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -# Prepare Android device to run ASan application.
|
| +#===- lib/asan/scripts/asan_device_setup.py -----------------------------------===#
|
| +#
|
| +# The LLVM Compiler Infrastructure
|
| +#
|
| +# This file is distributed under the University of Illinois Open Source
|
| +# License. See LICENSE.TXT for details.
|
| +#
|
| +# Prepare Android device to run ASan applications.
|
| +#
|
| +#===------------------------------------------------------------------------===#
|
|
|
|
|
| HERE="$(cd "$(dirname "$0")" && pwd)"
|
| @@ -11,10 +16,12 @@ HERE="$(cd "$(dirname "$0")" && pwd)"
|
| revert=no
|
| extra_options=
|
| device=
|
| +lib=
|
|
|
| function usage {
|
| - echo "usage: $0 [--revert] [--device device-id]"
|
| + echo "usage: $0 [--revert] [--device device-id] [--lib path] [--extra_options options]"
|
| echo " --revert: Uninstall ASan from the device."
|
| + echo " --lib: Path to ASan runtime library."
|
| echo " --extra_options: Extra ASAN_OPTIONS."
|
| echo " --device: Install to the given device. Use 'adb devices' to find"
|
| echo " device-id."
|
| @@ -35,6 +42,14 @@ while [[ $# > 0 ]]; do
|
| fi
|
| extra_options="$1"
|
| ;;
|
| + --lib)
|
| + shift
|
| + if [[ $# == 0 ]]; then
|
| + echo "--lib requires an argument."
|
| + exit 1
|
| + fi
|
| + lib="$1"
|
| + ;;
|
| --device)
|
| shift
|
| if [[ $# == 0 ]]; then
|
| @@ -55,11 +70,12 @@ if [[ x$device != x ]]; then
|
| ADB="adb -s $device"
|
| fi
|
|
|
| -ASAN_RT_PATH="$HERE"
|
| ASAN_RT="libclang_rt.asan-arm-android.so"
|
|
|
| if [[ x$revert == xyes ]]; then
|
| echo '>> Uninstalling ASan'
|
| + $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
|
| @@ -73,18 +89,34 @@ if [[ x$revert == xyes ]]; then
|
| exit 0
|
| fi
|
|
|
| -if ! [[ -f "$ASAN_RT_PATH/$ASAN_RT" ]]; then
|
| - echo "ASan runtime library not found at $ASAN_RT"
|
| +if [[ -d "$lib" ]]; then
|
| + ASAN_RT_PATH="$lib"
|
| +elif [[ -f "$lib" && "$lib" == *"$ASAN_RT" ]]; then
|
| + ASAN_RT_PATH=$(dirname "$lib")
|
| +elif [[ -f "$HERE/$ASAN_RT" ]]; then
|
| + ASAN_RT_PATH="$HERE"
|
| +elif [[ $(basename "$HERE") == "bin" ]]; then
|
| + # We could be in the toolchain's base directory.
|
| + # Consider ../lib and ../lib/clang/$VERSION/lib/linux.
|
| + P=$(ls "$HERE"/../lib/"$ASAN_RT" "$HERE"/../lib/clang/*/lib/linux/"$ASAN_RT" 2>/dev/null | sort | tail -1)
|
| + if [[ -n "$P" ]]; then
|
| + ASAN_RT_PATH="$(dirname "$P")"
|
| + fi
|
| +fi
|
| +
|
| +if [[ -z "$ASAN_RT_PATH" || ! -f "$ASAN_RT_PATH/$ASAN_RT" ]]; then
|
| + echo "ASan runtime library not found"
|
| exit 1
|
| fi
|
|
|
| TMPDIRBASE=$(mktemp -d)
|
| -echo $TMPDIRBASE
|
| TMPDIROLD="$TMPDIRBASE/old"
|
| TMPDIR="$TMPDIRBASE/new"
|
| mkdir "$TMPDIROLD"
|
|
|
| echo '>> Remounting /system rw'
|
| +$ADB root
|
| +$ADB wait-for-device
|
| $ADB remount
|
|
|
| echo '>> Copying files from the device'
|
|
|