Complete delink workflow; separate from decomp

We can now create a fresh Ghidra project, import the JSRF executable
into it, import symbols into it, delink object files from it, and then
decompile with objdiff.  Just needs some documentation.
This commit is contained in:
KeybadeBlox 2025-12-16 22:30:49 -05:00
parent 87c56f01d6
commit 1a48d4323e
17 changed files with 1178 additions and 8 deletions

42
delink/make_symboltable.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/sh -eu
# Script to convert Ghidra symbol table CSV export data to the format used by
# the Ghidra script ImportSymbolsScript.py
main() {
if [ $# -ne 1 ]; then usage; fi
printf 'Writing symbol table to symboltable.tsv...'
>symboltable.tsv # Create/truncate output file
while IFS=, read -r name location type; do # Iterate over rows
# Determine symbol type (skip if unrecognized, e.g. header row)
if [ "$type" == '"Function"' ]; then type_out=f
elif [ "$type" == '"Data Label"' ]; then type_out=l
else continue
fi
# Strip quotes from other columns
name_out=${name#'"'} ; name_out=${name_out%'"'}
location_out=${location#'"'}; location_out=${location_out%'"'}
# Output row
printf '%s\t%s\t%s\n' "$name_out" "$location_out" "$type_out"\
>> symboltable.tsv
done < $1
printf ' done.\n'
}
usage() {
printf '%s\n'\
'Usage: make_symboltable.sh CSVFILE'\
' CSVFILE is the path of a symbol table CSV from Ghidra'\
''\
'The CSV file should have columns Name, Location, and Type. The output file'\
'will be named "symboltable.tsv".' >&2
exit 2
}
main "$@"