| #!/bin/bash |
| # -*- mode: sh -*- |
| |
| function show_help() { |
| cat <<EOF |
| Usage: intel_aubdump [OPTION]... [--] COMMAND ARGUMENTS |
| |
| Run COMMAND with ARGUMENTS and dump an AUB file that captures buffer |
| contents and execution of the GEM application. |
| |
| -o, --output=FILE Name of AUB file. Defaults to COMMAND.aub |
| |
| -c, --command=CMD Execute CMD and write the AUB file's content to its |
| standard input |
| |
| --device=ID Override PCI ID of the reported device |
| |
| -v Enable verbose output |
| |
| --help Display this help message and exit |
| |
| EOF |
| |
| exit 0 |
| } |
| |
| args="" |
| command="" |
| file="" |
| |
| function add_arg() { |
| arg=$1 |
| args="$args$arg\n" |
| } |
| |
| function build_command () { |
| command="" |
| for i in $1; do |
| if [ -z $command ]; then |
| command=$i |
| else |
| command="$command,$i" |
| fi; |
| done |
| } |
| |
| while true; do |
| case "$1" in |
| -o) |
| file=$2 |
| add_arg "file=${file:-$(basename ${file}).aub}" |
| shift 2 |
| ;; |
| -v) |
| add_arg "verbose=1" |
| shift 1 |
| ;; |
| -o*) |
| file=${1##-o} |
| add_arg "file=${file:-$(basename ${file}).aub}" |
| shift |
| ;; |
| --output=*) |
| file=${1##--output=} |
| add_arg "file=${file:-$(basename ${file}).aub}" |
| shift |
| ;; |
| -c) |
| build_command "$2" |
| add_arg "command=$command" |
| shift 2 |
| ;; |
| --command=*) |
| build_command "${1##--command=}" |
| add_arg "command=$command" |
| shift |
| ;; |
| --device=*) |
| add_arg "device=${1##--device=}" |
| shift |
| ;; |
| --help) |
| show_help |
| ;; |
| --) |
| shift |
| break |
| ;; |
| -*) |
| echo "intel_aubdump: invalid option: $1" |
| echo |
| show_help |
| ;; |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| [ -z $1 ] && show_help |
| |
| [ -z $file ] && [ -z $command ] && add_arg "file=intel.aub" |
| |
| prefix=@prefix@ |
| exec_prefix=@exec_prefix@ |
| libdir=@libdir@ |
| |
| LD_PRELOAD=${libdir}/intel_aubdump.so${LD_PPRELOAD:+:${LD_PRELOAD}} \ |
| exec -- "$@" 3<<EOF |
| `echo -e $args` |
| EOF |