1b8e80941Smrg#!/bin/bash
2b8e80941Smrg# -*- mode: sh -*-
3b8e80941Smrg
4b8e80941Smrgfunction show_help() {
5b8e80941Smrg    cat <<EOF
6b8e80941SmrgUsage: intel_sanitize_gpu [OPTION]... [--] COMMAND ARGUMENTS
7b8e80941Smrg
8b8e80941SmrgRun COMMAND with ARGUMENTS and verify the GPU doesn't write outside its memory
9b8e80941Smrgmapped buffers.
10b8e80941Smrg
11b8e80941Smrg  -g, --gdb          Launch GDB
12b8e80941Smrg
13b8e80941Smrg      --help         Display this help message and exit
14b8e80941Smrg
15b8e80941SmrgEOF
16b8e80941Smrg
17b8e80941Smrg    exit 0
18b8e80941Smrg}
19b8e80941Smrg
20b8e80941Smrggdb=""
21b8e80941Smrg
22b8e80941Smrgwhile true; do
23b8e80941Smrg    case "$1" in
24b8e80941Smrg        --gdb)
25b8e80941Smrg            gdb=1
26b8e80941Smrg            shift
27b8e80941Smrg            ;;
28b8e80941Smrg        -g)
29b8e80941Smrg            gdb=1
30b8e80941Smrg            shift
31b8e80941Smrg            ;;
32b8e80941Smrg        --help)
33b8e80941Smrg            show_help
34b8e80941Smrg            ;;
35b8e80941Smrg        --)
36b8e80941Smrg            shift
37b8e80941Smrg            break
38b8e80941Smrg            ;;
39b8e80941Smrg        -*)
40b8e80941Smrg            echo "intel_sanitize_gpu: invalid option: $1"
41b8e80941Smrg            echo
42b8e80941Smrg            show_help
43b8e80941Smrg            ;;
44b8e80941Smrg        *)
45b8e80941Smrg            break
46b8e80941Smrg            ;;
47b8e80941Smrg    esac
48b8e80941Smrgdone
49b8e80941Smrg
50b8e80941Smrg[ -z $1 ] && show_help
51b8e80941Smrg
52b8e80941Smrgld_preload="@install_libexecdir@/libintel_sanitize_gpu.so${LD_PRELOAD:+:$LD_PRELOAD}"
53b8e80941Smrgif [ -z $gdb ]; then
54b8e80941Smrg    LD_PRELOAD=$ld_preload exec "$@"
55b8e80941Smrgelse
56b8e80941Smrg    gdb -iex "set exec-wrapper env LD_PRELOAD=$ld_preload" --args $@
57b8e80941Smrgfi
58