blob: 5f305ce2c8036d63d17564e8573ce581ff93d7e8 [file] [log] [blame]
Pirama Arumuga Nainarabf40322020-08-05 15:47:01 -07001#!/bin/bash
2
3# This script generates coverage for bionic.
4#
5# Prereqs: Coverage-enabled build.
6# $ lunch <target>
7# $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true
8# $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true bionic-unit-tests
9# Flash image and set $ANDROID_SERIAL
10#
11# Usage: $ bionic/build/coverage.sh
12# Output: HTML report is generated to /tmp/bionic-coverage/html/index.html
13#
14
15eval "$(cd ${ANDROID_BUILD_TOP}; build/soong/soong_ui.bash --dumpvars-mode --vars="TARGET_ARCH")"
16
17LLVM_PROFDATA=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-profdata
18LLVM_COV=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-cov
19
20DEVICE_TEST_DIR=/data/local/tmp/bionic-coverage
21HOST_PROFDATA_DIR=/tmp/bionic-coverage
22
23# Run bionic-unit-tests
24adb shell rm -rf ${DEVICE_TEST_DIR}
25adb shell mkdir ${DEVICE_TEST_DIR}
26adb push $OUT/data/nativetest/bionic-loader-test-libs ${DEVICE_TEST_DIR}
27adb push $OUT/data/nativetest/bionic-unit-tests ${DEVICE_TEST_DIR}
28adb shell LLVM_PROFILE_FILE=${DEVICE_TEST_DIR}/profraws/bionic-%p-%m.profraw LD_LIBRARY_PATH=${DEVICE_TEST_DIR}/bionic-loader-test-libs ${DEVICE_TEST_DIR}/bionic-unit-tests/bionic-unit-tests
29
30# Pull coverage files and post-process
31rm -rf ${HOST_PROFDATA_DIR}
32mkdir ${HOST_PROFDATA_DIR}
33adb pull ${DEVICE_TEST_DIR}/profraws ${HOST_PROFDATA_DIR}/profraws
34
35
36${LLVM_PROFDATA} merge \
37 --output=${HOST_PROFDATA_DIR}/bionic.profdata \
38 ${HOST_PROFDATA_DIR}/profraws/*.profraw
39
40${LLVM_COV} show \
41 --instr-profile=${HOST_PROFDATA_DIR}/bionic.profdata \
42 --format=html \
43 out/soong/.intermediates/bionic/libc/libc/android_${TARGET_ARCH}_shared_cov/unstripped/libc.so \
44 --object=out/soong/.intermediates/bionic/tests/bionic-unit-tests/android_${TARGET_ARCH}_cov/unstripped/bionic-unit-tests \
45 /proc/self/cwd/bionic/libc \
46 --output-dir=${HOST_PROFDATA_DIR}/html \
47 --show-region-summary=false