summaryrefslogtreecommitdiffstats
path: root/userspace/cuda/tools/ghidra_export_index.sh
blob: 3709aae56cb24345d7bccc13492fe09018d6b044 (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
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
#
# ghidra_export_index.sh - export the complete function/symbol/callgraph/
# string index of an analyzed CUDA program.
#
# Usage: ghidra_export_index.sh <project_dir> <project_name> <program> <outdir>
set -euo pipefail

HERE="$(cd "$(dirname "$0")" && pwd)"
GHIDRA_HOME="${GHIDRA_HOME:-/snap/ghidra/current/ghidra}"
ANALYZE="$GHIDRA_HOME/support/analyzeHeadless"
export GHIDRA_HEADLESS_MAXMEM="${GHIDRA_HEADLESS_MAXMEM:-12G}"

PROJECT_DIR="${1:?usage: $0 <project_dir> <project_name> <program> <outdir>}"
PROJECT_NAME="${2:?}"
PROGRAM="${3:?}"
OUTDIR="${4:?}"
mkdir -p "$OUTDIR"

"$ANALYZE" "$PROJECT_DIR" "$PROJECT_NAME" \
    -process "$PROGRAM" \
    -readOnly -noanalysis \
    -scriptPath "$HERE/ghidra" \
    -postScript ExportFunctionIndex.java "$OUTDIR"

echo "[ok] index written to $OUTDIR"