disasm.h revision 1.6 1 1.1 christos /* Disassemble support for GDB.
2 1.6 christos Copyright (C) 2002-2016 Free Software Foundation, Inc.
3 1.1 christos
4 1.1 christos This file is part of GDB.
5 1.1 christos
6 1.1 christos This program is free software; you can redistribute it and/or modify
7 1.1 christos it under the terms of the GNU General Public License as published by
8 1.1 christos the Free Software Foundation; either version 3 of the License, or
9 1.1 christos (at your option) any later version.
10 1.1 christos
11 1.1 christos This program is distributed in the hope that it will be useful,
12 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of
13 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 1.1 christos GNU General Public License for more details.
15 1.1 christos
16 1.1 christos You should have received a copy of the GNU General Public License
17 1.1 christos along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 1.1 christos
19 1.1 christos #ifndef DISASM_H
20 1.1 christos #define DISASM_H
21 1.1 christos
22 1.3 christos #include "dis-asm.h"
23 1.3 christos
24 1.6 christos #define DISASSEMBLY_SOURCE_DEPRECATED (0x1 << 0)
25 1.1 christos #define DISASSEMBLY_RAW_INSN (0x1 << 1)
26 1.1 christos #define DISASSEMBLY_OMIT_FNAME (0x1 << 2)
27 1.1 christos #define DISASSEMBLY_FILENAME (0x1 << 3)
28 1.1 christos #define DISASSEMBLY_OMIT_PC (0x1 << 4)
29 1.6 christos #define DISASSEMBLY_SOURCE (0x1 << 5)
30 1.6 christos #define DISASSEMBLY_SPECULATIVE (0x1 << 6)
31 1.1 christos
32 1.3 christos struct gdbarch;
33 1.1 christos struct ui_out;
34 1.1 christos struct ui_file;
35 1.1 christos
36 1.6 christos /* An instruction to be disassembled. */
37 1.6 christos
38 1.6 christos struct disasm_insn
39 1.6 christos {
40 1.6 christos /* The address of the memory containing the instruction. */
41 1.6 christos CORE_ADDR addr;
42 1.6 christos
43 1.6 christos /* An optional instruction number. If non-zero, it is printed first. */
44 1.6 christos unsigned int number;
45 1.6 christos
46 1.6 christos /* True if the instruction was executed speculatively. */
47 1.6 christos unsigned int is_speculative:1;
48 1.6 christos };
49 1.6 christos
50 1.6 christos /* Prints the instruction INSN into UIOUT and returns the length of the
51 1.6 christos printed instruction in bytes. */
52 1.6 christos
53 1.6 christos extern int gdb_pretty_print_insn (struct gdbarch *gdbarch, struct ui_out *uiout,
54 1.6 christos struct disassemble_info * di,
55 1.6 christos const struct disasm_insn *insn, int flags,
56 1.6 christos struct ui_file *stb);
57 1.6 christos
58 1.3 christos /* Return a filled in disassemble_info object for use by gdb. */
59 1.3 christos
60 1.3 christos extern struct disassemble_info gdb_disassemble_info (struct gdbarch *gdbarch,
61 1.3 christos struct ui_file *file);
62 1.3 christos
63 1.1 christos extern void gdb_disassembly (struct gdbarch *gdbarch, struct ui_out *uiout,
64 1.1 christos char *file_string, int flags, int how_many,
65 1.1 christos CORE_ADDR low, CORE_ADDR high);
66 1.1 christos
67 1.1 christos /* Print the instruction at address MEMADDR in debugged memory,
68 1.1 christos on STREAM. Returns the length of the instruction, in bytes,
69 1.1 christos and, if requested, the number of branch delay slot instructions. */
70 1.1 christos
71 1.1 christos extern int gdb_print_insn (struct gdbarch *gdbarch, CORE_ADDR memaddr,
72 1.1 christos struct ui_file *stream, int *branch_delay_insns);
73 1.1 christos
74 1.1 christos /* Return the length in bytes of the instruction at address MEMADDR in
75 1.1 christos debugged memory. */
76 1.1 christos
77 1.1 christos extern int gdb_insn_length (struct gdbarch *gdbarch, CORE_ADDR memaddr);
78 1.1 christos
79 1.1 christos /* Return the length in bytes of INSN, originally at MEMADDR. MAX_LEN
80 1.1 christos is the size of the buffer containing INSN. */
81 1.1 christos
82 1.1 christos extern int gdb_buffered_insn_length (struct gdbarch *gdbarch,
83 1.1 christos const gdb_byte *insn, int max_len,
84 1.1 christos CORE_ADDR memaddr);
85 1.1 christos
86 1.1 christos #endif
87