diff options
Diffstat (limited to 'clang-2690385/bin')
23 files changed, 546 insertions, 0 deletions
diff --git a/clang-2690385/bin/FileCheck b/clang-2690385/bin/FileCheck Binary files differnew file mode 100755 index 00000000..56f16b3f --- /dev/null +++ b/clang-2690385/bin/FileCheck diff --git a/clang-2690385/bin/arm64-v8a/analyzer b/clang-2690385/bin/arm64-v8a/analyzer new file mode 100644 index 00000000..3320e6b5 --- /dev/null +++ b/clang-2690385/bin/arm64-v8a/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target aarch64-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/arm64-v8a/analyzer++ b/clang-2690385/bin/arm64-v8a/analyzer++ new file mode 100644 index 00000000..88a2e205 --- /dev/null +++ b/clang-2690385/bin/arm64-v8a/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target aarch64-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/armeabi-v7a-hard/analyzer b/clang-2690385/bin/armeabi-v7a-hard/analyzer new file mode 100644 index 00000000..5a708a7d --- /dev/null +++ b/clang-2690385/bin/armeabi-v7a-hard/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target armv7-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/armeabi-v7a-hard/analyzer++ b/clang-2690385/bin/armeabi-v7a-hard/analyzer++ new file mode 100644 index 00000000..3541679f --- /dev/null +++ b/clang-2690385/bin/armeabi-v7a-hard/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target armv7-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/armeabi-v7a/analyzer b/clang-2690385/bin/armeabi-v7a/analyzer new file mode 100644 index 00000000..5a708a7d --- /dev/null +++ b/clang-2690385/bin/armeabi-v7a/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target armv7-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/armeabi-v7a/analyzer++ b/clang-2690385/bin/armeabi-v7a/analyzer++ new file mode 100644 index 00000000..3541679f --- /dev/null +++ b/clang-2690385/bin/armeabi-v7a/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target armv7-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/armeabi/analyzer b/clang-2690385/bin/armeabi/analyzer new file mode 100644 index 00000000..150aa83e --- /dev/null +++ b/clang-2690385/bin/armeabi/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target armv5te-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/armeabi/analyzer++ b/clang-2690385/bin/armeabi/analyzer++ new file mode 100644 index 00000000..13f37bdb --- /dev/null +++ b/clang-2690385/bin/armeabi/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target armv5te-none-linux-androideabi "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/asan_device_setup b/clang-2690385/bin/asan_device_setup new file mode 100755 index 00000000..6cb7b94c --- /dev/null +++ b/clang-2690385/bin/asan_device_setup @@ -0,0 +1,434 @@ +#!/bin/bash +#===- lib/asan/scripts/asan_device_setup -----------------------------------===# +# +# 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. +# +#===------------------------------------------------------------------------===# + +set -e + +HERE="$(cd "$(dirname "$0")" && pwd)" + +revert=no +extra_options= +device= +lib= +use_su=0 + +function usage { + 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." + echo " --use-su: Use 'su -c' prefix for every adb command instead of using" + echo " 'adb root' once." + echo + exit 1 +} + +function adb_push { + if [ $use_su -eq 0 ]; then + $ADB push "$1" "$2" + else + local FILENAME=$(basename $1) + $ADB push "$1" "/data/local/tmp/$FILENAME" + $ADB shell su -c "rm \\\"$2/$FILENAME\\\"" >&/dev/null + $ADB shell su -c "cat \\\"/data/local/tmp/$FILENAME\\\" > \\\"$2/$FILENAME\\\"" + $ADB shell su -c "rm \\\"/data/local/tmp/$FILENAME\\\"" + fi +} + +function adb_remount { + if [ $use_su -eq 0 ]; then + $ADB remount + else + local STORAGE=`$ADB shell mount | grep /system | cut -d ' ' -f1` + if [ "$STORAGE" != "" ]; then + echo Remounting $STORAGE at /system + $ADB shell su -c "mount -o remount,rw $STORAGE /system" + else + echo Failed to get storage device name for "/system" mount point + fi + fi +} + +function adb_shell { + if [ $use_su -eq 0 ]; then + $ADB shell $@ + else + $ADB shell su -c "$*" + fi +} + +function adb_root { + if [ $use_su -eq 0 ]; then + $ADB root + fi +} + +function adb_wait_for_device { + $ADB wait-for-device +} + +function adb_pull { + if [ $use_su -eq 0 ]; then + $ADB pull "$1" "$2" + else + local FILENAME=$(basename $1) + $ADB shell rm "/data/local/tmp/$FILENAME" >&/dev/null + $ADB shell su -c "[ -f \\\"$1\\\" ] && cat \\\"$1\\\" > \\\"/data/local/tmp/$FILENAME\\\" && chown root.shell \\\"/data/local/tmp/$FILENAME\\\" && chmod 755 \\\"/data/local/tmp/$FILENAME\\\"" && + $ADB pull "/data/local/tmp/$FILENAME" "$2" >&/dev/null && $ADB shell "rm \"/data/local/tmp/$FILENAME\"" + fi +} + +function get_device_arch { # OUT OUT64 + local _outvar=$1 + local _outvar64=$2 + local _ABI=$(adb_shell getprop ro.product.cpu.abi) + local _ARCH= + local _ARCH64= + if [[ $_ABI == x86* ]]; then + _ARCH=i686 + elif [[ $_ABI == armeabi* ]]; then + _ARCH=arm + elif [[ $_ABI == arm64-v8a* ]]; then + _ARCH=arm + _ARCH64=aarch64 + else + echo "Unrecognized device ABI: $_ABI" + exit 1 + fi + eval $_outvar=\$_ARCH + eval $_outvar64=\$_ARCH64 +} + +while [[ $# > 0 ]]; do + case $1 in + --revert) + revert=yes + ;; + --extra-options) + shift + if [[ $# == 0 ]]; then + echo "--extra-options requires an argument." + exit 1 + fi + extra_options="$1" + ;; + --lib) + shift + if [[ $# == 0 ]]; then + echo "--lib requires an argument." + exit 1 + fi + lib="$1" + ;; + --device) + shift + if [[ $# == 0 ]]; then + echo "--device requires an argument." + exit 1 + fi + device="$1" + ;; + --use-su) + use_su=1 + ;; + *) + usage + ;; + esac + shift +done + +ADB=${ADB:-adb} +if [[ x$device != x ]]; then + ADB="$ADB -s $device" +fi + +if [ $use_su -eq 1 ]; then + # Test if 'su' is present on the device + SU_TEST_OUT=`$ADB shell su -c "echo foo" 2>&1 | sed 's/\r$//'` + if [ $? != 0 -o "$SU_TEST_OUT" != "foo" ]; then + echo "ERROR: Cannot use 'su -c':" + echo "$ adb shell su -c \"echo foo\"" + echo $SU_TEST_OUT + echo "Check that 'su' binary is correctly installed on the device or omit" + echo " --use-su flag" + exit 1 + fi +fi + +echo '>> Remounting /system rw' +adb_wait_for_device +adb_root +adb_wait_for_device +adb_remount +adb_wait_for_device + +get_device_arch ARCH ARCH64 +echo "Target architecture: $ARCH" +ASAN_RT="libclang_rt.asan-$ARCH-android.so" +if [[ -n $ARCH64 ]]; then + echo "Target architecture: $ARCH64" + ASAN_RT64="libclang_rt.asan-$ARCH64-android.so" +fi + +if [[ x$revert == xyes ]]; then + echo '>> Uninstalling ASan' + + if ! adb_shell ls -l /system/bin/app_process | grep -o '\->.*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 + elif ! adb_shell ls -l /system/bin/app_process64.real | grep -o 'No such file or directory' >&/dev/null; then + # 64-bit installation. + adb_shell mv /system/bin/app_process32.real /system/bin/app_process32 + adb_shell mv /system/bin/app_process64.real /system/bin/app_process64 + adb_shell rm /system/bin/asanwrapper + adb_shell rm /system/bin/asanwrapper64 + else + # 32-bit installation. + adb_shell rm /system/bin/app_process.wrap + adb_shell rm /system/bin/asanwrapper + 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 + adb_shell start + + # Remove the library on the last step to give a chance to the 'su' binary to + # be executed without problem. + adb_shell rm /system/lib/$ASAN_RT + + echo '>> Done' + exit 0 +fi + +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, ../lib/asan, ../lib/linux, + # ../lib/clang/$VERSION/lib/linux, and ../lib64/clang/$VERSION/lib/linux. + P=$(ls "$HERE"/../lib/"$ASAN_RT" \ + "$HERE"/../lib/asan/"$ASAN_RT" \ + "$HERE"/../lib/linux/"$ASAN_RT" \ + "$HERE"/../lib/clang/*/lib/linux/"$ASAN_RT" \ + "$HERE"/../lib64/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 + +if [[ -n "$ASAN_RT64" ]]; then + if [[ -z "$ASAN_RT_PATH" || ! -f "$ASAN_RT_PATH/$ASAN_RT64" ]]; then + echo ">> ASan runtime library not found" + exit 1 + fi +fi + +TMPDIRBASE=$(mktemp -d) +TMPDIROLD="$TMPDIRBASE/old" +TMPDIR="$TMPDIRBASE/new" +mkdir "$TMPDIROLD" + +RELEASE=$(adb_shell getprop ro.build.version.release) +PRE_L=0 +if echo "$RELEASE" | grep '^4\.' >&/dev/null; then + PRE_L=1 +fi + +if ! adb_shell ls -l /system/bin/app_process | grep -o '\->.*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' +if [[ -n "$ASAN_RT64" ]]; then + adb_pull /system/lib/"$ASAN_RT" "$TMPDIROLD" || true + adb_pull /system/lib64/"$ASAN_RT64" "$TMPDIROLD" || true + adb_pull /system/bin/app_process32 "$TMPDIROLD" || true + adb_pull /system/bin/app_process32.real "$TMPDIROLD" || true + adb_pull /system/bin/app_process64 "$TMPDIROLD" || true + adb_pull /system/bin/app_process64.real "$TMPDIROLD" || true + adb_pull /system/bin/asanwrapper "$TMPDIROLD" || true + adb_pull /system/bin/asanwrapper64 "$TMPDIROLD" || true +else + adb_pull /system/lib/"$ASAN_RT" "$TMPDIROLD" || true + adb_pull /system/bin/app_process32 "$TMPDIROLD" || true + adb_pull /system/bin/app_process.wrap "$TMPDIROLD" || true + adb_pull /system/bin/asanwrapper "$TMPDIROLD" || true +fi +cp -r "$TMPDIROLD" "$TMPDIR" + +if [[ -f "$TMPDIR/app_process.wrap" || -f "$TMPDIR/app_process64.real" ]]; then + echo ">> Previous installation detected" +else + echo ">> New installation" +fi + +echo '>> Generating wrappers' + +cp "$ASAN_RT_PATH/$ASAN_RT" "$TMPDIR/" +if [[ -n "$ASAN_RT64" ]]; then + cp "$ASAN_RT_PATH/$ASAN_RT64" "$TMPDIR/" +fi + +# FIXME: alloc_dealloc_mismatch=0 prevents a failure in libdvm startup, +# which may or may not be a real bug (probably not). +ASAN_OPTIONS=start_deactivated=1,alloc_dealloc_mismatch=0,malloc_context_size=0 + +function generate_zygote_wrapper { # from, to, asan_rt + local _from=$1 + local _to=$2 + local _asan_rt=$3 + cat <<EOF >"$TMPDIR/$_from" +#!/system/bin/sh-from-zygote +ASAN_OPTIONS=$ASAN_OPTIONS \\ +ASAN_ACTIVATION_OPTIONS=include_if_exists=/data/local/tmp/asan.options.%b \\ +LD_PRELOAD=\$LD_PRELOAD:$_asan_rt \\ +exec $_to \$@ + +EOF +} + +# On Android-L not allowing user segv handler breaks some applications. +if [[ PRE_L -eq 0 ]]; then + ASAN_OPTIONS="$ASAN_OPTIONS,allow_user_segv_handler=1" +fi + +if [[ x$extra_options != x ]] ; then + ASAN_OPTIONS="$ASAN_OPTIONS,$extra_options" +fi + +# Zygote wrapper. +if [[ -f "$TMPDIR/app_process64" ]]; then + # A 64-bit device. + if [[ ! -f "$TMPDIR/app_process64.real" ]]; then + # New installation. + mv "$TMPDIR/app_process32" "$TMPDIR/app_process32.real" + mv "$TMPDIR/app_process64" "$TMPDIR/app_process64.real" + fi + generate_zygote_wrapper "app_process32" "/system/bin/app_process32.real" "$ASAN_RT" + generate_zygote_wrapper "app_process64" "/system/bin/app_process64.real" "$ASAN_RT64" +else + # A 32-bit device. + generate_zygote_wrapper "app_process.wrap" "/system/bin/app_process32" "$ASAN_RT" +fi + +# General command-line tool wrapper (use for anything that's not started as +# zygote). +cat <<EOF >"$TMPDIR/asanwrapper" +#!/system/bin/sh +LD_PRELOAD=$ASAN_RT \\ +exec \$@ + +EOF + +if [[ -n "$ASAN_RT64" ]]; then + cat <<EOF >"$TMPDIR/asanwrapper64" +#!/system/bin/sh +LD_PRELOAD=$ASAN_RT64 \\ +exec \$@ + +EOF +fi + +function install { # from, to, chmod, chcon + local _from=$1 + local _to=$2 + local _mode=$3 + local _context=$4 + local _basename="$(basename "$_from")" + echo "Installing $_to/$_basename $_mode $_context" + adb_push "$_from" "$_to/$_basename" + adb_shell chown root.shell "$_to/$_basename" + if [[ -n "$_mode" ]]; then + adb_shell chmod "$_mode" "$_to/$_basename" + fi + if [[ -n "$_context" ]]; then + adb_shell chcon "$_context" "$_to/$_basename" + fi +} + +if ! ( cd "$TMPDIRBASE" && diff -qr old/ new/ ) ; then + # Make SELinux happy by keeping app_process wrapper and the shell + # it runs on in zygote domain. + ENFORCING=0 + if adb_shell getenforce | grep Enforcing >/dev/null; then + # Sometimes shell is not allowed to change file contexts. + # Temporarily switch to permissive. + ENFORCING=1 + adb_shell setenforce 0 + fi + + if [[ PRE_L -eq 1 ]]; then + CTX=u:object_r:system_file:s0 + else + CTX=u:object_r:zygote_exec:s0 + fi + + echo '>> Pushing files to the device' + + if [[ -n "$ASAN_RT64" ]]; then + install "$TMPDIR/$ASAN_RT" /system/lib 644 + install "$TMPDIR/$ASAN_RT64" /system/lib64 644 + install "$TMPDIR/app_process32" /system/bin 755 $CTX + install "$TMPDIR/app_process32.real" /system/bin 755 $CTX + install "$TMPDIR/app_process64" /system/bin 755 $CTX + install "$TMPDIR/app_process64.real" /system/bin 755 $CTX + install "$TMPDIR/asanwrapper" /system/bin 755 + install "$TMPDIR/asanwrapper64" /system/bin 755 + else + install "$TMPDIR/$ASAN_RT" /system/lib 644 + install "$TMPDIR/app_process32" /system/bin 755 $CTX + install "$TMPDIR/app_process.wrap" /system/bin 755 $CTX + install "$TMPDIR/asanwrapper" /system/bin 755 $CTX + + adb_shell rm /system/bin/app_process + adb_shell ln -s /system/bin/app_process.wrap /system/bin/app_process + fi + + adb_shell cp /system/bin/sh /system/bin/sh-from-zygote + adb_shell chcon $CTX /system/bin/sh-from-zygote + + if [ $ENFORCING == 1 ]; then + adb_shell setenforce 1 + fi + + echo '>> Restarting shell (asynchronous)' + adb_shell stop + adb_shell start + + echo '>> Please wait until the device restarts' +else + echo '>> Device is up to date' +fi + +rm -r "$TMPDIRBASE" diff --git a/clang-2690385/bin/clang b/clang-2690385/bin/clang Binary files differnew file mode 100755 index 00000000..01c6dcd4 --- /dev/null +++ b/clang-2690385/bin/clang diff --git a/clang-2690385/bin/clang++ b/clang-2690385/bin/clang++ Binary files differnew file mode 100755 index 00000000..01c6dcd4 --- /dev/null +++ b/clang-2690385/bin/clang++ diff --git a/clang-2690385/bin/llvm-as b/clang-2690385/bin/llvm-as Binary files differnew file mode 100755 index 00000000..52af5c17 --- /dev/null +++ b/clang-2690385/bin/llvm-as diff --git a/clang-2690385/bin/llvm-dis b/clang-2690385/bin/llvm-dis Binary files differnew file mode 100755 index 00000000..aa1c9059 --- /dev/null +++ b/clang-2690385/bin/llvm-dis diff --git a/clang-2690385/bin/llvm-link b/clang-2690385/bin/llvm-link Binary files differnew file mode 100755 index 00000000..0527b6c8 --- /dev/null +++ b/clang-2690385/bin/llvm-link diff --git a/clang-2690385/bin/mips/analyzer b/clang-2690385/bin/mips/analyzer new file mode 100644 index 00000000..c13dbc72 --- /dev/null +++ b/clang-2690385/bin/mips/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target mipsel-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/mips/analyzer++ b/clang-2690385/bin/mips/analyzer++ new file mode 100644 index 00000000..61a59ca6 --- /dev/null +++ b/clang-2690385/bin/mips/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target mipsel-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/mips64/analyzer b/clang-2690385/bin/mips64/analyzer new file mode 100644 index 00000000..3e276cee --- /dev/null +++ b/clang-2690385/bin/mips64/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target mips64el-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/mips64/analyzer++ b/clang-2690385/bin/mips64/analyzer++ new file mode 100644 index 00000000..b08deeb3 --- /dev/null +++ b/clang-2690385/bin/mips64/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target mips64el-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/x86/analyzer b/clang-2690385/bin/x86/analyzer new file mode 100644 index 00000000..bfcbfec1 --- /dev/null +++ b/clang-2690385/bin/x86/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target i686-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/x86/analyzer++ b/clang-2690385/bin/x86/analyzer++ new file mode 100644 index 00000000..fca62dfd --- /dev/null +++ b/clang-2690385/bin/x86/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target i686-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi diff --git a/clang-2690385/bin/x86_64/analyzer b/clang-2690385/bin/x86_64/analyzer new file mode 100644 index 00000000..e7db4439 --- /dev/null +++ b/clang-2690385/bin/x86_64/analyzer @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang -target x86_64-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang "$@" +fi diff --git a/clang-2690385/bin/x86_64/analyzer++ b/clang-2690385/bin/x86_64/analyzer++ new file mode 100644 index 00000000..ed8d15ba --- /dev/null +++ b/clang-2690385/bin/x86_64/analyzer++ @@ -0,0 +1,7 @@ +#!/bin/bash +if [ "$1" != "-cc1" ]; then + `dirname $0`/../clang++ -target x86_64-none-linux-android "$@" +else + # target/triple already spelled out. + `dirname $0`/../clang++ "$@" +fi |