tools: add disassembler helper for files .inc

We are moving the binary helpers in files .inc in contrib/loaders/
but we have no support to disassemble them for checking their
content, nor documentation to give any hint.

Add a simple script that uses objdump to directly disassemble a
file .inc
Use Cortex-M settings as default, but provide the flexibility to
reuse the script for any other target CPU.

Change-Id: I12e79580f2936b1622fb7231d9a2484a763ba72a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7347
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Antonio Borneo 2022-11-13 15:46:19 +01:00
parent 6d76a91521
commit 9dac3b247b
1 changed files with 50 additions and 0 deletions

50
tools/disassemble_inc.sh Executable file
View File

@ -0,0 +1,50 @@
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later
# Simple script to disassemble a file .inc generated by
# src/helper/bin2char.sh
# Can be useful to check the correctness of the file .inc
#
# By default it decodes ARM thumb little-endian, e.g. cortex-m.
# Set CROSS_COMPILE for other toolchains.
# Set OBJDUMP_FLAGS for different objdump flags.
#
# Usage:
# contrib/loaders/disassemble_inc.sh file.inc
default_CROSS_COMPILE="arm-none-eabi-"
default_OBJDUMP_FLAGS="-m arm -EL -M force-thumb"
if [ $# != 1 -o ! -f "$1" ]; then
echo "Usage:"
echo " $0 path/to/file.inc"
echo ""
echo "Set CROSS_COMPILE and/or OBJDUMP_FLAGS to override current default:"
echo " export CROSS_COMPILE=\"${default_CROSS_COMPILE}\""
echo " export OBJDUMP_FLAGS=\"${default_OBJDUMP_FLAGS}\""
exit 1
fi
if [ -z "${CROSS_COMPILE}" ]; then
CROSS_COMPILE="${default_CROSS_COMPILE}"
fi
if [ -z "${OBJDUMP_FLAGS}" ]; then
OBJDUMP_FLAGS="${default_OBJDUMP_FLAGS}"
fi
perl -v > /dev/null 2>&1
if [ $? != 0 ]; then
echo "Error: 'perl' interpreter not available."
exit 1
fi
tmpfile=$(mktemp --suffix=.bin)
echo "Disassemble $1:"
echo "${CROSS_COMPILE}objdump ${OBJDUMP_FLAGS} -b binary -D ${tmpfile}"
perl -e 'while (<>){while ($_=~/(0x..)/g){print chr(hex($1));}}' $1 > ${tmpfile}
${CROSS_COMPILE}objdump ${OBJDUMP_FLAGS} -b binary -D ${tmpfile}
rm ${tmpfile}