aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2022-11-13 15:46:19 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2023-01-15 15:06:56 +0000
commit9dac3b247b43d8b91821560b7c99fbd33d736419 (patch)
tree0339fc46a0187d1da490bdd8480f80a4211589c8 /tools
parent6d76a915214f06a4960710ae171434265409a705 (diff)
downloadriscv-openocd-9dac3b247b43d8b91821560b7c99fbd33d736419.zip
riscv-openocd-9dac3b247b43d8b91821560b7c99fbd33d736419.tar.gz
riscv-openocd-9dac3b247b43d8b91821560b7c99fbd33d736419.tar.bz2
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>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/disassemble_inc.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/tools/disassemble_inc.sh b/tools/disassemble_inc.sh
new file mode 100755
index 0000000..d4b5f80
--- /dev/null
+++ b/tools/disassemble_inc.sh
@@ -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}