1*d83cc019SAndroid Build Coastguard Worker#!/bin/bash 2*d83cc019SAndroid Build Coastguard Worker# -*- mode: sh -*- 3*d83cc019SAndroid Build Coastguard Worker 4*d83cc019SAndroid Build Coastguard Workerfunction show_help() { 5*d83cc019SAndroid Build Coastguard Worker cat <<EOF 6*d83cc019SAndroid Build Coastguard WorkerUsage: intel_aubdump [OPTION]... [--] COMMAND ARGUMENTS 7*d83cc019SAndroid Build Coastguard Worker 8*d83cc019SAndroid Build Coastguard WorkerRun COMMAND with ARGUMENTS and dump an AUB file that captures buffer 9*d83cc019SAndroid Build Coastguard Workercontents and execution of the GEM application. 10*d83cc019SAndroid Build Coastguard Worker 11*d83cc019SAndroid Build Coastguard Worker -o, --output=FILE Name of AUB file. Defaults to COMMAND.aub 12*d83cc019SAndroid Build Coastguard Worker 13*d83cc019SAndroid Build Coastguard Worker -c, --command=CMD Execute CMD and write the AUB file's content to its 14*d83cc019SAndroid Build Coastguard Worker standard input 15*d83cc019SAndroid Build Coastguard Worker 16*d83cc019SAndroid Build Coastguard Worker --device=ID Override PCI ID of the reported device 17*d83cc019SAndroid Build Coastguard Worker 18*d83cc019SAndroid Build Coastguard Worker -v Enable verbose output 19*d83cc019SAndroid Build Coastguard Worker 20*d83cc019SAndroid Build Coastguard Worker --help Display this help message and exit 21*d83cc019SAndroid Build Coastguard Worker 22*d83cc019SAndroid Build Coastguard WorkerEOF 23*d83cc019SAndroid Build Coastguard Worker 24*d83cc019SAndroid Build Coastguard Worker exit 0 25*d83cc019SAndroid Build Coastguard Worker} 26*d83cc019SAndroid Build Coastguard Worker 27*d83cc019SAndroid Build Coastguard Workerargs="" 28*d83cc019SAndroid Build Coastguard Workercommand="" 29*d83cc019SAndroid Build Coastguard Workerfile="" 30*d83cc019SAndroid Build Coastguard Worker 31*d83cc019SAndroid Build Coastguard Workerfunction add_arg() { 32*d83cc019SAndroid Build Coastguard Worker arg=$1 33*d83cc019SAndroid Build Coastguard Worker args="$args$arg\n" 34*d83cc019SAndroid Build Coastguard Worker} 35*d83cc019SAndroid Build Coastguard Worker 36*d83cc019SAndroid Build Coastguard Workerfunction build_command () { 37*d83cc019SAndroid Build Coastguard Worker command="" 38*d83cc019SAndroid Build Coastguard Worker for i in $1; do 39*d83cc019SAndroid Build Coastguard Worker if [ -z $command ]; then 40*d83cc019SAndroid Build Coastguard Worker command=$i 41*d83cc019SAndroid Build Coastguard Worker else 42*d83cc019SAndroid Build Coastguard Worker command="$command,$i" 43*d83cc019SAndroid Build Coastguard Worker fi; 44*d83cc019SAndroid Build Coastguard Worker done 45*d83cc019SAndroid Build Coastguard Worker} 46*d83cc019SAndroid Build Coastguard Worker 47*d83cc019SAndroid Build Coastguard Workerwhile true; do 48*d83cc019SAndroid Build Coastguard Worker case "$1" in 49*d83cc019SAndroid Build Coastguard Worker -o) 50*d83cc019SAndroid Build Coastguard Worker file=$2 51*d83cc019SAndroid Build Coastguard Worker add_arg "file=${file:-$(basename ${file}).aub}" 52*d83cc019SAndroid Build Coastguard Worker shift 2 53*d83cc019SAndroid Build Coastguard Worker ;; 54*d83cc019SAndroid Build Coastguard Worker -v) 55*d83cc019SAndroid Build Coastguard Worker add_arg "verbose=1" 56*d83cc019SAndroid Build Coastguard Worker shift 1 57*d83cc019SAndroid Build Coastguard Worker ;; 58*d83cc019SAndroid Build Coastguard Worker -o*) 59*d83cc019SAndroid Build Coastguard Worker file=${1##-o} 60*d83cc019SAndroid Build Coastguard Worker add_arg "file=${file:-$(basename ${file}).aub}" 61*d83cc019SAndroid Build Coastguard Worker shift 62*d83cc019SAndroid Build Coastguard Worker ;; 63*d83cc019SAndroid Build Coastguard Worker --output=*) 64*d83cc019SAndroid Build Coastguard Worker file=${1##--output=} 65*d83cc019SAndroid Build Coastguard Worker add_arg "file=${file:-$(basename ${file}).aub}" 66*d83cc019SAndroid Build Coastguard Worker shift 67*d83cc019SAndroid Build Coastguard Worker ;; 68*d83cc019SAndroid Build Coastguard Worker -c) 69*d83cc019SAndroid Build Coastguard Worker build_command "$2" 70*d83cc019SAndroid Build Coastguard Worker add_arg "command=$command" 71*d83cc019SAndroid Build Coastguard Worker shift 2 72*d83cc019SAndroid Build Coastguard Worker ;; 73*d83cc019SAndroid Build Coastguard Worker --command=*) 74*d83cc019SAndroid Build Coastguard Worker build_command "${1##--command=}" 75*d83cc019SAndroid Build Coastguard Worker add_arg "command=$command" 76*d83cc019SAndroid Build Coastguard Worker shift 77*d83cc019SAndroid Build Coastguard Worker ;; 78*d83cc019SAndroid Build Coastguard Worker --device=*) 79*d83cc019SAndroid Build Coastguard Worker add_arg "device=${1##--device=}" 80*d83cc019SAndroid Build Coastguard Worker shift 81*d83cc019SAndroid Build Coastguard Worker ;; 82*d83cc019SAndroid Build Coastguard Worker --help) 83*d83cc019SAndroid Build Coastguard Worker show_help 84*d83cc019SAndroid Build Coastguard Worker ;; 85*d83cc019SAndroid Build Coastguard Worker --) 86*d83cc019SAndroid Build Coastguard Worker shift 87*d83cc019SAndroid Build Coastguard Worker break 88*d83cc019SAndroid Build Coastguard Worker ;; 89*d83cc019SAndroid Build Coastguard Worker -*) 90*d83cc019SAndroid Build Coastguard Worker echo "intel_aubdump: invalid option: $1" 91*d83cc019SAndroid Build Coastguard Worker echo 92*d83cc019SAndroid Build Coastguard Worker show_help 93*d83cc019SAndroid Build Coastguard Worker ;; 94*d83cc019SAndroid Build Coastguard Worker *) 95*d83cc019SAndroid Build Coastguard Worker break 96*d83cc019SAndroid Build Coastguard Worker ;; 97*d83cc019SAndroid Build Coastguard Worker esac 98*d83cc019SAndroid Build Coastguard Workerdone 99*d83cc019SAndroid Build Coastguard Worker 100*d83cc019SAndroid Build Coastguard Worker[ -z $1 ] && show_help 101*d83cc019SAndroid Build Coastguard Worker 102*d83cc019SAndroid Build Coastguard Worker[ -z $file ] && [ -z $command ] && add_arg "file=intel.aub" 103*d83cc019SAndroid Build Coastguard Worker 104*d83cc019SAndroid Build Coastguard Workerprefix=@prefix@ 105*d83cc019SAndroid Build Coastguard Workerexec_prefix=@exec_prefix@ 106*d83cc019SAndroid Build Coastguard Workerlibdir=@libdir@ 107*d83cc019SAndroid Build Coastguard Worker 108*d83cc019SAndroid Build Coastguard WorkerLD_PRELOAD=${libdir}/intel_aubdump.so${LD_PPRELOAD:+:${LD_PRELOAD}} \ 109*d83cc019SAndroid Build Coastguard Worker exec -- "$@" 3<<EOF 110*d83cc019SAndroid Build Coastguard Worker`echo -e $args` 111*d83cc019SAndroid Build Coastguard WorkerEOF 112