| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 1 | #!/bin/bash | 
|  | 2 |  | 
|  | 3 | # This script generates coverage for bionic. | 
|  | 4 | # | 
|  | 5 | # Prereqs: Coverage-enabled build. | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 6 | # | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 7 | #   $ lunch <target> | 
|  | 8 | #   $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true | 
|  | 9 | #   $ m NATIVE_COVERAGE_PATHS="bionic" CLANG_COVERAGE=true bionic-unit-tests | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 10 | # | 
|  | 11 | # Do *NOT* then rebuild at the top level, or you'll clobber the | 
|  | 12 | # coverage-enabled libc! | 
|  | 13 | # | 
|  | 14 | # Flash image and set $ANDROID_SERIAL. | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 15 | # | 
|  | 16 | # Usage: $ bionic/build/coverage.sh | 
|  | 17 | # Output: HTML report is generated to /tmp/bionic-coverage/html/index.html | 
|  | 18 | # | 
|  | 19 |  | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 20 | eval "$(cd ${ANDROID_BUILD_TOP}; build/soong/soong_ui.bash --dumpvars-mode --vars="TARGET_ARCH TARGET_ARCH_VARIANT")" | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 21 |  | 
|  | 22 | LLVM_PROFDATA=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-profdata | 
|  | 23 | LLVM_COV=${ANDROID_BUILD_TOP}/prebuilts/clang/host/linux-x86/llvm-binutils-stable/llvm-cov | 
|  | 24 |  | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 25 | DEVICE_TEST_DIR32=/data/local/tmp/bionic-coverage32 | 
|  | 26 | DEVICE_TEST_DIR64=/data/local/tmp/bionic-coverage64 | 
|  | 27 | DEVICE_PROF_DIR=/data/local/tmp/bionic-profraw | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 28 | HOST_PROFDATA_DIR=/tmp/bionic-coverage | 
|  | 29 |  | 
|  | 30 | # Run bionic-unit-tests | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 31 | adb shell rm -rf ${DEVICE_TEST_DIR32} ${DEVICE_TEST_DIR64} ${DEVICE_PROF_DIR} | 
|  | 32 | adb shell mkdir ${DEVICE_TEST_DIR32} ${DEVICE_TEST_DIR64} ${DEVICE_PROF_DIR} | 
|  | 33 | adb push $OUT/data/nativetest/bionic-loader-test-libs ${DEVICE_TEST_DIR32} | 
|  | 34 | adb push $OUT/data/nativetest/bionic-unit-tests ${DEVICE_TEST_DIR32} | 
|  | 35 | adb push $OUT/data/nativetest64/bionic-loader-test-libs ${DEVICE_TEST_DIR64} | 
|  | 36 | adb push $OUT/data/nativetest64/bionic-unit-tests ${DEVICE_TEST_DIR64} | 
|  | 37 | adb shell LLVM_PROFILE_FILE=${DEVICE_PROF_DIR}/bionic-%p-%m.profraw \ | 
|  | 38 | LD_LIBRARY_PATH=${DEVICE_TEST_DIR32}/bionic-loader-test-libs \ | 
|  | 39 | ${DEVICE_TEST_DIR32}/bionic-unit-tests/bionic-unit-tests | 
|  | 40 | adb shell LLVM_PROFILE_FILE=${DEVICE_PROF_DIR}/bionic-%p-%m.profraw \ | 
|  | 41 | LD_LIBRARY_PATH=${DEVICE_TEST_DIR64}/bionic-loader-test-libs \ | 
|  | 42 | ${DEVICE_TEST_DIR64}/bionic-unit-tests/bionic-unit-tests | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 43 |  | 
|  | 44 | # Pull coverage files and post-process | 
|  | 45 | rm -rf ${HOST_PROFDATA_DIR} | 
|  | 46 | mkdir ${HOST_PROFDATA_DIR} | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 47 | adb pull ${DEVICE_PROF_DIR} ${HOST_PROFDATA_DIR}/profraws | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 48 |  | 
|  | 49 | ${LLVM_PROFDATA} merge \ | 
|  | 50 | --output=${HOST_PROFDATA_DIR}/bionic.profdata \ | 
|  | 51 | ${HOST_PROFDATA_DIR}/profraws/*.profraw | 
|  | 52 |  | 
|  | 53 | ${LLVM_COV} show \ | 
|  | 54 | --instr-profile=${HOST_PROFDATA_DIR}/bionic.profdata \ | 
|  | 55 | --format=html \ | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 56 | $OUT/symbols/apex/com.android.runtime/lib64/bionic/libc.so \ | 
| Elliott Hughes | f762275 | 2020-08-12 10:25:45 -0700 | [diff] [blame] | 57 | --object=$OUT/symbols/apex/com.android.runtime/lib64/bionic/libm.so \ | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 58 | --object=$OUT/symbols/data/nativetest64/bionic-unit-tests/bionic-unit-tests \ | 
|  | 59 | --object=$OUT/symbols/apex/com.android.runtime/lib/bionic/libc.so \ | 
| Elliott Hughes | f762275 | 2020-08-12 10:25:45 -0700 | [diff] [blame] | 60 | --object=$OUT/symbols/apex/com.android.runtime/lib/bionic/libm.so \ | 
| Elliott Hughes | 7f35443 | 2020-08-07 15:25:27 -0700 | [diff] [blame] | 61 | --object=$OUT/symbols/data/nativetest/bionic-unit-tests/bionic-unit-tests \ | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 62 | /proc/self/cwd/bionic/libc \ | 
| Elliott Hughes | f762275 | 2020-08-12 10:25:45 -0700 | [diff] [blame] | 63 | /proc/self/cwd/bionic/libm \ | 
| Pirama Arumuga Nainar | abf4032 | 2020-08-05 15:47:01 -0700 | [diff] [blame] | 64 | --output-dir=${HOST_PROFDATA_DIR}/html \ | 
|  | 65 | --show-region-summary=false |