diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-02-21 07:11:41 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2017-02-21 07:11:41 +0000 |
commit | bd0888f13ebf0eb98bd756edc31ce9772ae4f265 (patch) | |
tree | 875271725d35cd6ad8ec9879ac21bb22be1efc62 | |
parent | ed0b91a25ca0116ee02d02d463c61ce5061b11dc (diff) |
perf-buildid-cache.sh: New script to build perf's buildid cache
... from perf's *.data files. It now appears that we are not going
to use this script, and instead generate per-run buildid cache
using perf-record. Still, this might come handy one day.
Change-Id: Ib0b17bfa38762d4845875bff49c1e36df8479815
-rwxr-xr-x | perf-buildid-cache.sh | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/perf-buildid-cache.sh b/perf-buildid-cache.sh new file mode 100755 index 0000000..9b52ab6 --- /dev/null +++ b/perf-buildid-cache.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e + +missing=$(mktemp /tmp/perf-buildid-missing.XXXXXX) +trap "rm -rf $missing" EXIT + +cachedir="" +verbose="" + +OPTS="`getopt -o vd: -l cachedir:,verbose -- "$@"`" +while test $# -gt 0; do + case $1 in + --cachedir|-d) cachedir="$2"; shift ;; + --verbose|-v) verbose="set -x" ;; + --) shift; break ;; + esac + shift +done + +$verbose + +if [ x"$cachedir" = x"" ]; then + echo "ERROR: No --cachedir option" + exit 1 +fi + +for data in "$@"; do + perf --buildid-dir $cachedir buildid-cache --missing $data > $missing + while read line; do + build_id=$(echo $line | cut -d " " -f 1) + file=$(echo $line | cut -d " " -f 2) + if [ x"$file" = x"[kernel.kallsyms]" ]; then + mkdir -p $cachedir/[kernel.kallsyms]/ + cp /proc/kallsyms $cachedir/[kernel.kallsyms]/$build_id + chmod +x $cachedir/[kernel.kallsyms]/$build_id + mkdir -p $cachedir/.build-id/${build_id:0:2} + ln -s ../../[kernel.kallsyms]/$build_id $cachedir/.build-id/${build_id:0:2}/${build_id:2} + else + perf --buildid-dir $cachedir buildid-cache -a $file + fi + done < $missing +done |