1cb93a386Sopenharmony_ci#!/bin/bash
2cb93a386Sopenharmony_ci#
3cb93a386Sopenharmony_ci# android_gdbserver: Pushes gdbserver. Starts debugging environment.
4cb93a386Sopenharmony_ci
5cb93a386Sopenharmony_ciSCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6cb93a386Sopenharmony_cisource $SCRIPT_DIR/utils/android_setup.sh
7cb93a386Sopenharmony_cisource $SCRIPT_DIR/utils/setup_adb.sh
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ciAPP_NAME=${APP_ARGS[0]}
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ciTARGET_EXE="${SKIA_OUT}/${APP_NAME}"
12cb93a386Sopenharmony_ciif [ ! -f "$TARGET_EXE" ]
13cb93a386Sopenharmony_cithen
14cb93a386Sopenharmony_ci  echo "Unable to find ${TARGET_EXE}."
15cb93a386Sopenharmony_ci  exit 1
16cb93a386Sopenharmony_cifi
17cb93a386Sopenharmony_ci
18cb93a386Sopenharmony_ciIS_64_BIT="false"
19cb93a386Sopenharmony_ciGN_TARGET_CPU=$(gn args --list=target_cpu $SKIA_OUT                     \
20cb93a386Sopenharmony_ci               | grep "Current value = "                                \
21cb93a386Sopenharmony_ci               | sed -e s/"Current value = "// -e s/\"//g -e s/" "//g)
22cb93a386Sopenharmony_ciif [[ $GN_TARGET_CPU == *64* ]]; then
23cb93a386Sopenharmony_ci  IS_64_BIT="true"
24cb93a386Sopenharmony_cifi
25cb93a386Sopenharmony_ci
26cb93a386Sopenharmony_ci# We need the debug symbols from these files
27cb93a386Sopenharmony_ciGDB_TMP_DIR=$SKIA_OUT/android_gdb_tmp
28cb93a386Sopenharmony_cimkdir -p $GDB_TMP_DIR
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_ciecho "Copying symbol files"
31cb93a386Sopenharmony_ciif [[ $IS_64_BIT == "true" ]]; then
32cb93a386Sopenharmony_ci  SYSTEM_LIBRARY_PATH=/system/lib64
33cb93a386Sopenharmony_ci  echo "64 bit!"
34cb93a386Sopenharmony_cielse
35cb93a386Sopenharmony_ci  SYSTEM_LIBRARY_PATH=/system/lib
36cb93a386Sopenharmony_cifi
37cb93a386Sopenharmony_cifor library_file in \
38cb93a386Sopenharmony_ci    libc.so \
39cb93a386Sopenharmony_ci    libc++.so \
40cb93a386Sopenharmony_ci    libstdc++.so \
41cb93a386Sopenharmony_ci    libm.so \
42cb93a386Sopenharmony_ci    liblog.so \
43cb93a386Sopenharmony_ci    libz.so \
44cb93a386Sopenharmony_ci    libsigchain.so \
45cb93a386Sopenharmony_ci    libcutils.so \
46cb93a386Sopenharmony_ci    libunwind.so \
47cb93a386Sopenharmony_ci    libbacktrace.so \
48cb93a386Sopenharmony_ci    libutils.so \
49cb93a386Sopenharmony_ci    libEGL.so \
50cb93a386Sopenharmony_ci    libGLESv2.so \
51cb93a386Sopenharmony_ci    ; do
52cb93a386Sopenharmony_ci    ANDROID_LS=`$ADB $DEVICE_SERIAL shell -x ls -ld ${SYSTEM_LIBRARY_PATH}/${library_file}`
53cb93a386Sopenharmony_ci    if [ "${ANDROID_LS:0:1}" == "-" ]; then
54cb93a386Sopenharmony_ci      adb_pull_if_needed "${SYSTEM_LIBRARY_PATH}/${library_file}" $GDB_TMP_DIR
55cb93a386Sopenharmony_ci    fi
56cb93a386Sopenharmony_cidone
57cb93a386Sopenharmony_ci
58cb93a386Sopenharmony_ciif [[ $IS_64_BIT == "true" ]]; then
59cb93a386Sopenharmony_ci  adb_pull_if_needed /system/bin/linker64 $GDB_TMP_DIR
60cb93a386Sopenharmony_cielse
61cb93a386Sopenharmony_ci  adb_pull_if_needed /system/bin/linker $GDB_TMP_DIR
62cb93a386Sopenharmony_cifi
63cb93a386Sopenharmony_ci
64cb93a386Sopenharmony_ciecho "Pushing app..."
65cb93a386Sopenharmony_cicp "$TARGET_EXE" $GDB_TMP_DIR
66cb93a386Sopenharmony_ciadb_push_if_needed "${TARGET_EXE}" /data/local/tmp
67cb93a386Sopenharmony_ci
68cb93a386Sopenharmony_ciecho "Pushing gdbserver..."
69cb93a386Sopenharmony_ciadb_push_if_needed $SKIA_OUT/gdbserver /data/local/tmp
70cb93a386Sopenharmony_ci
71cb93a386Sopenharmony_ciecho "Setting up port forward"
72cb93a386Sopenharmony_ci$ADB forward "tcp:5039" "tcp:5039"
73cb93a386Sopenharmony_ci
74cb93a386Sopenharmony_ci# Kill all previous instances of gdbserver and the app to rid all port overriding errors.
75cb93a386Sopenharmony_ciecho "Killing any running Skia processes."
76cb93a386Sopenharmony_ciset +e
77cb93a386Sopenharmony_ci$ADB shell ps | grep gdbserver | awk '{print $2}' | xargs $ADB shell kill 2> /dev/null
78cb93a386Sopenharmony_ci$ADB shell ps | grep ${APP_NAME} | awk '{print $2}' | xargs $ADB shell kill 2> /dev/null
79cb93a386Sopenharmony_ciset -e
80cb93a386Sopenharmony_ci
81cb93a386Sopenharmony_ci# Starting up gdbserver in android shell
82cb93a386Sopenharmony_ciecho "Starting gdbserver with command: ${APP_ARGS[@]}"
83cb93a386Sopenharmony_ci$ADB shell /data/local/tmp/gdbserver :5039 /data/local/tmp/${APP_ARGS[@]} &
84