diff options
Diffstat (limited to 'gprofng/src/Disasm.h')
-rw-r--r-- | gprofng/src/Disasm.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/gprofng/src/Disasm.h b/gprofng/src/Disasm.h new file mode 100644 index 00000000000..c1530cc6d26 --- /dev/null +++ b/gprofng/src/Disasm.h @@ -0,0 +1,66 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + Contributed by Oracle. + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _DISASM_H +#define _DISASM_H + +#include "disassemble.h" + +class Data_window; +class Stabs; +class StringBuilder; +enum Platform_t; + +class Disasm +{ +public: + Disasm (char *fname); + Disasm (Platform_t _platform, Stabs *_stabs); + ~Disasm (); + void remove_disasm_hndl (void *hndl); + void *get_disasm_hndl (uint64_t vaddr, uint64_t f_offset, size_t size); + int get_instr_size (uint64_t vaddr, void *hndl); + void set_addr_end (uint64_t end_address); + + void + set_hex_visible (int set) + { + hex_visible = set; + } + + char *get_disasm (uint64_t inst_address, uint64_t end_address, + uint64_t start_address, uint64_t f_offset, int64_t &inst_size); + void set_img_name (char *fname); // Only for dynfunc + + StringBuilder *dis_str; + +private: + void disasm_open (); + + disassemble_info dis_info; + Data_window *dwin; + Stabs *stabs, *my_stabs; + Platform_t platform; + char addr_fmt[32]; + int hex_visible; + bool need_swap_endian; +}; + +#endif /* _DISASM_H */ |