aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-02-21 07:11:41 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2017-02-21 07:11:41 +0000
commitbd0888f13ebf0eb98bd756edc31ce9772ae4f265 (patch)
tree875271725d35cd6ad8ec9879ac21bb22be1efc62
parented0b91a25ca0116ee02d02d463c61ce5061b11dc (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-xperf-buildid-cache.sh43
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