Add data type import for Ghidra

This commit is contained in:
KeybadeBlox 2026-02-04 19:52:12 -05:00
parent 30f8a5879e
commit 63002e0f08
9 changed files with 233 additions and 31 deletions

View file

@ -1,50 +0,0 @@
#!/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 location namespace name type; do # Iterate 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
# Add namespace prefix if not in global namespace
if [ "$namespace" = '"Global"' ]; then namespace_out=
else
namespace_out=${namespace#'"'}
namespace_out=${namespace_out%'"'}::
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'\
"$namespace_out$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 "$@"

File diff suppressed because it is too large Load diff