X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fgdbarch.h;h=307bc5fe5a0a517402ea108b70139e7267933839;hb=88c72b7d7171d9f162ed9ecca26cf1d45abc38ee;hp=2077048be33bfa9a6430b8041803bbc3171275bc;hpb=666e11c5d46a0a7a024e1f7326390cce51cd1014;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index 2077048be3..307bc5fe5a 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -22,13 +22,13 @@ /* This file was created with the aid of ``gdbarch.sh''. - The bourn shell script ``gdbarch.sh'' creates the files + The Bourne shell script ``gdbarch.sh'' creates the files ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them against the existing ``gdbarch.[hc]''. Any differences found being reported. If editing this file, please also run gdbarch.sh and merge any - changes into that script. Conversely, when makeing sweeping changes + changes into that script. Conversely, when making sweeping changes to this file, modifying gdbarch.sh and using its output may prove easier. */ @@ -77,31 +77,19 @@ extern int gdbarch_byte_order (struct gdbarch *gdbarch); #endif -/* The following are initialized by the target dependant code. */ +/* The following are initialized by the target dependent code. */ -/* Default (value) for non- multi-arch platforms. */ -#if (!GDB_MULTI_ARCH) && !defined (TARGET_BFD_VMA_BIT) -#define TARGET_BFD_VMA_BIT (TARGET_ARCHITECTURE->bits_per_address) -#endif - -extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch); -extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit); -#if GDB_MULTI_ARCH -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_BFD_VMA_BIT) -#define TARGET_BFD_VMA_BIT (gdbarch_bfd_vma_bit (current_gdbarch)) -#endif -#endif +/* Number of bits in a char or unsigned char for the target machine. + Just like CHAR_BIT in but describes the target machine. + v::TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):8::0: + + Number of bits in a short or unsigned short for the target machine. */ -extern int gdbarch_ptr_bit (struct gdbarch *gdbarch); -extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit); -#if GDB_MULTI_ARCH -#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_PTR_BIT) -#define TARGET_PTR_BIT (gdbarch_ptr_bit (current_gdbarch)) -#endif +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_SHORT_BIT) +#define TARGET_SHORT_BIT (2*TARGET_CHAR_BIT) #endif -/*v:1:TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):0 */ - extern int gdbarch_short_bit (struct gdbarch *gdbarch); extern void set_gdbarch_short_bit (struct gdbarch *gdbarch, int short_bit); #if GDB_MULTI_ARCH @@ -110,6 +98,13 @@ extern void set_gdbarch_short_bit (struct gdbarch *gdbarch, int short_bit); #endif #endif +/* Number of bits in an int or unsigned int for the target machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_INT_BIT) +#define TARGET_INT_BIT (4*TARGET_CHAR_BIT) +#endif + extern int gdbarch_int_bit (struct gdbarch *gdbarch); extern void set_gdbarch_int_bit (struct gdbarch *gdbarch, int int_bit); #if GDB_MULTI_ARCH @@ -118,6 +113,13 @@ extern void set_gdbarch_int_bit (struct gdbarch *gdbarch, int int_bit); #endif #endif +/* Number of bits in a long or unsigned long for the target machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_BIT) +#define TARGET_LONG_BIT (4*TARGET_CHAR_BIT) +#endif + extern int gdbarch_long_bit (struct gdbarch *gdbarch); extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit); #if GDB_MULTI_ARCH @@ -126,6 +128,14 @@ extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit); #endif #endif +/* Number of bits in a long long or unsigned long long for the target + machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_LONG_BIT) +#define TARGET_LONG_LONG_BIT (2*TARGET_LONG_BIT) +#endif + extern int gdbarch_long_long_bit (struct gdbarch *gdbarch); extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit); #if GDB_MULTI_ARCH @@ -134,6 +144,13 @@ extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bi #endif #endif +/* Number of bits in a float for the target machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_FLOAT_BIT) +#define TARGET_FLOAT_BIT (4*TARGET_CHAR_BIT) +#endif + extern int gdbarch_float_bit (struct gdbarch *gdbarch); extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit); #if GDB_MULTI_ARCH @@ -142,6 +159,13 @@ extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit); #endif #endif +/* Number of bits in a double for the target machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_DOUBLE_BIT) +#define TARGET_DOUBLE_BIT (8*TARGET_CHAR_BIT) +#endif + extern int gdbarch_double_bit (struct gdbarch *gdbarch); extern void set_gdbarch_double_bit (struct gdbarch *gdbarch, int double_bit); #if GDB_MULTI_ARCH @@ -150,6 +174,13 @@ extern void set_gdbarch_double_bit (struct gdbarch *gdbarch, int double_bit); #endif #endif +/* Number of bits in a long double for the target machine. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_LONG_DOUBLE_BIT) +#define TARGET_LONG_DOUBLE_BIT (2*TARGET_DOUBLE_BIT) +#endif + extern int gdbarch_long_double_bit (struct gdbarch *gdbarch); extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_double_bit); #if GDB_MULTI_ARCH @@ -158,6 +189,59 @@ extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_doubl #endif #endif +/* For most targets, a pointer on the target and its representation as an + address in GDB have the same size and "look the same". For such a + target, you need only set TARGET_PTR_BIT / ptr_bit and TARGET_ADDR_BIT + / addr_bit will be set from it. + + If TARGET_PTR_BIT and TARGET_ADDR_BIT are different, you'll probably + also need to set POINTER_TO_ADDRESS and ADDRESS_TO_POINTER as well. + + ptr_bit is the size of a pointer on the target */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_PTR_BIT) +#define TARGET_PTR_BIT (TARGET_INT_BIT) +#endif + +extern int gdbarch_ptr_bit (struct gdbarch *gdbarch); +extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_PTR_BIT) +#define TARGET_PTR_BIT (gdbarch_ptr_bit (current_gdbarch)) +#endif +#endif + +/* addr_bit is the size of a target address as represented in gdb */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_ADDR_BIT) +#define TARGET_ADDR_BIT (TARGET_PTR_BIT) +#endif + +extern int gdbarch_addr_bit (struct gdbarch *gdbarch); +extern void set_gdbarch_addr_bit (struct gdbarch *gdbarch, int addr_bit); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_ADDR_BIT) +#define TARGET_ADDR_BIT (gdbarch_addr_bit (current_gdbarch)) +#endif +#endif + +/* Number of bits in a BFD_VMA for the target object file format. */ + +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_BFD_VMA_BIT) +#define TARGET_BFD_VMA_BIT (TARGET_ARCHITECTURE->bits_per_address) +#endif + +extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch); +extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_BFD_VMA_BIT) +#define TARGET_BFD_VMA_BIT (gdbarch_bfd_vma_bit (current_gdbarch)) +#endif +#endif + /* Default (value) for non- multi-arch platforms. */ #if (!GDB_MULTI_ARCH) && !defined (IEEE_FLOAT) #define IEEE_FLOAT (0) @@ -171,6 +255,11 @@ extern void set_gdbarch_ieee_float (struct gdbarch *gdbarch, int ieee_float); #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_PC) +#define TARGET_READ_PC(pid) (generic_target_read_pc (pid)) +#endif + typedef CORE_ADDR (gdbarch_read_pc_ftype) (int pid); extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, int pid); extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype *read_pc); @@ -180,6 +269,11 @@ extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_WRITE_PC) +#define TARGET_WRITE_PC(val, pid) (generic_target_write_pc (val, pid)) +#endif + typedef void (gdbarch_write_pc_ftype) (CORE_ADDR val, int pid); extern void gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, int pid); extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc); @@ -189,6 +283,11 @@ extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftyp #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_FP) +#define TARGET_READ_FP() (generic_target_read_fp ()) +#endif + typedef CORE_ADDR (gdbarch_read_fp_ftype) (void); extern CORE_ADDR gdbarch_read_fp (struct gdbarch *gdbarch); extern void set_gdbarch_read_fp (struct gdbarch *gdbarch, gdbarch_read_fp_ftype *read_fp); @@ -198,6 +297,11 @@ extern void set_gdbarch_read_fp (struct gdbarch *gdbarch, gdbarch_read_fp_ftype #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_WRITE_FP) +#define TARGET_WRITE_FP(val) (generic_target_write_fp (val)) +#endif + typedef void (gdbarch_write_fp_ftype) (CORE_ADDR val); extern void gdbarch_write_fp (struct gdbarch *gdbarch, CORE_ADDR val); extern void set_gdbarch_write_fp (struct gdbarch *gdbarch, gdbarch_write_fp_ftype *write_fp); @@ -207,6 +311,11 @@ extern void set_gdbarch_write_fp (struct gdbarch *gdbarch, gdbarch_write_fp_ftyp #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_READ_SP) +#define TARGET_READ_SP() (generic_target_read_sp ()) +#endif + typedef CORE_ADDR (gdbarch_read_sp_ftype) (void); extern CORE_ADDR gdbarch_read_sp (struct gdbarch *gdbarch); extern void set_gdbarch_read_sp (struct gdbarch *gdbarch, gdbarch_read_sp_ftype *read_sp); @@ -216,6 +325,11 @@ extern void set_gdbarch_read_sp (struct gdbarch *gdbarch, gdbarch_read_sp_ftype #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (TARGET_WRITE_SP) +#define TARGET_WRITE_SP(val) (generic_target_write_sp (val)) +#endif + typedef void (gdbarch_write_sp_ftype) (CORE_ADDR val); extern void gdbarch_write_sp (struct gdbarch *gdbarch, CORE_ADDR val); extern void set_gdbarch_write_sp (struct gdbarch *gdbarch, gdbarch_write_sp_ftype *write_sp); @@ -314,6 +428,86 @@ extern void set_gdbarch_nnpc_regnum (struct gdbarch *gdbarch, int nnpc_regnum); #endif #endif +/* Convert stab register number (from `r' declaration) to a gdb REGNUM. */ + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (STAB_REG_TO_REGNUM) +#define STAB_REG_TO_REGNUM(stab_regnr) (no_op_reg_to_regnum (stab_regnr)) +#endif + +typedef int (gdbarch_stab_reg_to_regnum_ftype) (int stab_regnr); +extern int gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr); +extern void set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (STAB_REG_TO_REGNUM) +#define STAB_REG_TO_REGNUM(stab_regnr) (gdbarch_stab_reg_to_regnum (current_gdbarch, stab_regnr)) +#endif +#endif + +/* Provide a default mapping from a ecoff register number to a gdb REGNUM. */ + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (ECOFF_REG_TO_REGNUM) +#define ECOFF_REG_TO_REGNUM(ecoff_regnr) (no_op_reg_to_regnum (ecoff_regnr)) +#endif + +typedef int (gdbarch_ecoff_reg_to_regnum_ftype) (int ecoff_regnr); +extern int gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr); +extern void set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (ECOFF_REG_TO_REGNUM) +#define ECOFF_REG_TO_REGNUM(ecoff_regnr) (gdbarch_ecoff_reg_to_regnum (current_gdbarch, ecoff_regnr)) +#endif +#endif + +/* Provide a default mapping from a DWARF register number to a gdb REGNUM. */ + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (DWARF_REG_TO_REGNUM) +#define DWARF_REG_TO_REGNUM(dwarf_regnr) (no_op_reg_to_regnum (dwarf_regnr)) +#endif + +typedef int (gdbarch_dwarf_reg_to_regnum_ftype) (int dwarf_regnr); +extern int gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr); +extern void set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DWARF_REG_TO_REGNUM) +#define DWARF_REG_TO_REGNUM(dwarf_regnr) (gdbarch_dwarf_reg_to_regnum (current_gdbarch, dwarf_regnr)) +#endif +#endif + +/* Convert from an sdb register number to an internal gdb register number. + This should be defined in tm.h, if REGISTER_NAMES is not set up + to map one to one onto the sdb register numbers. */ + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (SDB_REG_TO_REGNUM) +#define SDB_REG_TO_REGNUM(sdb_regnr) (no_op_reg_to_regnum (sdb_regnr)) +#endif + +typedef int (gdbarch_sdb_reg_to_regnum_ftype) (int sdb_regnr); +extern int gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr); +extern void set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SDB_REG_TO_REGNUM) +#define SDB_REG_TO_REGNUM(sdb_regnr) (gdbarch_sdb_reg_to_regnum (current_gdbarch, sdb_regnr)) +#endif +#endif + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (DWARF2_REG_TO_REGNUM) +#define DWARF2_REG_TO_REGNUM(dwarf2_regnr) (no_op_reg_to_regnum (dwarf2_regnr)) +#endif + +typedef int (gdbarch_dwarf2_reg_to_regnum_ftype) (int dwarf2_regnr); +extern int gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr); +extern void set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DWARF2_REG_TO_REGNUM) +#define DWARF2_REG_TO_REGNUM(dwarf2_regnr) (gdbarch_dwarf2_reg_to_regnum (current_gdbarch, dwarf2_regnr)) +#endif +#endif + /* Default (function) for non- multi-arch platforms. */ #if (!GDB_MULTI_ARCH) && !defined (REGISTER_NAME) #define REGISTER_NAME(regnr) (legacy_register_name (regnr)) @@ -410,6 +604,23 @@ extern void set_gdbarch_do_registers_info (struct gdbarch *gdbarch, gdbarch_do_r #endif #endif +/* MAP a GDB RAW register number onto a simulator register number. See + also include/...-sim.h. */ + +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (REGISTER_SIM_REGNO) +#define REGISTER_SIM_REGNO(reg_nr) (default_register_sim_regno (reg_nr)) +#endif + +typedef int (gdbarch_register_sim_regno_ftype) (int reg_nr); +extern int gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr); +extern void set_gdbarch_register_sim_regno (struct gdbarch *gdbarch, gdbarch_register_sim_regno_ftype *register_sim_regno); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (REGISTER_SIM_REGNO) +#define REGISTER_SIM_REGNO(reg_nr) (gdbarch_register_sim_regno (current_gdbarch, reg_nr)) +#endif +#endif + extern int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch); extern void set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch, int use_generic_dummy_frames); #if GDB_MULTI_ARCH @@ -1097,6 +1308,19 @@ extern void set_gdbarch_stack_align (struct gdbarch *gdbarch, gdbarch_stack_alig #endif #endif +/* Default (value) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (EXTRA_STACK_ALIGNMENT_NEEDED) +#define EXTRA_STACK_ALIGNMENT_NEEDED (1) +#endif + +extern int gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch); +extern void set_gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch, int extra_stack_alignment_needed); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (EXTRA_STACK_ALIGNMENT_NEEDED) +#define EXTRA_STACK_ALIGNMENT_NEEDED (gdbarch_extra_stack_alignment_needed (current_gdbarch)) +#endif +#endif + #if defined (REG_STRUCT_HAS_ADDR) /* Legacy for systems yet to multi-arch REG_STRUCT_HAS_ADDR */ #define REG_STRUCT_HAS_ADDR_P() (1) @@ -1194,6 +1418,20 @@ extern void set_gdbarch_long_double_format (struct gdbarch *gdbarch, const struc #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (CONVERT_FROM_FUNC_PTR_ADDR) +#define CONVERT_FROM_FUNC_PTR_ADDR(addr) (default_convert_from_func_ptr_addr (addr)) +#endif + +typedef CORE_ADDR (gdbarch_convert_from_func_ptr_addr_ftype) (CORE_ADDR addr); +extern CORE_ADDR gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr); +extern void set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (CONVERT_FROM_FUNC_PTR_ADDR) +#define CONVERT_FROM_FUNC_PTR_ADDR(addr) (gdbarch_convert_from_func_ptr_addr (current_gdbarch, addr)) +#endif +#endif + extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); @@ -1206,7 +1444,7 @@ extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); The mechanisms below ensures that there is only a loose connection between the set-architecture command and the various GDB - components. Each component can independantly register their need + components. Each component can independently register their need to maintain architecture specific data with gdbarch. Pragmatics: @@ -1216,7 +1454,7 @@ extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); The more traditional mega-struct containing architecture specific data for all the various GDB components was also considered. Since - GDB is built from a variable number of (fairly independant) + GDB is built from a variable number of (fairly independent) components it was determined that the global aproach was not applicable. */ @@ -1240,7 +1478,7 @@ extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch); that the INFO.BYTE_ORDER is non-zero. The INIT function shall return any of: NULL - indicating that it - doesn't reconize the selected architecture; an existing ``struct + doesn't recognize the selected architecture; an existing ``struct gdbarch'' from the ARCHES list - indicating that the new architecture is just a synonym for an earlier architecture (see gdbarch_list_lookup_by_info()); a newly created ``struct gdbarch'' @@ -1319,13 +1557,15 @@ extern void gdbarch_free (struct gdbarch *); architecture manipulation commands. The INFO parameter shall be fully initialized (``memset (&INFO, - sizeof (info), 0)'' set relevant fields) before gdbarch_update() is - called. gdbarch_update() shall initialize any ``default'' fields - using information obtained from the previous architecture or + sizeof (info), 0)'' set relevant fields) before gdbarch_update_p() + is called. gdbarch_update_p() shall initialize any ``default'' + fields using information obtained from the previous architecture or INFO.ABFD (if specified) before calling the corresponding - architectures INIT function. */ + architectures INIT function. + + Returns non-zero if the update succeeds */ -extern int gdbarch_update (struct gdbarch_info info); +extern int gdbarch_update_p (struct gdbarch_info info); @@ -1374,7 +1614,7 @@ extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ -/* The target-system-dependant byte order is dynamic */ +/* The target-system-dependent byte order is dynamic */ /* TARGET_BYTE_ORDER_SELECTABLE_P determines if the target endianness is selectable at runtime. The user can use the ``set endian'' @@ -1414,7 +1654,7 @@ extern int target_byte_order_auto; -/* The target-system-dependant BFD architecture is dynamic */ +/* The target-system-dependent BFD architecture is dynamic */ extern int target_architecture_auto; #ifndef TARGET_ARCHITECTURE_AUTO @@ -1427,7 +1667,7 @@ extern const struct bfd_arch_info *target_architecture; #endif -/* The target-system-dependant disassembler is semi-dynamic */ +/* The target-system-dependent disassembler is semi-dynamic */ #include "dis-asm.h" /* Get defs for disassemble_info */ @@ -1468,7 +1708,7 @@ extern disassemble_info tm_print_insn_info; #endif -/* Set the dynamic target-system-dependant parameters (architecture, +/* Set the dynamic target-system-dependent parameters (architecture, byte-order, ...) using information found in the BFD */ extern void set_gdbarch_from_file (bfd *);