GDB (API)
|
00001 /* Dynamic architecture support for GDB, the GNU debugger. 00002 00003 Copyright (C) 1998-2013 Free Software Foundation, Inc. 00004 00005 This file is part of GDB. 00006 00007 This program is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00019 00020 #ifndef GDBARCH_UTILS_H 00021 #define GDBARCH_UTILS_H 00022 00023 struct gdbarch; 00024 struct frame_info; 00025 struct minimal_symbol; 00026 struct type; 00027 struct gdbarch_info; 00028 00029 /* An implementation of gdbarch_displaced_step_copy_insn for 00030 processors that don't need to modify the instruction before 00031 single-stepping the displaced copy. 00032 00033 Simply copy gdbarch_max_insn_length (ARCH) bytes from FROM to TO. 00034 The closure is an array of that many bytes containing the 00035 instruction's bytes, allocated with xmalloc. */ 00036 extern struct displaced_step_closure * 00037 simple_displaced_step_copy_insn (struct gdbarch *gdbarch, 00038 CORE_ADDR from, CORE_ADDR to, 00039 struct regcache *regs); 00040 00041 /* Simple implementation of gdbarch_displaced_step_free_closure: Call 00042 xfree. 00043 This is appropriate for use with simple_displaced_step_copy_insn. */ 00044 extern void 00045 simple_displaced_step_free_closure (struct gdbarch *gdbarch, 00046 struct displaced_step_closure *closure); 00047 00048 /* Default implementation of gdbarch_displaced_hw_singlestep. */ 00049 extern int 00050 default_displaced_step_hw_singlestep (struct gdbarch *, 00051 struct displaced_step_closure *); 00052 00053 /* Possible value for gdbarch_displaced_step_location: 00054 Place displaced instructions at the program's entry point, 00055 leaving space for inferior function call return breakpoints. */ 00056 extern CORE_ADDR displaced_step_at_entry_point (struct gdbarch *gdbarch); 00057 00058 /* The only possible cases for inner_than. */ 00059 extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs); 00060 extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs); 00061 00062 /* Identity functions on a CORE_ADDR. Just return the "addr". */ 00063 00064 extern CORE_ADDR core_addr_identity (struct gdbarch *gdbarch, CORE_ADDR addr); 00065 extern gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr_identity; 00066 00067 /* No-op conversion of reg to regnum. */ 00068 00069 extern int no_op_reg_to_regnum (struct gdbarch *gdbarch, int reg); 00070 00071 /* Do nothing version of elf_make_msymbol_special. */ 00072 00073 void default_elf_make_msymbol_special (asymbol *sym, 00074 struct minimal_symbol *msym); 00075 00076 /* Do nothing version of coff_make_msymbol_special. */ 00077 00078 void default_coff_make_msymbol_special (int val, struct minimal_symbol *msym); 00079 00080 /* Version of cannot_fetch_register() / cannot_store_register() that 00081 always fails. */ 00082 00083 int cannot_register_not (struct gdbarch *gdbarch, int regnum); 00084 00085 /* Legacy version of target_virtual_frame_pointer(). Assumes that 00086 there is an gdbarch_deprecated_fp_regnum and that it is the same, cooked or 00087 raw. */ 00088 00089 extern gdbarch_virtual_frame_pointer_ftype legacy_virtual_frame_pointer; 00090 00091 extern CORE_ADDR generic_skip_trampoline_code (struct frame_info *frame, 00092 CORE_ADDR pc); 00093 00094 extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch, 00095 CORE_ADDR pc); 00096 00097 extern int generic_in_solib_return_trampoline (struct gdbarch *gdbarch, 00098 CORE_ADDR pc, const char *name); 00099 00100 extern int generic_in_function_epilogue_p (struct gdbarch *gdbarch, 00101 CORE_ADDR pc); 00102 00103 /* By default, registers are not convertible. */ 00104 extern int generic_convert_register_p (struct gdbarch *gdbarch, int regnum, 00105 struct type *type); 00106 00107 extern int default_stabs_argument_has_addr (struct gdbarch *gdbarch, 00108 struct type *type); 00109 00110 extern int generic_instruction_nullified (struct gdbarch *gdbarch, 00111 struct regcache *regcache); 00112 00113 int default_remote_register_number (struct gdbarch *gdbarch, 00114 int regno); 00115 00116 /* For compatibility with older architectures, returns 00117 (LEGACY_SIM_REGNO_IGNORE) when the register doesn't have a valid 00118 name. */ 00119 00120 extern int legacy_register_sim_regno (struct gdbarch *gdbarch, int regnum); 00121 00122 /* Return the selected byte order, or BFD_ENDIAN_UNKNOWN if no byte 00123 order was explicitly selected. */ 00124 extern enum bfd_endian selected_byte_order (void); 00125 00126 /* Return the selected architecture's name, or NULL if no architecture 00127 was explicitly selected. */ 00128 extern const char *selected_architecture_name (void); 00129 00130 /* Initialize a ``struct info''. Can't use memset(0) since some 00131 default values are not zero. "fill" takes all available 00132 information and fills in any unspecified fields. */ 00133 00134 extern void gdbarch_info_init (struct gdbarch_info *info); 00135 00136 /* Similar to init, but this time fill in the blanks. Information is 00137 obtained from the global "set ..." options and explicitly 00138 initialized INFO fields. */ 00139 extern void gdbarch_info_fill (struct gdbarch_info *info); 00140 00141 /* Return the architecture for ABFD. If no suitable architecture 00142 could be find, return NULL. */ 00143 00144 extern struct gdbarch *gdbarch_from_bfd (bfd *abfd); 00145 00146 /* Return "current" architecture. If the target is running, this is the 00147 architecture of the selected frame. Otherwise, the "current" architecture 00148 defaults to the target architecture. 00149 00150 This function should normally be called solely by the command interpreter 00151 routines to determine the architecture to execute a command in. */ 00152 extern struct gdbarch *get_current_arch (void); 00153 00154 extern int default_has_shared_address_space (struct gdbarch *); 00155 00156 extern int default_fast_tracepoint_valid_at (struct gdbarch *gdbarch, 00157 CORE_ADDR addr, 00158 int *isize, char **msg); 00159 00160 extern void default_remote_breakpoint_from_pc (struct gdbarch *, 00161 CORE_ADDR *pcptr, int *kindptr); 00162 00163 extern void default_gen_return_address (struct gdbarch *gdbarch, 00164 struct agent_expr *ax, 00165 struct axs_value *value, 00166 CORE_ADDR scope); 00167 00168 extern const char *default_auto_charset (void); 00169 extern const char *default_auto_wide_charset (void); 00170 00171 extern int default_return_in_first_hidden_param_p (struct gdbarch *, 00172 struct type *); 00173 #endif