Home | History | Annotate | Line # | Download | only in gdb
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