diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2022-11-13 15:46:19 +0100 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2023-01-15 15:06:56 +0000 |
commit | 9dac3b247b43d8b91821560b7c99fbd33d736419 (patch) | |
tree | 0339fc46a0187d1da490bdd8480f80a4211589c8 /tools | |
parent | 6d76a915214f06a4960710ae171434265409a705 (diff) | |
download | riscv-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-x | tools/disassemble_inc.sh | 50 |
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} |