diff options
author | Justin DeMartino <jjdemartino@google.com> | 2020-09-21 13:23:58 -0700 |
---|---|---|
committer | Justin DeMartino <jjdemartino@google.com> | 2020-09-21 13:23:58 -0700 |
commit | 7e4fe6a28b718ab97c08811566238af2893ca65b (patch) | |
tree | 5413a5ec890b5a1ac4fbbe4548b5014e41a2591b /build/coverage.sh | |
parent | dcdcb3fa15004669823a3a118189d9d72ff30852 (diff) | |
parent | ab08b955a34423d53b28a6210e7530e67241af4a (diff) |
Merge SP1A.200921.001
Change-Id: Id2ab019914bb555dadf52c46b8403c0d5fb3c20a
Diffstat (limited to 'build/coverage.sh')
-rwxr-xr-x | build/coverage.sh | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/build/coverage.sh b/build/coverage.sh new file mode 100755 index 000000000..13fabc5d0 --- /dev/null +++ b/build/coverage.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# This script generates coverage for bionic. +# +# Prereqs: Coverage-enabled build. +# +# $ lunch <target> +# $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true +# $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true bionic-unit-tests +# +# Do *NOT* then rebuild at the top level, or you'll clobber the +# coverage-enabled libc! +# +# Flash image and set $ANDROID_SERIAL. +# +# Usage: $ bionic/build/coverage.sh +# Output: HTML report is generated to /tmp/bionic-coverage/html/index.html +# + +eval "$(cd ${ANDROID_BUILD_TOP}; build/soong/soong_ui.bash --dumpvars-mode --vars="TARGET_ARCH TARGET_ARCH_VARIANT")" + +LLVM_PROFDATA=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-profdata +LLVM_COV=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-cov + +DEVICE_TEST_DIR32=/data/local/tmp/bionic-coverage32 +DEVICE_TEST_DIR64=/data/local/tmp/bionic-coverage64 +DEVICE_PROF_DIR=/data/local/tmp/bionic-profraw +HOST_PROFDATA_DIR=/tmp/bionic-coverage + +# Run bionic-unit-tests +adb shell rm -rf ${DEVICE_TEST_DIR32} ${DEVICE_TEST_DIR64} ${DEVICE_PROF_DIR} +adb shell mkdir ${DEVICE_TEST_DIR32} ${DEVICE_TEST_DIR64} ${DEVICE_PROF_DIR} +adb push $OUT/data/nativetest/bionic-loader-test-libs ${DEVICE_TEST_DIR32} +adb push $OUT/data/nativetest/bionic-unit-tests ${DEVICE_TEST_DIR32} +adb push $OUT/data/nativetest64/bionic-loader-test-libs ${DEVICE_TEST_DIR64} +adb push $OUT/data/nativetest64/bionic-unit-tests ${DEVICE_TEST_DIR64} +adb shell LLVM_PROFILE_FILE=${DEVICE_PROF_DIR}/bionic-%p-%m.profraw \ + LD_LIBRARY_PATH=${DEVICE_TEST_DIR32}/bionic-loader-test-libs \ + ${DEVICE_TEST_DIR32}/bionic-unit-tests/bionic-unit-tests +adb shell LLVM_PROFILE_FILE=${DEVICE_PROF_DIR}/bionic-%p-%m.profraw \ + LD_LIBRARY_PATH=${DEVICE_TEST_DIR64}/bionic-loader-test-libs \ + ${DEVICE_TEST_DIR64}/bionic-unit-tests/bionic-unit-tests + +# Pull coverage files and post-process +rm -rf ${HOST_PROFDATA_DIR} +mkdir ${HOST_PROFDATA_DIR} +adb pull ${DEVICE_PROF_DIR} ${HOST_PROFDATA_DIR}/profraws + +${LLVM_PROFDATA} merge \ + --output=${HOST_PROFDATA_DIR}/bionic.profdata \ + ${HOST_PROFDATA_DIR}/profraws/*.profraw + +${LLVM_COV} show \ + --instr-profile=${HOST_PROFDATA_DIR}/bionic.profdata \ + --format=html \ + $OUT/symbols/apex/com.android.runtime/lib64/bionic/libc.so \ + --object=$OUT/symbols/apex/com.android.runtime/lib64/bionic/libm.so \ + --object=$OUT/symbols/data/nativetest64/bionic-unit-tests/bionic-unit-tests \ + --object=$OUT/symbols/apex/com.android.runtime/lib/bionic/libc.so \ + --object=$OUT/symbols/apex/com.android.runtime/lib/bionic/libm.so \ + --object=$OUT/symbols/data/nativetest/bionic-unit-tests/bionic-unit-tests \ + /proc/self/cwd/bionic/libc \ + /proc/self/cwd/bionic/libm \ + --output-dir=${HOST_PROFDATA_DIR}/html \ + --show-region-summary=false |