GDB (API)
/home/stan/gdb/src/gdb/arch-utils.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines