1/* Copyright (C) 2021 Free Software Foundation, Inc. 2 Contributed by Oracle. 3 4 This file is part of GNU Binutils. 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3, or (at your option) 9 any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, 51 Franklin Street - Fifth Floor, Boston, 19 MA 02110-1301, USA. */ 20 21#ifndef _DISASM_H 22#define _DISASM_H 23 24#include "disassemble.h" 25 26class Data_window; 27class Stabs; 28class StringBuilder; 29enum Platform_t; 30 31class Disasm 32{ 33public: 34 Disasm (char *fname); 35 Disasm (Platform_t _platform, Stabs *_stabs); 36 ~Disasm (); 37 void remove_disasm_hndl (void *hndl); 38 void *get_disasm_hndl (uint64_t vaddr, uint64_t f_offset, size_t size); 39 int get_instr_size (uint64_t vaddr, void *hndl); 40 void set_addr_end (uint64_t end_address); 41 42 void 43 set_hex_visible (int set) 44 { 45 hex_visible = set; 46 } 47 48 char *get_disasm (uint64_t inst_address, uint64_t end_address, 49 uint64_t start_address, uint64_t f_offset, int64_t &inst_size); 50 void set_img_name (char *fname); // Only for dynfunc 51 52 StringBuilder *dis_str; 53 54private: 55 void disasm_open (); 56 57 disassemble_info dis_info; 58 Data_window *dwin; 59 Stabs *stabs, *my_stabs; 60 Platform_t platform; 61 char addr_fmt[32]; 62 int hex_visible; 63 bool need_swap_endian; 64}; 65 66#endif /* _DISASM_H */ 67