| 1 | /* |
| 2 | * Dump disassembly as text, for processing by scripts/disas-objdump.pl. |
| 3 | * SPDX-License-Identifier: GPL-2.0-or-later |
| 4 | */ |
| 5 | |
| 6 | #include "qemu/osdep.h" |
| 7 | #include "disas-internal.h" |
| 8 | |
| 9 | |
| 10 | static int print_insn_objdump(bfd_vma pc, disassemble_info *info, |
| 11 | const char *prefix) |
| 12 | { |
| 13 | int i, n = info->buffer_length; |
| 14 | g_autofree uint8_t *buf = g_malloc(n); |
| 15 | |
| 16 | if (info->read_memory_func(pc, buf, n, info) == 0) { |
| 17 | for (i = 0; i < n; ++i) { |
| 18 | if (i % 32 == 0) { |
| 19 | info->fprintf_func(info->stream, "\n%s: ", prefix); |
| 20 | } |
| 21 | info->fprintf_func(info->stream, "%02x", buf[i]); |
| 22 | } |
| 23 | } else { |
| 24 | info->fprintf_func(info->stream, "unable to read memory"); |
| 25 | } |
| 26 | return n; |
| 27 | } |
| 28 | |
| 29 | int print_insn_od_host(bfd_vma pc, disassemble_info *info) |
| 30 | { |
| 31 | return print_insn_objdump(pc, info, "OBJD-H"); |
| 32 | } |
| 33 | |
| 34 | int print_insn_od_target(bfd_vma pc, disassemble_info *info) |
| 35 | { |
| 36 | return print_insn_objdump(pc, info, "OBJD-T"); |
| 37 | } |