summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/push_guest_tools.sh
blob: 3a302720ec03a472c5ff33fdaeee2b2e63a196a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash
# push_guest_tools.sh - (re)build the guest-side diagnostic binaries from the
# sources kept in this directory. The guest's /tmp is wiped on boot, so run
# this after every VM start; the sources here are the persistent copies.
#
# Usage: tools/guest-diag/push_guest_tools.sh
#        (env: VM="vgpu-linux" is not needed; scripts/vgpu_vm.py talks to the
#         running VM's guest agent socket)
set -e

HERE="$(cd "$(dirname "$0")" && pwd)"
VMEXEC="$HERE/../../scripts/vgpu_vm.py"
REPO="$HERE/../.."

push_b64() {   # push_b64 <local file> <remote file>
    local b64
    b64=$(base64 -w0 "$1")
    "$VMEXEC" exec "echo '$b64' | base64 -d > '$2'" >/dev/null 2>&1
}

echo "[*] pushing sources..."
push_b64 "$HERE/ptrace_ioctl.c"  /tmp/ptio.c
push_b64 "$HERE/guest_engines.c" /tmp/ge.c
push_b64 "$HERE/rmq_probe.c"     /tmp/rmqp.c
push_b64 "$HERE/ioctl_trace.c"   /tmp/iot.c
push_b64 "$REPO/tools/test/cuda_drv_test.c" /tmp/cdt.c
push_b64 "$HERE/dumpctx.py"     /tmp/dumpctx.py
push_b64 "$HERE/trkinfo.py"     /tmp/trkinfo.py
push_b64 "$HERE/bp999.py"       /tmp/bp999.py
push_b64 "$HERE/bp999v2.py"     /tmp/bp999v2.py
push_b64 "$HERE/bpz.py"         /tmp/bpz.py
push_b64 "$HERE/bpz2.py"        /tmp/bpz2.py
push_b64 "$HERE/bpz3.py"        /tmp/bpz3.py
push_b64 "$HERE/bpz4.py"        /tmp/bpz4.py
push_b64 "$HERE/bpz5.py"        /tmp/bpz5.py
push_b64 "$HERE/bpz6.py"        /tmp/bpz6.py
push_b64 "$HERE/bpz7.py"        /tmp/bpz7.py
push_b64 "$HERE/invd.py"        /tmp/invd.py
push_b64 "$HERE/bpwait.py"      /tmp/bpwait.py
push_b64 "$HERE/ctx999.py"      /tmp/ctx999.py
push_b64 "$HERE/scanerr.py"     /tmp/scanerr.py
push_b64 "$HERE/sem_counters.py" /tmp/sem_counters.py
push_b64 "$HERE/sem_slots.py"   /tmp/sem_slots.py
push_b64 "$HERE/read_va.py"     /tmp/read_va.py
push_b64 "$HERE/guest_pmap.py"  /tmp/guest_pmap.py
push_b64 "$HERE/guest_pmap_win.py" /tmp/guest_pmap_win.py
push_b64 "$HERE/guest_pin_stream.py" /tmp/guest_pin_stream.py
push_b64 "$HERE/track_waits.sh" /tmp/track_waits.sh
push_b64 "$HERE/stack_sampler.sh" /tmp/stack_sampler.sh
push_b64 "$HERE/guest_kprobes.sh" /tmp/kprobes.sh

echo "[*] compiling in guest..."
"$VMEXEC" exec "gcc -O1 -w -o /tmp/ptio /tmp/ptio.c && \
gcc -O1 -w -o /tmp/ge /tmp/ge.c && \
gcc -O1 -w -o /tmp/rmqp /tmp/rmqp.c && \
gcc -O1 -w -o /tmp/iot /tmp/iot.c && \
gcc -O1 -o /tmp/cdt /tmp/cdt.c -ldl && echo BUILD_OK"