diff options
| author | Tillmann Karras <tilkax@gmail.com> | 2015-02-08 00:39:54 +0100 |
|---|---|---|
| committer | Tillmann Karras <tilkax@gmail.com> | 2015-02-08 00:39:54 +0100 |
| commit | fd374a7989a642a3eafc441d738f72cf5fe2d47d (patch) | |
| tree | 69640f7420cd66c2d3692f9cf7f524fed72b79b2 | |
| parent | 8f4bcf3ec33e63b02e001b7256148e6f94c95da8 (diff) | |
Tools: add disassemble script for perf
| -rwxr-xr-x | Tools/perf-disassemble.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Tools/perf-disassemble.sh b/Tools/perf-disassemble.sh new file mode 100755 index 0000000000..d338b7141e --- /dev/null +++ b/Tools/perf-disassemble.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Using this script instead of objdump enables perf to disassemble +# and annotate any JIT code (given a symbol file). +# +# To run perf without root: +# kernel.perf_event_paranoid = -1 +# To trace a process without root: +# kernel.yama.ptrace_scope = 0 +# +# Example usage: +# $ dolphin-emu -P /tmp -b -e $game +# $ perf top -p $(pidof dolphin-emu) --objdump ./Tools/perf-disassemble.sh + +flavor=att +raw=r +src= + +[[ "${@: -1}" != /tmp/perf-*.map ]] && { objdump "$@"; exit; } + +while [ "$1" ] +do + case "$1" in + -M) + flavor=$2 + shift + ;; + --start-address=*) + start="${1##--start-address=}" + ;; + --stop-address=*) + stop="${1##--stop-address=}" + ;; + --no-show-raw) + raw= + ;; + -S) + src=m + ;; + -[ldC]) + ;; + -*) + echo "Unknown parameter '$1'" + ;; + *) + ;; + esac + shift +done +gdb -q -p $(pidof dolphin-emu) -ex "set disassembly $flavor" -ex "disas /$raw$src $start,$stop" -ex q -batch |
