darling-gdb/gdb/gdbarch.c

5802 lines
196 KiB
C
Raw Normal View History

2000-03-30 05:32:23 +00:00
/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
1999-07-19 23:30:11 +00:00
/* Dynamic architecture support for GDB, the GNU debugger.
Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
1999-08-09 21:36:23 +00:00
This file is part of GDB.
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 2 of the License, or
(at your option) any later version.
1999-08-09 21:36:23 +00:00
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.
1999-08-09 21:36:23 +00:00
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
1999-07-19 23:30:11 +00:00
1999-08-31 01:14:27 +00:00
/* This file was created with the aid of ``gdbarch.sh''.
The Bourne shell script ``gdbarch.sh'' creates the files
1999-08-31 01:14:27 +00:00
``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 making sweeping changes
1999-08-31 01:14:27 +00:00
to this file, modifying gdbarch.sh and using its output may prove
easier. */
#include "defs.h"
#include "arch-utils.h"
1999-06-14 18:08:47 +00:00
#if GDB_MULTI_ARCH
#include "gdbcmd.h"
1999-07-19 23:30:11 +00:00
#include "inferior.h" /* enum CALL_DUMMY_LOCATION et.al. */
1999-06-14 18:08:47 +00:00
#else
1999-04-26 18:34:20 +00:00
/* Just include everything in sight so that the every old definition
of macro is visible. */
#include "gdb_string.h"
#include <ctype.h>
#include "symtab.h"
#include "frame.h"
#include "inferior.h"
#include "breakpoint.h"
#include "gdb_wait.h"
1999-04-26 18:34:20 +00:00
#include "gdbcore.h"
#include "gdbcmd.h"
#include "target.h"
#include "gdbthread.h"
#include "annotate.h"
#include "symfile.h" /* for overlay functions */
2001-10-21 17:19:38 +00:00
#include "value.h" /* For old tm.h/nm.h macros. */
1999-06-14 18:08:47 +00:00
#endif
1999-04-26 18:34:20 +00:00
#include "symcat.h"
#include "floatformat.h"
#include "gdb_assert.h"
#include "gdb_string.h"
#include "gdb-events.h"
#include "reggroups.h"
1999-08-31 01:14:27 +00:00
/* Static function declarations */
static void verify_gdbarch (struct gdbarch *gdbarch);
static void alloc_gdbarch_data (struct gdbarch *);
static void free_gdbarch_data (struct gdbarch *);
1999-08-31 01:14:27 +00:00
static void init_gdbarch_swap (struct gdbarch *);
static void clear_gdbarch_swap (struct gdbarch *);
1999-08-31 01:14:27 +00:00
static void swapout_gdbarch_swap (struct gdbarch *);
static void swapin_gdbarch_swap (struct gdbarch *);
1999-06-14 18:08:47 +00:00
/* Non-zero if we want to trace architecture code. */
#ifndef GDBARCH_DEBUG
#define GDBARCH_DEBUG 0
#endif
int gdbarch_debug = GDBARCH_DEBUG;
/* Maintain the struct gdbarch object */
struct gdbarch
1999-07-19 23:30:11 +00:00
{
/* Has this architecture been fully initialized? */
int initialized_p;
1999-07-19 23:30:11 +00:00
/* basic architectural information */
const struct bfd_arch_info * bfd_arch_info;
int byte_order;
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
/* target specific vector. */
struct gdbarch_tdep *tdep;
gdbarch_dump_tdep_ftype *dump_tdep;
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
/* per-architecture data-pointers */
unsigned nr_data;
1999-07-19 23:30:11 +00:00
void **data;
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
/* per-architecture swap-regions */
struct gdbarch_swap *swap;
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
/* Multi-arch values.
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
When extending this structure you must:
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
Add the field below.
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
Declare set/get functions and define the corresponding
macro in gdbarch.h.
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
gdbarch_alloc(): If zero/NULL is not a suitable default,
initialize the new field.
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
verify_gdbarch(): Confirm that the target updated the field
correctly.
1999-06-14 18:08:47 +00:00
gdbarch_dump(): Add a fprintf_unfiltered call so that the new
1999-07-19 23:30:11 +00:00
field is dumped out
1999-06-14 18:08:47 +00:00
``startup_gdbarch()'': Append an initial value to the static
1999-07-19 23:30:11 +00:00
variable (base values on the host's c-type system).
1999-06-14 18:08:47 +00:00
1999-07-19 23:30:11 +00:00
get_gdbarch(): Implement the set/get functions (probably using
the macro's as shortcuts).
1999-06-14 18:08:47 +00:00
*/
1999-07-19 23:30:11 +00:00
int short_bit;
int int_bit;
int long_bit;
int long_long_bit;
int float_bit;
int double_bit;
int long_double_bit;
2000-08-11 02:55:38 +00:00
int ptr_bit;
int addr_bit;
2000-08-11 02:55:38 +00:00
int bfd_vma_bit;
int char_signed;
1999-07-19 23:30:11 +00:00
gdbarch_read_pc_ftype *read_pc;
gdbarch_write_pc_ftype *write_pc;
gdbarch_read_fp_ftype *read_fp;
gdbarch_read_sp_ftype *read_sp;
gdbarch_write_sp_ftype *write_sp;
gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer;
gdbarch_pseudo_register_read_ftype *pseudo_register_read;
gdbarch_pseudo_register_write_ftype *pseudo_register_write;
1999-07-19 23:30:11 +00:00
int num_regs;
int num_pseudo_regs;
1999-07-19 23:30:11 +00:00
int sp_regnum;
int fp_regnum;
int pc_regnum;
int ps_regnum;
int fp0_regnum;
2000-05-02 09:36:57 +00:00
int npc_regnum;
gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum;
gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum;
gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum;
gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum;
gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum;
1999-07-19 23:30:11 +00:00
gdbarch_register_name_ftype *register_name;
int register_size;
int register_bytes;
gdbarch_register_byte_ftype *register_byte;
gdbarch_register_raw_size_ftype *register_raw_size;
int max_register_raw_size;
gdbarch_register_virtual_size_ftype *register_virtual_size;
int max_register_virtual_size;
gdbarch_register_virtual_type_ftype *register_virtual_type;
gdbarch_deprecated_do_registers_info_ftype *deprecated_do_registers_info;
gdbarch_print_registers_info_ftype *print_registers_info;
gdbarch_print_float_info_ftype *print_float_info;
gdbarch_print_vector_info_ftype *print_vector_info;
gdbarch_register_sim_regno_ftype *register_sim_regno;
2000-12-15 12:33:08 +00:00
gdbarch_register_bytes_ok_ftype *register_bytes_ok;
gdbarch_cannot_fetch_register_ftype *cannot_fetch_register;
gdbarch_cannot_store_register_ftype *cannot_store_register;
gdbarch_get_longjmp_target_ftype *get_longjmp_target;
1999-07-19 23:30:11 +00:00
int use_generic_dummy_frames;
int call_dummy_location;
gdbarch_call_dummy_address_ftype *call_dummy_address;
CORE_ADDR call_dummy_start_offset;
CORE_ADDR call_dummy_breakpoint_offset;
int call_dummy_breakpoint_offset_p;
int call_dummy_length;
gdbarch_pc_in_call_dummy_ftype *pc_in_call_dummy;
int call_dummy_p;
LONGEST * call_dummy_words;
int sizeof_call_dummy_words;
int call_dummy_stack_adjust_p;
int call_dummy_stack_adjust;
gdbarch_fix_call_dummy_ftype *fix_call_dummy;
gdbarch_init_frame_pc_first_ftype *init_frame_pc_first;
gdbarch_init_frame_pc_ftype *init_frame_pc;
1999-07-19 23:30:11 +00:00
int believe_pcc_promotion;
int believe_pcc_promotion_type;
gdbarch_coerce_float_to_double_ftype *coerce_float_to_double;
1999-07-19 23:30:11 +00:00
gdbarch_get_saved_register_ftype *get_saved_register;
gdbarch_register_convertible_ftype *register_convertible;
gdbarch_register_convert_to_virtual_ftype *register_convert_to_virtual;
gdbarch_register_convert_to_raw_ftype *register_convert_to_raw;
gdbarch_convert_register_p_ftype *convert_register_p;
gdbarch_register_to_value_ftype *register_to_value;
gdbarch_value_to_register_ftype *value_to_register;
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
gdbarch_pointer_to_address_ftype *pointer_to_address;
gdbarch_address_to_pointer_ftype *address_to_pointer;
gdbarch_integer_to_address_ftype *integer_to_address;
gdbarch_return_value_on_stack_ftype *return_value_on_stack;
1999-07-19 23:30:11 +00:00
gdbarch_push_arguments_ftype *push_arguments;
gdbarch_push_dummy_frame_ftype *push_dummy_frame;
gdbarch_push_return_address_ftype *push_return_address;
gdbarch_pop_frame_ftype *pop_frame;
gdbarch_store_struct_return_ftype *store_struct_return;
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
gdbarch_extract_return_value_ftype *extract_return_value;
1999-07-19 23:30:11 +00:00
gdbarch_store_return_value_ftype *store_return_value;
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value;
gdbarch_deprecated_store_return_value_ftype *deprecated_store_return_value;
gdbarch_extract_struct_value_address_ftype *extract_struct_value_address;
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address;
1999-07-19 23:30:11 +00:00
gdbarch_use_struct_convention_ftype *use_struct_convention;
gdbarch_frame_init_saved_regs_ftype *frame_init_saved_regs;
gdbarch_init_extra_frame_info_ftype *init_extra_frame_info;
gdbarch_skip_prologue_ftype *skip_prologue;
gdbarch_prologue_frameless_p_ftype *prologue_frameless_p;
1999-07-19 23:30:11 +00:00
gdbarch_inner_than_ftype *inner_than;
gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
1999-10-19 02:47:02 +00:00
gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint;
gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint;
1999-07-19 23:30:11 +00:00
CORE_ADDR decr_pc_after_break;
gdbarch_prepare_to_proceed_ftype *prepare_to_proceed;
1999-07-19 23:30:11 +00:00
CORE_ADDR function_start_offset;
gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address;
CORE_ADDR frame_args_skip;
gdbarch_frameless_function_invocation_ftype *frameless_function_invocation;
gdbarch_frame_chain_ftype *frame_chain;
gdbarch_frame_chain_valid_ftype *frame_chain_valid;
gdbarch_frame_saved_pc_ftype *frame_saved_pc;
gdbarch_frame_args_address_ftype *frame_args_address;
gdbarch_frame_locals_address_ftype *frame_locals_address;
gdbarch_saved_pc_after_call_ftype *saved_pc_after_call;
gdbarch_frame_num_args_ftype *frame_num_args;
gdbarch_stack_align_ftype *stack_align;
gdbarch_frame_align_ftype *frame_align;
int extra_stack_alignment_needed;
gdbarch_reg_struct_has_addr_ftype *reg_struct_has_addr;
gdbarch_save_dummy_frame_tos_ftype *save_dummy_frame_tos;
int parm_boundary;
const struct floatformat * float_format;
const struct floatformat * double_format;
const struct floatformat * long_double_format;
gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr;
2001-06-15 22:10:21 +00:00
gdbarch_addr_bits_remove_ftype *addr_bits_remove;
gdbarch_smash_text_address_ftype *smash_text_address;
gdbarch_software_single_step_ftype *software_single_step;
gdbarch_print_insn_ftype *print_insn;
gdbarch_skip_trampoline_code_ftype *skip_trampoline_code;
gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline;
gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline;
gdbarch_pc_in_sigtramp_ftype *pc_in_sigtramp;
gdbarch_sigtramp_start_ftype *sigtramp_start;
gdbarch_sigtramp_end_ftype *sigtramp_end;
gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p;
gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments;
gdbarch_dwarf2_build_frame_info_ftype *dwarf2_build_frame_info;
gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special;
gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special;
const char * name_of_malloc;
int cannot_step_breakpoint;
int have_nonsteppable_watchpoint;
2002-10-16 20:50:22 +00:00
gdbarch_address_class_type_flags_ftype *address_class_type_flags;
gdbarch_address_class_type_flags_to_name_ftype *address_class_type_flags_to_name;
gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags;
gdbarch_register_reggroup_p_ftype *register_reggroup_p;
1999-07-19 23:30:11 +00:00
};
1999-06-14 18:08:47 +00:00
/* The default architecture uses host values (for want of a better
choice). */
extern const struct bfd_arch_info bfd_default_arch_struct;
struct gdbarch startup_gdbarch =
{
1, /* Always initialized. */
1999-06-14 18:08:47 +00:00
/* basic architecture information */
&bfd_default_arch_struct,
2002-01-05 04:30:46 +00:00
BFD_ENDIAN_BIG,
/* target specific vector and its dump routine */
NULL, NULL,
1999-06-14 18:08:47 +00:00
/*per-architecture data-pointers and swap regions */
0, NULL, NULL,
/* Multi-arch values */
8 * sizeof (short),
8 * sizeof (int),
8 * sizeof (long),
8 * sizeof (LONGEST),
8 * sizeof (float),
8 * sizeof (double),
8 * sizeof (long double),
2000-08-11 02:55:38 +00:00
8 * sizeof (void*),
8 * sizeof (void*),
8 * sizeof (void*),
1,
1999-06-14 18:08:47 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-1,
-1,
-1,
-1,
1999-06-14 18:08:47 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
generic_register_byte,
generic_register_size,
1999-06-14 18:08:47 +00:00
0,
generic_register_size,
1999-06-14 18:08:47 +00:00
0,
0,
0,
default_print_registers_info,
0,
1999-06-14 18:08:47 +00:00
0,
0,
0,
2000-05-02 09:36:57 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2000-12-15 12:33:08 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1999-06-14 18:08:47 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1999-10-19 02:47:02 +00:00
0,
0,
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
0,
0,
0,
0,
generic_in_function_epilogue_p,
construct_inferior_arguments,
0,
0,
0,
"malloc",
0,
0,
2002-10-16 20:50:22 +00:00
0,
0,
0,
default_register_reggroup_p,
/* startup_gdbarch() */
1999-06-14 18:08:47 +00:00
};
struct gdbarch *current_gdbarch = &startup_gdbarch;
1999-06-14 18:08:47 +00:00
/* Do any initialization needed for a non-multiarch configuration
after the _initialize_MODULE functions have been run. */
void
2002-07-11 13:50:50 +00:00
initialize_non_multiarch (void)
{
alloc_gdbarch_data (&startup_gdbarch);
/* Ensure that all swap areas are zeroed so that they again think
they are starting from scratch. */
clear_gdbarch_swap (&startup_gdbarch);
init_gdbarch_swap (&startup_gdbarch);
}
1999-06-14 18:08:47 +00:00
2000-08-11 02:55:38 +00:00
/* Create a new ``struct gdbarch'' based on information provided by
1999-06-14 18:08:47 +00:00
``struct gdbarch_info''. */
struct gdbarch *
1999-08-31 01:14:27 +00:00
gdbarch_alloc (const struct gdbarch_info *info,
struct gdbarch_tdep *tdep)
1999-06-14 18:08:47 +00:00
{
/* NOTE: The new architecture variable is named ``current_gdbarch''
so that macros such as TARGET_DOUBLE_BIT, when expanded, refer to
the current local architecture and not the previous global
architecture. This ensures that the new architectures initial
values are not influenced by the previous architecture. Once
everything is parameterised with gdbarch, this will go away. */
struct gdbarch *current_gdbarch = XMALLOC (struct gdbarch);
memset (current_gdbarch, 0, sizeof (*current_gdbarch));
1999-06-14 18:08:47 +00:00
alloc_gdbarch_data (current_gdbarch);
current_gdbarch->tdep = tdep;
1999-06-14 18:08:47 +00:00
current_gdbarch->bfd_arch_info = info->bfd_arch_info;
current_gdbarch->byte_order = info->byte_order;
1999-06-14 18:08:47 +00:00
/* Force the explicit initialization of these. */
current_gdbarch->short_bit = 2*TARGET_CHAR_BIT;
current_gdbarch->int_bit = 4*TARGET_CHAR_BIT;
current_gdbarch->long_bit = 4*TARGET_CHAR_BIT;
current_gdbarch->long_long_bit = 2*TARGET_LONG_BIT;
current_gdbarch->float_bit = 4*TARGET_CHAR_BIT;
current_gdbarch->double_bit = 8*TARGET_CHAR_BIT;
current_gdbarch->long_double_bit = 8*TARGET_CHAR_BIT;
current_gdbarch->ptr_bit = TARGET_INT_BIT;
current_gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address;
current_gdbarch->char_signed = -1;
current_gdbarch->read_pc = generic_target_read_pc;
current_gdbarch->write_pc = generic_target_write_pc;
current_gdbarch->read_fp = generic_target_read_fp;
current_gdbarch->read_sp = generic_target_read_sp;
current_gdbarch->write_sp = generic_target_write_sp;
current_gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer;
current_gdbarch->num_regs = -1;
current_gdbarch->sp_regnum = -1;
current_gdbarch->fp_regnum = -1;
current_gdbarch->pc_regnum = -1;
current_gdbarch->ps_regnum = -1;
current_gdbarch->fp0_regnum = -1;
current_gdbarch->npc_regnum = -1;
current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->sdb_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->dwarf2_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->register_name = legacy_register_name;
current_gdbarch->register_size = -1;
current_gdbarch->register_bytes = -1;
current_gdbarch->register_byte = generic_register_byte;
current_gdbarch->register_raw_size = generic_register_size;
current_gdbarch->max_register_raw_size = -1;
current_gdbarch->register_virtual_size = generic_register_size;
current_gdbarch->max_register_virtual_size = -1;
current_gdbarch->print_registers_info = default_print_registers_info;
current_gdbarch->register_sim_regno = legacy_register_sim_regno;
current_gdbarch->cannot_fetch_register = cannot_register_not;
current_gdbarch->cannot_store_register = cannot_register_not;
current_gdbarch->use_generic_dummy_frames = -1;
current_gdbarch->call_dummy_start_offset = -1;
current_gdbarch->call_dummy_breakpoint_offset = -1;
current_gdbarch->call_dummy_breakpoint_offset_p = -1;
current_gdbarch->call_dummy_length = -1;
current_gdbarch->call_dummy_p = -1;
current_gdbarch->call_dummy_words = legacy_call_dummy_words;
current_gdbarch->sizeof_call_dummy_words = legacy_sizeof_call_dummy_words;
current_gdbarch->call_dummy_stack_adjust_p = -1;
current_gdbarch->init_frame_pc_first = init_frame_pc_noop;
current_gdbarch->init_frame_pc = init_frame_pc_default;
current_gdbarch->coerce_float_to_double = default_coerce_float_to_double;
current_gdbarch->register_convertible = generic_register_convertible_not;
current_gdbarch->convert_register_p = legacy_convert_register_p;
current_gdbarch->register_to_value = legacy_register_to_value;
current_gdbarch->value_to_register = legacy_value_to_register;
current_gdbarch->pointer_to_address = unsigned_pointer_to_address;
current_gdbarch->address_to_pointer = unsigned_address_to_pointer;
current_gdbarch->return_value_on_stack = generic_return_value_on_stack_not;
current_gdbarch->push_arguments = default_push_arguments;
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
current_gdbarch->extract_return_value = legacy_extract_return_value;
current_gdbarch->store_return_value = legacy_store_return_value;
current_gdbarch->use_struct_convention = generic_use_struct_convention;
current_gdbarch->prologue_frameless_p = generic_prologue_frameless_p;
current_gdbarch->breakpoint_from_pc = legacy_breakpoint_from_pc;
current_gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
current_gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
current_gdbarch->decr_pc_after_break = -1;
current_gdbarch->prepare_to_proceed = default_prepare_to_proceed;
current_gdbarch->function_start_offset = -1;
current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address;
current_gdbarch->frame_args_skip = -1;
current_gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not;
current_gdbarch->frame_chain_valid = generic_func_frame_chain_valid;
current_gdbarch->frame_args_address = get_frame_base;
current_gdbarch->frame_locals_address = get_frame_base;
current_gdbarch->extra_stack_alignment_needed = 1;
current_gdbarch->convert_from_func_ptr_addr = core_addr_identity;
current_gdbarch->addr_bits_remove = core_addr_identity;
current_gdbarch->smash_text_address = core_addr_identity;
current_gdbarch->print_insn = legacy_print_insn;
current_gdbarch->skip_trampoline_code = generic_skip_trampoline_code;
current_gdbarch->in_solib_call_trampoline = generic_in_solib_call_trampoline;
current_gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline;
current_gdbarch->pc_in_sigtramp = legacy_pc_in_sigtramp;
current_gdbarch->in_function_epilogue_p = generic_in_function_epilogue_p;
current_gdbarch->construct_inferior_arguments = construct_inferior_arguments;
current_gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special;
current_gdbarch->coff_make_msymbol_special = default_coff_make_msymbol_special;
current_gdbarch->name_of_malloc = "malloc";
current_gdbarch->register_reggroup_p = default_register_reggroup_p;
1999-06-14 18:08:47 +00:00
/* gdbarch_alloc() */
return current_gdbarch;
1999-06-14 18:08:47 +00:00
}
/* Free a gdbarch struct. This should never happen in normal
operation --- once you've created a gdbarch, you keep it around.
However, if an architecture's init function encounters an error
building the structure, it may need to clean up a partially
constructed gdbarch. */
void
gdbarch_free (struct gdbarch *arch)
{
gdb_assert (arch != NULL);
free_gdbarch_data (arch);
xfree (arch);
}
1999-06-14 18:08:47 +00:00
/* Ensure that all values in a GDBARCH are reasonable. */
static void
1999-08-31 01:14:27 +00:00
verify_gdbarch (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
struct ui_file *log;
struct cleanup *cleanups;
long dummy;
char *buf;
1999-06-14 18:08:47 +00:00
/* Only perform sanity checks on a multi-arch target. */
if (!GDB_MULTI_ARCH)
1999-06-14 18:08:47 +00:00
return;
log = mem_fileopen ();
cleanups = make_cleanup_ui_file_delete (log);
1999-06-14 18:08:47 +00:00
/* fundamental */
if (gdbarch->byte_order == BFD_ENDIAN_UNKNOWN)
fprintf_unfiltered (log, "\n\tbyte-order");
1999-06-14 18:08:47 +00:00
if (gdbarch->bfd_arch_info == NULL)
fprintf_unfiltered (log, "\n\tbfd_arch_info");
1999-06-14 18:08:47 +00:00
/* Check those that need to be defined for the given multi-arch level. */
2000-08-11 02:55:38 +00:00
/* Skip verify of short_bit, invalid_p == 0 */
/* Skip verify of int_bit, invalid_p == 0 */
/* Skip verify of long_bit, invalid_p == 0 */
/* Skip verify of long_long_bit, invalid_p == 0 */
/* Skip verify of float_bit, invalid_p == 0 */
/* Skip verify of double_bit, invalid_p == 0 */
/* Skip verify of long_double_bit, invalid_p == 0 */
/* Skip verify of ptr_bit, invalid_p == 0 */
if (gdbarch->addr_bit == 0)
gdbarch->addr_bit = TARGET_PTR_BIT;
/* Skip verify of bfd_vma_bit, invalid_p == 0 */
if (gdbarch->char_signed == -1)
gdbarch->char_signed = 1;
/* Skip verify of read_pc, invalid_p == 0 */
/* Skip verify of write_pc, invalid_p == 0 */
/* Skip verify of read_fp, invalid_p == 0 */
/* Skip verify of read_sp, invalid_p == 0 */
/* Skip verify of write_sp, invalid_p == 0 */
/* Skip verify of virtual_frame_pointer, invalid_p == 0 */
/* Skip verify of pseudo_register_read, has predicate */
/* Skip verify of pseudo_register_write, has predicate */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->num_regs == -1))
fprintf_unfiltered (log, "\n\tnum_regs");
/* Skip verify of num_pseudo_regs, invalid_p == 0 */
/* Skip verify of sp_regnum, invalid_p == 0 */
/* Skip verify of fp_regnum, invalid_p == 0 */
/* Skip verify of pc_regnum, invalid_p == 0 */
/* Skip verify of ps_regnum, invalid_p == 0 */
/* Skip verify of fp0_regnum, invalid_p == 0 */
2000-05-02 09:36:57 +00:00
/* Skip verify of npc_regnum, invalid_p == 0 */
/* Skip verify of stab_reg_to_regnum, invalid_p == 0 */
/* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */
/* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */
/* Skip verify of sdb_reg_to_regnum, invalid_p == 0 */
/* Skip verify of dwarf2_reg_to_regnum, invalid_p == 0 */
/* Skip verify of register_name, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->register_size == -1))
fprintf_unfiltered (log, "\n\tregister_size");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->register_bytes == -1))
fprintf_unfiltered (log, "\n\tregister_bytes");
/* Skip verify of register_byte, invalid_p == 0 */
/* Skip verify of register_raw_size, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->max_register_raw_size == -1))
fprintf_unfiltered (log, "\n\tmax_register_raw_size");
/* Skip verify of register_virtual_size, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->max_register_virtual_size == -1))
fprintf_unfiltered (log, "\n\tmax_register_virtual_size");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->register_virtual_type == 0))
fprintf_unfiltered (log, "\n\tregister_virtual_type");
/* Skip verify of deprecated_do_registers_info, has predicate */
/* Skip verify of print_registers_info, invalid_p == 0 */
/* Skip verify of print_float_info, has predicate */
/* Skip verify of print_vector_info, has predicate */
/* Skip verify of register_sim_regno, invalid_p == 0 */
2000-12-15 12:33:08 +00:00
/* Skip verify of register_bytes_ok, has predicate */
/* Skip verify of cannot_fetch_register, invalid_p == 0 */
/* Skip verify of cannot_store_register, invalid_p == 0 */
/* Skip verify of get_longjmp_target, has predicate */
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->use_generic_dummy_frames == -1))
fprintf_unfiltered (log, "\n\tuse_generic_dummy_frames");
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_location == 0))
fprintf_unfiltered (log, "\n\tcall_dummy_location");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_location == AT_ENTRY_POINT && gdbarch->call_dummy_address == 0))
fprintf_unfiltered (log, "\n\tcall_dummy_address");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_start_offset == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_start_offset");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (gdbarch->call_dummy_breakpoint_offset_p && gdbarch->call_dummy_breakpoint_offset == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_breakpoint_offset");
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_breakpoint_offset_p == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_breakpoint_offset_p");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_length == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_length");
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->pc_in_call_dummy == 0))
fprintf_unfiltered (log, "\n\tpc_in_call_dummy");
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_p == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_p");
/* Skip verify of call_dummy_words, invalid_p == 0 */
/* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */
if ((GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_stack_adjust_p == -1))
fprintf_unfiltered (log, "\n\tcall_dummy_stack_adjust_p");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0))
fprintf_unfiltered (log, "\n\tcall_dummy_stack_adjust");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->fix_call_dummy == 0))
fprintf_unfiltered (log, "\n\tfix_call_dummy");
/* Skip verify of init_frame_pc_first, invalid_p == 0 */
/* Skip verify of init_frame_pc, invalid_p == 0 */
/* Skip verify of coerce_float_to_double, invalid_p == 0 */
/* Skip verify of get_saved_register, has predicate */
/* Skip verify of register_convertible, invalid_p == 0 */
/* Skip verify of register_convert_to_virtual, invalid_p == 0 */
/* Skip verify of register_convert_to_raw, invalid_p == 0 */
/* Skip verify of convert_register_p, invalid_p == 0 */
/* Skip verify of register_to_value, invalid_p == 0 */
/* Skip verify of value_to_register, invalid_p == 0 */
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
/* Skip verify of pointer_to_address, invalid_p == 0 */
/* Skip verify of address_to_pointer, invalid_p == 0 */
/* Skip verify of integer_to_address, has predicate */
/* Skip verify of return_value_on_stack, invalid_p == 0 */
/* Skip verify of push_arguments, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->push_dummy_frame == 0))
fprintf_unfiltered (log, "\n\tpush_dummy_frame");
2001-11-06 18:06:00 +00:00
/* Skip verify of push_return_address, has predicate */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->pop_frame == 0))
fprintf_unfiltered (log, "\n\tpop_frame");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->store_struct_return == 0))
fprintf_unfiltered (log, "\n\tstore_struct_return");
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
/* Skip verify of extract_return_value, invalid_p == 0 */
/* Skip verify of store_return_value, invalid_p == 0 */
/* Skip verify of extract_struct_value_address, has predicate */
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
/* Skip verify of deprecated_extract_struct_value_address, has predicate */
/* Skip verify of use_struct_convention, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->frame_init_saved_regs == 0))
fprintf_unfiltered (log, "\n\tframe_init_saved_regs");
/* Skip verify of init_extra_frame_info, has predicate */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->skip_prologue == 0))
fprintf_unfiltered (log, "\n\tskip_prologue");
/* Skip verify of prologue_frameless_p, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->inner_than == 0))
fprintf_unfiltered (log, "\n\tinner_than");
/* Skip verify of breakpoint_from_pc, invalid_p == 0 */
/* Skip verify of memory_insert_breakpoint, invalid_p == 0 */
/* Skip verify of memory_remove_breakpoint, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->decr_pc_after_break == -1))
fprintf_unfiltered (log, "\n\tdecr_pc_after_break");
/* Skip verify of prepare_to_proceed, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->function_start_offset == -1))
fprintf_unfiltered (log, "\n\tfunction_start_offset");
/* Skip verify of remote_translate_xfer_address, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->frame_args_skip == -1))
fprintf_unfiltered (log, "\n\tframe_args_skip");
/* Skip verify of frameless_function_invocation, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->frame_chain == 0))
fprintf_unfiltered (log, "\n\tframe_chain");
/* Skip verify of frame_chain_valid, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->frame_saved_pc == 0))
fprintf_unfiltered (log, "\n\tframe_saved_pc");
/* Skip verify of frame_args_address, invalid_p == 0 */
/* Skip verify of frame_locals_address, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->saved_pc_after_call == 0))
fprintf_unfiltered (log, "\n\tsaved_pc_after_call");
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
1999-06-14 18:08:47 +00:00
&& (gdbarch->frame_num_args == 0))
fprintf_unfiltered (log, "\n\tframe_num_args");
/* Skip verify of stack_align, has predicate */
/* Skip verify of frame_align, has predicate */
/* Skip verify of extra_stack_alignment_needed, invalid_p == 0 */
/* Skip verify of reg_struct_has_addr, has predicate */
/* Skip verify of save_dummy_frame_tos, has predicate */
if (gdbarch->float_format == 0)
gdbarch->float_format = default_float_format (gdbarch);
if (gdbarch->double_format == 0)
gdbarch->double_format = default_double_format (gdbarch);
if (gdbarch->long_double_format == 0)
gdbarch->long_double_format = default_double_format (gdbarch);
/* Skip verify of convert_from_func_ptr_addr, invalid_p == 0 */
2001-06-15 22:10:21 +00:00
/* Skip verify of addr_bits_remove, invalid_p == 0 */
/* Skip verify of smash_text_address, invalid_p == 0 */
/* Skip verify of software_single_step, has predicate */
/* Skip verify of print_insn, invalid_p == 0 */
/* Skip verify of skip_trampoline_code, invalid_p == 0 */
/* Skip verify of in_solib_call_trampoline, invalid_p == 0 */
/* Skip verify of in_solib_return_trampoline, invalid_p == 0 */
/* Skip verify of pc_in_sigtramp, invalid_p == 0 */
/* Skip verify of sigtramp_start, has predicate */
/* Skip verify of sigtramp_end, has predicate */
/* Skip verify of in_function_epilogue_p, invalid_p == 0 */
/* Skip verify of construct_inferior_arguments, invalid_p == 0 */
/* Skip verify of dwarf2_build_frame_info, has predicate */
/* Skip verify of elf_make_msymbol_special, invalid_p == 0 */
/* Skip verify of coff_make_msymbol_special, invalid_p == 0 */
/* Skip verify of name_of_malloc, invalid_p == 0 */
/* Skip verify of cannot_step_breakpoint, invalid_p == 0 */
/* Skip verify of have_nonsteppable_watchpoint, invalid_p == 0 */
2002-10-16 20:50:22 +00:00
/* Skip verify of address_class_type_flags, has predicate */
/* Skip verify of address_class_type_flags_to_name, has predicate */
/* Skip verify of address_class_name_to_type_flags, has predicate */
/* Skip verify of register_reggroup_p, invalid_p == 0 */
buf = ui_file_xstrdup (log, &dummy);
make_cleanup (xfree, buf);
if (strlen (buf) > 0)
internal_error (__FILE__, __LINE__,
"verify_gdbarch: the following are invalid ...%s",
buf);
do_cleanups (cleanups);
1999-06-14 18:08:47 +00:00
}
/* Print out the details of the current architecture. */
/* NOTE/WARNING: The parameter is called ``current_gdbarch'' so that it
just happens to match the global variable ``current_gdbarch''. That
way macros refering to that variable get the local and not the global
version - ulgh. Once everything is parameterised with gdbarch, this
will go away. */
1999-06-14 18:08:47 +00:00
void
gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
1999-06-14 18:08:47 +00:00
{
fprintf_unfiltered (file,
"gdbarch_dump: GDB_MULTI_ARCH = %d\n",
GDB_MULTI_ARCH);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: frame_align = 0x%08lx\n",
(long) current_gdbarch->frame_align);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: in_function_epilogue_p = 0x%08lx\n",
(long) current_gdbarch->in_function_epilogue_p);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: register_reggroup_p = 0x%08lx\n",
(long) current_gdbarch->register_reggroup_p);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: pseudo_register_read = 0x%08lx\n",
(long) current_gdbarch->pseudo_register_read);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: pseudo_register_write = 0x%08lx\n",
(long) current_gdbarch->pseudo_register_write);
2002-10-16 20:50:22 +00:00
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: address_class_name_to_type_flags = 0x%08lx\n",
(long) current_gdbarch->address_class_name_to_type_flags);
2002-10-16 20:50:22 +00:00
#ifdef ADDRESS_CLASS_TYPE_FLAGS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"ADDRESS_CLASS_TYPE_FLAGS(byte_size, dwarf2_addr_class)",
XSTRING (ADDRESS_CLASS_TYPE_FLAGS (byte_size, dwarf2_addr_class)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: ADDRESS_CLASS_TYPE_FLAGS = 0x%08lx\n",
(long) current_gdbarch->address_class_type_flags
/*ADDRESS_CLASS_TYPE_FLAGS ()*/);
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: address_class_type_flags_to_name = 0x%08lx\n",
(long) current_gdbarch->address_class_type_flags_to_name);
#ifdef ADDRESS_TO_POINTER
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"ADDRESS_TO_POINTER(type, buf, addr)",
XSTRING (ADDRESS_TO_POINTER (type, buf, addr)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: ADDRESS_TO_POINTER = 0x%08lx\n",
(long) current_gdbarch->address_to_pointer
/*ADDRESS_TO_POINTER ()*/);
#endif
#ifdef ADDR_BITS_REMOVE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"ADDR_BITS_REMOVE(addr)",
XSTRING (ADDR_BITS_REMOVE (addr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: ADDR_BITS_REMOVE = 0x%08lx\n",
(long) current_gdbarch->addr_bits_remove
/*ADDR_BITS_REMOVE ()*/);
#endif
#ifdef BELIEVE_PCC_PROMOTION
fprintf_unfiltered (file,
"gdbarch_dump: BELIEVE_PCC_PROMOTION # %s\n",
XSTRING (BELIEVE_PCC_PROMOTION));
fprintf_unfiltered (file,
"gdbarch_dump: BELIEVE_PCC_PROMOTION = %d\n",
BELIEVE_PCC_PROMOTION);
#endif
#ifdef BELIEVE_PCC_PROMOTION_TYPE
fprintf_unfiltered (file,
"gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE # %s\n",
XSTRING (BELIEVE_PCC_PROMOTION_TYPE));
fprintf_unfiltered (file,
"gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE = %d\n",
BELIEVE_PCC_PROMOTION_TYPE);
#endif
#ifdef BREAKPOINT_FROM_PC
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"BREAKPOINT_FROM_PC(pcptr, lenptr)",
XSTRING (BREAKPOINT_FROM_PC (pcptr, lenptr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: BREAKPOINT_FROM_PC = 0x%08lx\n",
(long) current_gdbarch->breakpoint_from_pc
/*BREAKPOINT_FROM_PC ()*/);
#endif
#ifdef CALL_DUMMY_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"CALL_DUMMY_ADDRESS()",
XSTRING (CALL_DUMMY_ADDRESS ()));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->call_dummy_address
/*CALL_DUMMY_ADDRESS ()*/);
#endif
#ifdef CALL_DUMMY_BREAKPOINT_OFFSET
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET # %s\n",
XSTRING (CALL_DUMMY_BREAKPOINT_OFFSET));
if (CALL_DUMMY_BREAKPOINT_OFFSET_P)
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET = 0x%08lx\n",
(long) CALL_DUMMY_BREAKPOINT_OFFSET);
#endif
#ifdef CALL_DUMMY_BREAKPOINT_OFFSET_P
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET_P # %s\n",
XSTRING (CALL_DUMMY_BREAKPOINT_OFFSET_P));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_BREAKPOINT_OFFSET_P = %d\n",
CALL_DUMMY_BREAKPOINT_OFFSET_P);
#endif
#ifdef CALL_DUMMY_LENGTH
2000-08-11 02:55:38 +00:00
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_LENGTH # %s\n",
XSTRING (CALL_DUMMY_LENGTH));
if (CALL_DUMMY_LOCATION == BEFORE_TEXT_END || CALL_DUMMY_LOCATION == AFTER_TEXT_END)
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_LENGTH = %d\n",
CALL_DUMMY_LENGTH);
2000-08-11 02:55:38 +00:00
#endif
#ifdef CALL_DUMMY_LOCATION
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_LOCATION # %s\n",
XSTRING (CALL_DUMMY_LOCATION));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_LOCATION = %d\n",
CALL_DUMMY_LOCATION);
#endif
#ifdef CALL_DUMMY_P
2000-08-11 02:55:38 +00:00
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_P # %s\n",
XSTRING (CALL_DUMMY_P));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_P = %d\n",
CALL_DUMMY_P);
2000-08-11 02:55:38 +00:00
#endif
#ifdef CALL_DUMMY_STACK_ADJUST
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_STACK_ADJUST # %s\n",
XSTRING (CALL_DUMMY_STACK_ADJUST));
if (CALL_DUMMY_STACK_ADJUST_P)
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_STACK_ADJUST = 0x%08lx\n",
(long) CALL_DUMMY_STACK_ADJUST);
#endif
#ifdef CALL_DUMMY_STACK_ADJUST_P
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_STACK_ADJUST_P # %s\n",
XSTRING (CALL_DUMMY_STACK_ADJUST_P));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_STACK_ADJUST_P = 0x%08lx\n",
(long) CALL_DUMMY_STACK_ADJUST_P);
#endif
#ifdef CALL_DUMMY_START_OFFSET
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_START_OFFSET # %s\n",
XSTRING (CALL_DUMMY_START_OFFSET));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_START_OFFSET = 0x%08lx\n",
(long) CALL_DUMMY_START_OFFSET);
#endif
#ifdef CALL_DUMMY_WORDS
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_WORDS # %s\n",
XSTRING (CALL_DUMMY_WORDS));
fprintf_unfiltered (file,
"gdbarch_dump: CALL_DUMMY_WORDS = 0x%08lx\n",
(long) CALL_DUMMY_WORDS);
#endif
#ifdef CANNOT_FETCH_REGISTER
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"CANNOT_FETCH_REGISTER(regnum)",
XSTRING (CANNOT_FETCH_REGISTER (regnum)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: CANNOT_FETCH_REGISTER = 0x%08lx\n",
(long) current_gdbarch->cannot_fetch_register
/*CANNOT_FETCH_REGISTER ()*/);
#endif
#ifdef CANNOT_STEP_BREAKPOINT
fprintf_unfiltered (file,
"gdbarch_dump: CANNOT_STEP_BREAKPOINT # %s\n",
XSTRING (CANNOT_STEP_BREAKPOINT));
fprintf_unfiltered (file,
"gdbarch_dump: CANNOT_STEP_BREAKPOINT = %d\n",
CANNOT_STEP_BREAKPOINT);
#endif
#ifdef CANNOT_STORE_REGISTER
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"CANNOT_STORE_REGISTER(regnum)",
XSTRING (CANNOT_STORE_REGISTER (regnum)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: CANNOT_STORE_REGISTER = 0x%08lx\n",
(long) current_gdbarch->cannot_store_register
/*CANNOT_STORE_REGISTER ()*/);
#endif
#ifdef COERCE_FLOAT_TO_DOUBLE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"COERCE_FLOAT_TO_DOUBLE(formal, actual)",
XSTRING (COERCE_FLOAT_TO_DOUBLE (formal, actual)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: COERCE_FLOAT_TO_DOUBLE = 0x%08lx\n",
(long) current_gdbarch->coerce_float_to_double
/*COERCE_FLOAT_TO_DOUBLE ()*/);
#endif
#ifdef COFF_MAKE_MSYMBOL_SPECIAL
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"COFF_MAKE_MSYMBOL_SPECIAL(val, msym)",
XSTRING (COFF_MAKE_MSYMBOL_SPECIAL (val, msym)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: COFF_MAKE_MSYMBOL_SPECIAL = 0x%08lx\n",
(long) current_gdbarch->coff_make_msymbol_special
/*COFF_MAKE_MSYMBOL_SPECIAL ()*/);
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: construct_inferior_arguments = 0x%08lx\n",
(long) current_gdbarch->construct_inferior_arguments);
#ifdef CONVERT_FROM_FUNC_PTR_ADDR
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"CONVERT_FROM_FUNC_PTR_ADDR(addr)",
XSTRING (CONVERT_FROM_FUNC_PTR_ADDR (addr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: CONVERT_FROM_FUNC_PTR_ADDR = 0x%08lx\n",
(long) current_gdbarch->convert_from_func_ptr_addr
/*CONVERT_FROM_FUNC_PTR_ADDR ()*/);
#endif
#ifdef CONVERT_REGISTER_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"CONVERT_REGISTER_P(regnum)",
XSTRING (CONVERT_REGISTER_P (regnum)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: CONVERT_REGISTER_P = 0x%08lx\n",
(long) current_gdbarch->convert_register_p
/*CONVERT_REGISTER_P ()*/);
#endif
#ifdef DECR_PC_AFTER_BREAK
fprintf_unfiltered (file,
"gdbarch_dump: DECR_PC_AFTER_BREAK # %s\n",
XSTRING (DECR_PC_AFTER_BREAK));
fprintf_unfiltered (file,
"gdbarch_dump: DECR_PC_AFTER_BREAK = %ld\n",
(long) DECR_PC_AFTER_BREAK);
#endif
#ifdef DEPRECATED_DO_REGISTERS_INFO
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_DO_REGISTERS_INFO(reg_nr, fpregs)",
XSTRING (DEPRECATED_DO_REGISTERS_INFO (reg_nr, fpregs)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_DO_REGISTERS_INFO = 0x%08lx\n",
(long) current_gdbarch->deprecated_do_registers_info
/*DEPRECATED_DO_REGISTERS_INFO ()*/);
#endif
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
#ifdef DEPRECATED_EXTRACT_RETURN_VALUE
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf)",
XSTRING (DEPRECATED_EXTRACT_RETURN_VALUE (type, regbuf, valbuf)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_EXTRACT_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->deprecated_extract_return_value
/*DEPRECATED_EXTRACT_RETURN_VALUE ()*/);
#endif
#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf)",
XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regbuf)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->deprecated_extract_struct_value_address
/*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
#endif
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
#ifdef DEPRECATED_STORE_RETURN_VALUE
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DEPRECATED_STORE_RETURN_VALUE(type, valbuf)",
XSTRING (DEPRECATED_STORE_RETURN_VALUE (type, valbuf)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_STORE_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->deprecated_store_return_value
/*DEPRECATED_STORE_RETURN_VALUE ()*/);
#endif
#ifdef DWARF2_BUILD_FRAME_INFO
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DWARF2_BUILD_FRAME_INFO(objfile)",
XSTRING (DWARF2_BUILD_FRAME_INFO (objfile)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DWARF2_BUILD_FRAME_INFO = 0x%08lx\n",
(long) current_gdbarch->dwarf2_build_frame_info
/*DWARF2_BUILD_FRAME_INFO ()*/);
#endif
#ifdef DWARF2_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DWARF2_REG_TO_REGNUM(dwarf2_regnr)",
XSTRING (DWARF2_REG_TO_REGNUM (dwarf2_regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DWARF2_REG_TO_REGNUM = 0x%08lx\n",
(long) current_gdbarch->dwarf2_reg_to_regnum
/*DWARF2_REG_TO_REGNUM ()*/);
#endif
#ifdef DWARF_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"DWARF_REG_TO_REGNUM(dwarf_regnr)",
XSTRING (DWARF_REG_TO_REGNUM (dwarf_regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: DWARF_REG_TO_REGNUM = 0x%08lx\n",
(long) current_gdbarch->dwarf_reg_to_regnum
/*DWARF_REG_TO_REGNUM ()*/);
#endif
#ifdef ECOFF_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"ECOFF_REG_TO_REGNUM(ecoff_regnr)",
XSTRING (ECOFF_REG_TO_REGNUM (ecoff_regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: ECOFF_REG_TO_REGNUM = 0x%08lx\n",
(long) current_gdbarch->ecoff_reg_to_regnum
/*ECOFF_REG_TO_REGNUM ()*/);
#endif
#ifdef ELF_MAKE_MSYMBOL_SPECIAL
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"ELF_MAKE_MSYMBOL_SPECIAL(sym, msym)",
XSTRING (ELF_MAKE_MSYMBOL_SPECIAL (sym, msym)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: ELF_MAKE_MSYMBOL_SPECIAL = 0x%08lx\n",
(long) current_gdbarch->elf_make_msymbol_special
/*ELF_MAKE_MSYMBOL_SPECIAL ()*/);
#endif
#ifdef EXTRACT_RETURN_VALUE
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"EXTRACT_RETURN_VALUE(type, regcache, valbuf)",
XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: EXTRACT_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->extract_return_value
/*EXTRACT_RETURN_VALUE ()*/);
#endif
#ifdef EXTRACT_STRUCT_VALUE_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"EXTRACT_STRUCT_VALUE_ADDRESS(regcache)",
XSTRING (EXTRACT_STRUCT_VALUE_ADDRESS (regcache)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: EXTRACT_STRUCT_VALUE_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->extract_struct_value_address
/*EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
#endif
#ifdef EXTRA_STACK_ALIGNMENT_NEEDED
fprintf_unfiltered (file,
"gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED # %s\n",
XSTRING (EXTRA_STACK_ALIGNMENT_NEEDED));
fprintf_unfiltered (file,
"gdbarch_dump: EXTRA_STACK_ALIGNMENT_NEEDED = %d\n",
EXTRA_STACK_ALIGNMENT_NEEDED);
#endif
#ifdef FIX_CALL_DUMMY
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p)",
XSTRING (FIX_CALL_DUMMY (dummy, pc, fun, nargs, args, type, gcc_p)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FIX_CALL_DUMMY = 0x%08lx\n",
(long) current_gdbarch->fix_call_dummy
/*FIX_CALL_DUMMY ()*/);
#endif
#ifdef FP0_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: FP0_REGNUM # %s\n",
XSTRING (FP0_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: FP0_REGNUM = %d\n",
FP0_REGNUM);
#endif
#ifdef FP_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: FP_REGNUM # %s\n",
XSTRING (FP_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: FP_REGNUM = %d\n",
FP_REGNUM);
#endif
#ifdef FRAMELESS_FUNCTION_INVOCATION
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAMELESS_FUNCTION_INVOCATION(fi)",
XSTRING (FRAMELESS_FUNCTION_INVOCATION (fi)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAMELESS_FUNCTION_INVOCATION = 0x%08lx\n",
(long) current_gdbarch->frameless_function_invocation
/*FRAMELESS_FUNCTION_INVOCATION ()*/);
#endif
#ifdef FRAME_ARGS_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_ARGS_ADDRESS(fi)",
XSTRING (FRAME_ARGS_ADDRESS (fi)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_ARGS_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->frame_args_address
/*FRAME_ARGS_ADDRESS ()*/);
#endif
#ifdef FRAME_ARGS_SKIP
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_ARGS_SKIP # %s\n",
XSTRING (FRAME_ARGS_SKIP));
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_ARGS_SKIP = %ld\n",
(long) FRAME_ARGS_SKIP);
#endif
#ifdef FRAME_CHAIN
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_CHAIN(frame)",
XSTRING (FRAME_CHAIN (frame)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_CHAIN = 0x%08lx\n",
(long) current_gdbarch->frame_chain
/*FRAME_CHAIN ()*/);
#endif
#ifdef FRAME_CHAIN_VALID
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_CHAIN_VALID(chain, thisframe)",
XSTRING (FRAME_CHAIN_VALID (chain, thisframe)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_CHAIN_VALID = 0x%08lx\n",
(long) current_gdbarch->frame_chain_valid
/*FRAME_CHAIN_VALID ()*/);
#endif
#ifdef FRAME_INIT_SAVED_REGS
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_INIT_SAVED_REGS(frame)",
XSTRING (FRAME_INIT_SAVED_REGS (frame)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_INIT_SAVED_REGS = 0x%08lx\n",
(long) current_gdbarch->frame_init_saved_regs
/*FRAME_INIT_SAVED_REGS ()*/);
#endif
#ifdef FRAME_LOCALS_ADDRESS
2000-12-15 12:33:08 +00:00
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_LOCALS_ADDRESS(fi)",
XSTRING (FRAME_LOCALS_ADDRESS (fi)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_LOCALS_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->frame_locals_address
/*FRAME_LOCALS_ADDRESS ()*/);
2000-12-15 12:33:08 +00:00
#endif
#ifdef FRAME_NUM_ARGS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_NUM_ARGS(frame)",
XSTRING (FRAME_NUM_ARGS (frame)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_NUM_ARGS = 0x%08lx\n",
(long) current_gdbarch->frame_num_args
/*FRAME_NUM_ARGS ()*/);
#endif
#ifdef FRAME_SAVED_PC
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"FRAME_SAVED_PC(fi)",
XSTRING (FRAME_SAVED_PC (fi)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: FRAME_SAVED_PC = 0x%08lx\n",
(long) current_gdbarch->frame_saved_pc
/*FRAME_SAVED_PC ()*/);
#endif
#ifdef FUNCTION_START_OFFSET
fprintf_unfiltered (file,
"gdbarch_dump: FUNCTION_START_OFFSET # %s\n",
XSTRING (FUNCTION_START_OFFSET));
fprintf_unfiltered (file,
"gdbarch_dump: FUNCTION_START_OFFSET = %ld\n",
(long) FUNCTION_START_OFFSET);
#endif
#ifdef GET_LONGJMP_TARGET
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"GET_LONGJMP_TARGET(pc)",
XSTRING (GET_LONGJMP_TARGET (pc)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: GET_LONGJMP_TARGET = 0x%08lx\n",
(long) current_gdbarch->get_longjmp_target
/*GET_LONGJMP_TARGET ()*/);
#endif
#ifdef GET_SAVED_REGISTER
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval)",
XSTRING (GET_SAVED_REGISTER (raw_buffer, optimized, addrp, frame, regnum, lval)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: GET_SAVED_REGISTER = 0x%08lx\n",
(long) current_gdbarch->get_saved_register
/*GET_SAVED_REGISTER ()*/);
#endif
#ifdef HAVE_NONSTEPPABLE_WATCHPOINT
fprintf_unfiltered (file,
"gdbarch_dump: HAVE_NONSTEPPABLE_WATCHPOINT # %s\n",
XSTRING (HAVE_NONSTEPPABLE_WATCHPOINT));
fprintf_unfiltered (file,
"gdbarch_dump: HAVE_NONSTEPPABLE_WATCHPOINT = %d\n",
HAVE_NONSTEPPABLE_WATCHPOINT);
#endif
#ifdef INIT_EXTRA_FRAME_INFO
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"INIT_EXTRA_FRAME_INFO(fromleaf, frame)",
XSTRING (INIT_EXTRA_FRAME_INFO (fromleaf, frame)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: INIT_EXTRA_FRAME_INFO = 0x%08lx\n",
(long) current_gdbarch->init_extra_frame_info
/*INIT_EXTRA_FRAME_INFO ()*/);
#endif
#ifdef INIT_FRAME_PC
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"INIT_FRAME_PC(fromleaf, prev)",
XSTRING (INIT_FRAME_PC (fromleaf, prev)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: INIT_FRAME_PC = 0x%08lx\n",
(long) current_gdbarch->init_frame_pc
/*INIT_FRAME_PC ()*/);
#endif
#ifdef INIT_FRAME_PC_FIRST
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"INIT_FRAME_PC_FIRST(fromleaf, prev)",
XSTRING (INIT_FRAME_PC_FIRST (fromleaf, prev)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: INIT_FRAME_PC_FIRST = 0x%08lx\n",
(long) current_gdbarch->init_frame_pc_first
/*INIT_FRAME_PC_FIRST ()*/);
#endif
#ifdef INNER_THAN
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"INNER_THAN(lhs, rhs)",
XSTRING (INNER_THAN (lhs, rhs)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: INNER_THAN = 0x%08lx\n",
(long) current_gdbarch->inner_than
/*INNER_THAN ()*/);
#endif
#ifdef INTEGER_TO_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"INTEGER_TO_ADDRESS(type, buf)",
XSTRING (INTEGER_TO_ADDRESS (type, buf)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: INTEGER_TO_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->integer_to_address
/*INTEGER_TO_ADDRESS ()*/);
#endif
#ifdef IN_SOLIB_CALL_TRAMPOLINE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"IN_SOLIB_CALL_TRAMPOLINE(pc, name)",
XSTRING (IN_SOLIB_CALL_TRAMPOLINE (pc, name)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: IN_SOLIB_CALL_TRAMPOLINE = 0x%08lx\n",
(long) current_gdbarch->in_solib_call_trampoline
/*IN_SOLIB_CALL_TRAMPOLINE ()*/);
#endif
#ifdef IN_SOLIB_RETURN_TRAMPOLINE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"IN_SOLIB_RETURN_TRAMPOLINE(pc, name)",
XSTRING (IN_SOLIB_RETURN_TRAMPOLINE (pc, name)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: IN_SOLIB_RETURN_TRAMPOLINE = 0x%08lx\n",
(long) current_gdbarch->in_solib_return_trampoline
/*IN_SOLIB_RETURN_TRAMPOLINE ()*/);
#endif
#ifdef MAX_REGISTER_RAW_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: MAX_REGISTER_RAW_SIZE # %s\n",
XSTRING (MAX_REGISTER_RAW_SIZE));
fprintf_unfiltered (file,
"gdbarch_dump: MAX_REGISTER_RAW_SIZE = %d\n",
MAX_REGISTER_RAW_SIZE);
#endif
#ifdef MAX_REGISTER_VIRTUAL_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: MAX_REGISTER_VIRTUAL_SIZE # %s\n",
XSTRING (MAX_REGISTER_VIRTUAL_SIZE));
fprintf_unfiltered (file,
"gdbarch_dump: MAX_REGISTER_VIRTUAL_SIZE = %d\n",
MAX_REGISTER_VIRTUAL_SIZE);
#endif
#ifdef MEMORY_INSERT_BREAKPOINT
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"MEMORY_INSERT_BREAKPOINT(addr, contents_cache)",
XSTRING (MEMORY_INSERT_BREAKPOINT (addr, contents_cache)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: MEMORY_INSERT_BREAKPOINT = 0x%08lx\n",
(long) current_gdbarch->memory_insert_breakpoint
/*MEMORY_INSERT_BREAKPOINT ()*/);
#endif
#ifdef MEMORY_REMOVE_BREAKPOINT
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"MEMORY_REMOVE_BREAKPOINT(addr, contents_cache)",
XSTRING (MEMORY_REMOVE_BREAKPOINT (addr, contents_cache)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: MEMORY_REMOVE_BREAKPOINT = 0x%08lx\n",
(long) current_gdbarch->memory_remove_breakpoint
/*MEMORY_REMOVE_BREAKPOINT ()*/);
#endif
#ifdef NAME_OF_MALLOC
fprintf_unfiltered (file,
"gdbarch_dump: NAME_OF_MALLOC # %s\n",
XSTRING (NAME_OF_MALLOC));
fprintf_unfiltered (file,
"gdbarch_dump: NAME_OF_MALLOC = %ld\n",
(long) NAME_OF_MALLOC);
#endif
#ifdef NPC_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: NPC_REGNUM # %s\n",
XSTRING (NPC_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: NPC_REGNUM = %d\n",
NPC_REGNUM);
#endif
#ifdef NUM_PSEUDO_REGS
fprintf_unfiltered (file,
"gdbarch_dump: NUM_PSEUDO_REGS # %s\n",
XSTRING (NUM_PSEUDO_REGS));
fprintf_unfiltered (file,
"gdbarch_dump: NUM_PSEUDO_REGS = %d\n",
NUM_PSEUDO_REGS);
#endif
#ifdef NUM_REGS
fprintf_unfiltered (file,
"gdbarch_dump: NUM_REGS # %s\n",
XSTRING (NUM_REGS));
fprintf_unfiltered (file,
"gdbarch_dump: NUM_REGS = %d\n",
NUM_REGS);
#endif
#ifdef PARM_BOUNDARY
fprintf_unfiltered (file,
"gdbarch_dump: PARM_BOUNDARY # %s\n",
XSTRING (PARM_BOUNDARY));
fprintf_unfiltered (file,
"gdbarch_dump: PARM_BOUNDARY = %d\n",
PARM_BOUNDARY);
#endif
#ifdef PC_IN_CALL_DUMMY
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PC_IN_CALL_DUMMY(pc, sp, frame_address)",
XSTRING (PC_IN_CALL_DUMMY (pc, sp, frame_address)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PC_IN_CALL_DUMMY = 0x%08lx\n",
(long) current_gdbarch->pc_in_call_dummy
/*PC_IN_CALL_DUMMY ()*/);
#endif
#ifdef PC_IN_SIGTRAMP
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PC_IN_SIGTRAMP(pc, name)",
XSTRING (PC_IN_SIGTRAMP (pc, name)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PC_IN_SIGTRAMP = 0x%08lx\n",
(long) current_gdbarch->pc_in_sigtramp
/*PC_IN_SIGTRAMP ()*/);
#endif
#ifdef PC_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: PC_REGNUM # %s\n",
XSTRING (PC_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: PC_REGNUM = %d\n",
PC_REGNUM);
#endif
#ifdef POINTER_TO_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"POINTER_TO_ADDRESS(type, buf)",
XSTRING (POINTER_TO_ADDRESS (type, buf)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: POINTER_TO_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->pointer_to_address
/*POINTER_TO_ADDRESS ()*/);
#endif
#ifdef POP_FRAME
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"POP_FRAME(-)",
XSTRING (POP_FRAME (-)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: POP_FRAME = 0x%08lx\n",
(long) current_gdbarch->pop_frame
/*POP_FRAME ()*/);
#endif
#ifdef PREPARE_TO_PROCEED
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PREPARE_TO_PROCEED(select_it)",
XSTRING (PREPARE_TO_PROCEED (select_it)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PREPARE_TO_PROCEED = 0x%08lx\n",
(long) current_gdbarch->prepare_to_proceed
/*PREPARE_TO_PROCEED ()*/);
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: print_float_info = 0x%08lx\n",
(long) current_gdbarch->print_float_info);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: print_registers_info = 0x%08lx\n",
(long) current_gdbarch->print_registers_info);
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: print_vector_info = 0x%08lx\n",
(long) current_gdbarch->print_vector_info);
#ifdef PROLOGUE_FRAMELESS_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PROLOGUE_FRAMELESS_P(ip)",
XSTRING (PROLOGUE_FRAMELESS_P (ip)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PROLOGUE_FRAMELESS_P = 0x%08lx\n",
(long) current_gdbarch->prologue_frameless_p
/*PROLOGUE_FRAMELESS_P ()*/);
#endif
#ifdef PS_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: PS_REGNUM # %s\n",
XSTRING (PS_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: PS_REGNUM = %d\n",
PS_REGNUM);
#endif
#ifdef PUSH_ARGUMENTS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr)",
XSTRING (PUSH_ARGUMENTS (nargs, args, sp, struct_return, struct_addr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PUSH_ARGUMENTS = 0x%08lx\n",
(long) current_gdbarch->push_arguments
/*PUSH_ARGUMENTS ()*/);
#endif
#ifdef PUSH_DUMMY_FRAME
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PUSH_DUMMY_FRAME(-)",
XSTRING (PUSH_DUMMY_FRAME (-)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PUSH_DUMMY_FRAME = 0x%08lx\n",
(long) current_gdbarch->push_dummy_frame
/*PUSH_DUMMY_FRAME ()*/);
#endif
#ifdef PUSH_RETURN_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"PUSH_RETURN_ADDRESS(pc, sp)",
XSTRING (PUSH_RETURN_ADDRESS (pc, sp)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: PUSH_RETURN_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->push_return_address
/*PUSH_RETURN_ADDRESS ()*/);
#endif
#ifdef REGISTER_BYTE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_BYTE(reg_nr)",
XSTRING (REGISTER_BYTE (reg_nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_BYTE = 0x%08lx\n",
(long) current_gdbarch->register_byte
/*REGISTER_BYTE ()*/);
#endif
#ifdef REGISTER_BYTES
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_BYTES # %s\n",
XSTRING (REGISTER_BYTES));
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_BYTES = %d\n",
REGISTER_BYTES);
#endif
#ifdef REGISTER_BYTES_OK
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_BYTES_OK(nr_bytes)",
XSTRING (REGISTER_BYTES_OK (nr_bytes)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_BYTES_OK = 0x%08lx\n",
(long) current_gdbarch->register_bytes_ok
/*REGISTER_BYTES_OK ()*/);
#endif
#ifdef REGISTER_CONVERTIBLE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_CONVERTIBLE(nr)",
XSTRING (REGISTER_CONVERTIBLE (nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_CONVERTIBLE = 0x%08lx\n",
(long) current_gdbarch->register_convertible
/*REGISTER_CONVERTIBLE ()*/);
#endif
#ifdef REGISTER_CONVERT_TO_RAW
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_CONVERT_TO_RAW(type, regnum, from, to)",
XSTRING (REGISTER_CONVERT_TO_RAW (type, regnum, from, to)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_CONVERT_TO_RAW = 0x%08lx\n",
(long) current_gdbarch->register_convert_to_raw
/*REGISTER_CONVERT_TO_RAW ()*/);
#endif
#ifdef REGISTER_CONVERT_TO_VIRTUAL
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to)",
XSTRING (REGISTER_CONVERT_TO_VIRTUAL (regnum, type, from, to)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_CONVERT_TO_VIRTUAL = 0x%08lx\n",
(long) current_gdbarch->register_convert_to_virtual
/*REGISTER_CONVERT_TO_VIRTUAL ()*/);
#endif
#ifdef REGISTER_NAME
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_NAME(regnr)",
XSTRING (REGISTER_NAME (regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_NAME = 0x%08lx\n",
(long) current_gdbarch->register_name
/*REGISTER_NAME ()*/);
#endif
#ifdef REGISTER_RAW_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_RAW_SIZE(reg_nr)",
XSTRING (REGISTER_RAW_SIZE (reg_nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_RAW_SIZE = 0x%08lx\n",
(long) current_gdbarch->register_raw_size
/*REGISTER_RAW_SIZE ()*/);
#endif
#ifdef REGISTER_SIM_REGNO
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_SIM_REGNO(reg_nr)",
XSTRING (REGISTER_SIM_REGNO (reg_nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_SIM_REGNO = 0x%08lx\n",
(long) current_gdbarch->register_sim_regno
/*REGISTER_SIM_REGNO ()*/);
#endif
#ifdef REGISTER_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_SIZE # %s\n",
XSTRING (REGISTER_SIZE));
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_SIZE = %d\n",
REGISTER_SIZE);
#endif
#ifdef REGISTER_TO_VALUE
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_TO_VALUE(regnum, type, from, to)",
XSTRING (REGISTER_TO_VALUE (regnum, type, from, to)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_TO_VALUE = 0x%08lx\n",
(long) current_gdbarch->register_to_value
/*REGISTER_TO_VALUE ()*/);
#endif
#ifdef REGISTER_VIRTUAL_SIZE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_VIRTUAL_SIZE(reg_nr)",
XSTRING (REGISTER_VIRTUAL_SIZE (reg_nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_VIRTUAL_SIZE = 0x%08lx\n",
(long) current_gdbarch->register_virtual_size
/*REGISTER_VIRTUAL_SIZE ()*/);
#endif
#ifdef REGISTER_VIRTUAL_TYPE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REGISTER_VIRTUAL_TYPE(reg_nr)",
XSTRING (REGISTER_VIRTUAL_TYPE (reg_nr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REGISTER_VIRTUAL_TYPE = 0x%08lx\n",
(long) current_gdbarch->register_virtual_type
/*REGISTER_VIRTUAL_TYPE ()*/);
#endif
#ifdef REG_STRUCT_HAS_ADDR
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REG_STRUCT_HAS_ADDR(gcc_p, type)",
XSTRING (REG_STRUCT_HAS_ADDR (gcc_p, type)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REG_STRUCT_HAS_ADDR = 0x%08lx\n",
(long) current_gdbarch->reg_struct_has_addr
/*REG_STRUCT_HAS_ADDR ()*/);
#endif
#ifdef REMOTE_TRANSLATE_XFER_ADDRESS
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len)",
XSTRING (REMOTE_TRANSLATE_XFER_ADDRESS (gdb_addr, gdb_len, rem_addr, rem_len)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: REMOTE_TRANSLATE_XFER_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->remote_translate_xfer_address
/*REMOTE_TRANSLATE_XFER_ADDRESS ()*/);
#endif
#ifdef RETURN_VALUE_ON_STACK
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"RETURN_VALUE_ON_STACK(type)",
XSTRING (RETURN_VALUE_ON_STACK (type)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: RETURN_VALUE_ON_STACK = 0x%08lx\n",
(long) current_gdbarch->return_value_on_stack
/*RETURN_VALUE_ON_STACK ()*/);
#endif
#ifdef SAVED_PC_AFTER_CALL
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SAVED_PC_AFTER_CALL(frame)",
XSTRING (SAVED_PC_AFTER_CALL (frame)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SAVED_PC_AFTER_CALL = 0x%08lx\n",
(long) current_gdbarch->saved_pc_after_call
/*SAVED_PC_AFTER_CALL ()*/);
#endif
#ifdef SAVE_DUMMY_FRAME_TOS
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SAVE_DUMMY_FRAME_TOS(sp)",
XSTRING (SAVE_DUMMY_FRAME_TOS (sp)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SAVE_DUMMY_FRAME_TOS = 0x%08lx\n",
(long) current_gdbarch->save_dummy_frame_tos
/*SAVE_DUMMY_FRAME_TOS ()*/);
#endif
#ifdef SDB_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SDB_REG_TO_REGNUM(sdb_regnr)",
XSTRING (SDB_REG_TO_REGNUM (sdb_regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SDB_REG_TO_REGNUM = 0x%08lx\n",
(long) current_gdbarch->sdb_reg_to_regnum
/*SDB_REG_TO_REGNUM ()*/);
#endif
#ifdef SIGTRAMP_END
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SIGTRAMP_END(pc)",
XSTRING (SIGTRAMP_END (pc)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SIGTRAMP_END = 0x%08lx\n",
(long) current_gdbarch->sigtramp_end
/*SIGTRAMP_END ()*/);
#endif
#ifdef SIGTRAMP_START
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SIGTRAMP_START(pc)",
XSTRING (SIGTRAMP_START (pc)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SIGTRAMP_START = 0x%08lx\n",
(long) current_gdbarch->sigtramp_start
/*SIGTRAMP_START ()*/);
#endif
#ifdef SIZEOF_CALL_DUMMY_WORDS
fprintf_unfiltered (file,
"gdbarch_dump: SIZEOF_CALL_DUMMY_WORDS # %s\n",
XSTRING (SIZEOF_CALL_DUMMY_WORDS));
fprintf_unfiltered (file,
"gdbarch_dump: SIZEOF_CALL_DUMMY_WORDS = 0x%08lx\n",
(long) SIZEOF_CALL_DUMMY_WORDS);
#endif
#ifdef SKIP_PROLOGUE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SKIP_PROLOGUE(ip)",
XSTRING (SKIP_PROLOGUE (ip)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SKIP_PROLOGUE = 0x%08lx\n",
(long) current_gdbarch->skip_prologue
/*SKIP_PROLOGUE ()*/);
#endif
#ifdef SKIP_TRAMPOLINE_CODE
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SKIP_TRAMPOLINE_CODE(pc)",
XSTRING (SKIP_TRAMPOLINE_CODE (pc)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SKIP_TRAMPOLINE_CODE = 0x%08lx\n",
(long) current_gdbarch->skip_trampoline_code
/*SKIP_TRAMPOLINE_CODE ()*/);
#endif
#ifdef SMASH_TEXT_ADDRESS
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SMASH_TEXT_ADDRESS(addr)",
XSTRING (SMASH_TEXT_ADDRESS (addr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SMASH_TEXT_ADDRESS = 0x%08lx\n",
(long) current_gdbarch->smash_text_address
/*SMASH_TEXT_ADDRESS ()*/);
#endif
#ifdef SOFTWARE_SINGLE_STEP
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p)",
XSTRING (SOFTWARE_SINGLE_STEP (sig, insert_breakpoints_p)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: SOFTWARE_SINGLE_STEP = 0x%08lx\n",
(long) current_gdbarch->software_single_step
/*SOFTWARE_SINGLE_STEP ()*/);
#endif
#ifdef SP_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: SP_REGNUM # %s\n",
XSTRING (SP_REGNUM));
fprintf_unfiltered (file,
"gdbarch_dump: SP_REGNUM = %d\n",
SP_REGNUM);
#endif
#ifdef STAB_REG_TO_REGNUM
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"STAB_REG_TO_REGNUM(stab_regnr)",
XSTRING (STAB_REG_TO_REGNUM (stab_regnr)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: STAB_REG_TO_REGNUM = 0x%08lx\n",
(long) current_gdbarch->stab_reg_to_regnum
/*STAB_REG_TO_REGNUM ()*/);
#endif
#ifdef STACK_ALIGN
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"STACK_ALIGN(sp)",
XSTRING (STACK_ALIGN (sp)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: STACK_ALIGN = 0x%08lx\n",
(long) current_gdbarch->stack_align
/*STACK_ALIGN ()*/);
#endif
#ifdef STORE_RETURN_VALUE
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
"STORE_RETURN_VALUE(type, regcache, valbuf)",
XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: STORE_RETURN_VALUE = 0x%08lx\n",
(long) current_gdbarch->store_return_value
/*STORE_RETURN_VALUE ()*/);
2001-06-15 22:10:21 +00:00
#endif
#ifdef STORE_STRUCT_RETURN
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"STORE_STRUCT_RETURN(addr, sp)",
XSTRING (STORE_STRUCT_RETURN (addr, sp)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: STORE_STRUCT_RETURN = 0x%08lx\n",
(long) current_gdbarch->store_struct_return
/*STORE_STRUCT_RETURN ()*/);
#endif
#ifdef TARGET_ADDR_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ADDR_BIT # %s\n",
XSTRING (TARGET_ADDR_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ADDR_BIT = %d\n",
TARGET_ADDR_BIT);
#endif
#ifdef TARGET_ARCHITECTURE
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ARCHITECTURE # %s\n",
XSTRING (TARGET_ARCHITECTURE));
1999-06-14 18:08:47 +00:00
if (TARGET_ARCHITECTURE != NULL)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ARCHITECTURE = %s\n",
1999-07-19 23:30:11 +00:00
TARGET_ARCHITECTURE->printable_name);
#endif
#ifdef TARGET_BFD_VMA_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BFD_VMA_BIT # %s\n",
XSTRING (TARGET_BFD_VMA_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BFD_VMA_BIT = %d\n",
TARGET_BFD_VMA_BIT);
#endif
#ifdef TARGET_BYTE_ORDER
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BYTE_ORDER # %s\n",
XSTRING (TARGET_BYTE_ORDER));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BYTE_ORDER = %ld\n",
1999-07-19 23:30:11 +00:00
(long) TARGET_BYTE_ORDER);
#endif
#ifdef TARGET_CHAR_SIGNED
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_CHAR_SIGNED # %s\n",
XSTRING (TARGET_CHAR_SIGNED));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_CHAR_SIGNED = %d\n",
TARGET_CHAR_SIGNED);
#endif
#ifdef TARGET_DOUBLE_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_DOUBLE_BIT # %s\n",
XSTRING (TARGET_DOUBLE_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_DOUBLE_BIT = %d\n",
TARGET_DOUBLE_BIT);
#endif
#ifdef TARGET_DOUBLE_FORMAT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_DOUBLE_FORMAT # %s\n",
XSTRING (TARGET_DOUBLE_FORMAT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_DOUBLE_FORMAT = %s\n",
gdbarch->float_format->name);
#endif
#ifdef TARGET_FLOAT_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_FLOAT_BIT # %s\n",
XSTRING (TARGET_FLOAT_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_FLOAT_BIT = %d\n",
TARGET_FLOAT_BIT);
#endif
#ifdef TARGET_FLOAT_FORMAT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_FLOAT_FORMAT # %s\n",
XSTRING (TARGET_FLOAT_FORMAT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_FLOAT_FORMAT = %s\n",
gdbarch->float_format->name);
#endif
#ifdef TARGET_INT_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_INT_BIT # %s\n",
XSTRING (TARGET_INT_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_INT_BIT = %d\n",
TARGET_INT_BIT);
#endif
#ifdef TARGET_LONG_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_BIT # %s\n",
XSTRING (TARGET_LONG_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_BIT = %d\n",
TARGET_LONG_BIT);
#endif
#ifdef TARGET_LONG_DOUBLE_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_DOUBLE_BIT # %s\n",
XSTRING (TARGET_LONG_DOUBLE_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_DOUBLE_BIT = %d\n",
TARGET_LONG_DOUBLE_BIT);
#endif
#ifdef TARGET_LONG_DOUBLE_FORMAT
2000-08-11 02:55:38 +00:00
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_DOUBLE_FORMAT # %s\n",
XSTRING (TARGET_LONG_DOUBLE_FORMAT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_DOUBLE_FORMAT = %s\n",
gdbarch->float_format->name);
#endif
#ifdef TARGET_LONG_LONG_BIT
2000-08-11 02:55:38 +00:00
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_LONG_BIT # %s\n",
XSTRING (TARGET_LONG_LONG_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_LONG_LONG_BIT = %d\n",
TARGET_LONG_LONG_BIT);
#endif
#ifdef TARGET_PRINT_INSN
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_PRINT_INSN(vma, info)",
XSTRING (TARGET_PRINT_INSN (vma, info)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_PRINT_INSN = 0x%08lx\n",
(long) current_gdbarch->print_insn
/*TARGET_PRINT_INSN ()*/);
#endif
#ifdef TARGET_PTR_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_PTR_BIT # %s\n",
XSTRING (TARGET_PTR_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_PTR_BIT = %d\n",
TARGET_PTR_BIT);
#endif
#ifdef TARGET_READ_FP
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_READ_FP()",
XSTRING (TARGET_READ_FP ()));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_READ_FP = 0x%08lx\n",
(long) current_gdbarch->read_fp
/*TARGET_READ_FP ()*/);
#endif
#ifdef TARGET_READ_PC
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_READ_PC(ptid)",
XSTRING (TARGET_READ_PC (ptid)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_READ_PC = 0x%08lx\n",
(long) current_gdbarch->read_pc
/*TARGET_READ_PC ()*/);
#endif
#ifdef TARGET_READ_SP
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_READ_SP()",
XSTRING (TARGET_READ_SP ()));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_READ_SP = 0x%08lx\n",
(long) current_gdbarch->read_sp
/*TARGET_READ_SP ()*/);
#endif
#ifdef TARGET_SHORT_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_SHORT_BIT # %s\n",
XSTRING (TARGET_SHORT_BIT));
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_SHORT_BIT = %d\n",
TARGET_SHORT_BIT);
#endif
#ifdef TARGET_VIRTUAL_FRAME_POINTER
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_VIRTUAL_FRAME_POINTER(pc, frame_regnum, frame_offset)",
XSTRING (TARGET_VIRTUAL_FRAME_POINTER (pc, frame_regnum, frame_offset)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_VIRTUAL_FRAME_POINTER = 0x%08lx\n",
(long) current_gdbarch->virtual_frame_pointer
/*TARGET_VIRTUAL_FRAME_POINTER ()*/);
#endif
#ifdef TARGET_WRITE_PC
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_WRITE_PC(val, ptid)",
XSTRING (TARGET_WRITE_PC (val, ptid)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_WRITE_PC = 0x%08lx\n",
(long) current_gdbarch->write_pc
/*TARGET_WRITE_PC ()*/);
#endif
#ifdef TARGET_WRITE_SP
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"TARGET_WRITE_SP(val)",
XSTRING (TARGET_WRITE_SP (val)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_WRITE_SP = 0x%08lx\n",
(long) current_gdbarch->write_sp
/*TARGET_WRITE_SP ()*/);
#endif
#ifdef USE_GENERIC_DUMMY_FRAMES
fprintf_unfiltered (file,
"gdbarch_dump: USE_GENERIC_DUMMY_FRAMES # %s\n",
XSTRING (USE_GENERIC_DUMMY_FRAMES));
fprintf_unfiltered (file,
"gdbarch_dump: USE_GENERIC_DUMMY_FRAMES = %d\n",
USE_GENERIC_DUMMY_FRAMES);
#endif
#ifdef USE_STRUCT_CONVENTION
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"USE_STRUCT_CONVENTION(gcc_p, value_type)",
XSTRING (USE_STRUCT_CONVENTION (gcc_p, value_type)));
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: USE_STRUCT_CONVENTION = 0x%08lx\n",
(long) current_gdbarch->use_struct_convention
/*USE_STRUCT_CONVENTION ()*/);
#endif
#ifdef VALUE_TO_REGISTER
#if GDB_MULTI_ARCH
/* Macro might contain `[{}]' when not multi-arch */
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
"VALUE_TO_REGISTER(type, regnum, from, to)",
XSTRING (VALUE_TO_REGISTER (type, regnum, from, to)));
#endif
if (GDB_MULTI_ARCH)
fprintf_unfiltered (file,
"gdbarch_dump: VALUE_TO_REGISTER = 0x%08lx\n",
(long) current_gdbarch->value_to_register
/*VALUE_TO_REGISTER ()*/);
#endif
if (current_gdbarch->dump_tdep != NULL)
current_gdbarch->dump_tdep (current_gdbarch, file);
1999-06-14 18:08:47 +00:00
}
struct gdbarch_tdep *
1999-08-31 01:14:27 +00:00
gdbarch_tdep (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_tdep called\n");
return gdbarch->tdep;
}
const struct bfd_arch_info *
1999-08-31 01:14:27 +00:00
gdbarch_bfd_arch_info (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_arch_info called\n");
return gdbarch->bfd_arch_info;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_byte_order (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_byte_order called\n");
return gdbarch->byte_order;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_short_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of short_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_short_bit called\n");
return gdbarch->short_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_short_bit (struct gdbarch *gdbarch,
int short_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->short_bit = short_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_int_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of int_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_int_bit called\n");
return gdbarch->int_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_int_bit (struct gdbarch *gdbarch,
int int_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->int_bit = int_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_long_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of long_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_long_bit called\n");
return gdbarch->long_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_long_bit (struct gdbarch *gdbarch,
int long_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->long_bit = long_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_long_long_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of long_long_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_long_long_bit called\n");
return gdbarch->long_long_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_long_long_bit (struct gdbarch *gdbarch,
int long_long_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->long_long_bit = long_long_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_float_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of float_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_float_bit called\n");
return gdbarch->float_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_float_bit (struct gdbarch *gdbarch,
int float_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->float_bit = float_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_double_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of double_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_double_bit called\n");
return gdbarch->double_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_double_bit (struct gdbarch *gdbarch,
int double_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->double_bit = double_bit;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_long_double_bit (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of long_double_bit, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_bit called\n");
return gdbarch->long_double_bit;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_long_double_bit (struct gdbarch *gdbarch,
int long_double_bit)
1999-06-14 18:08:47 +00:00
{
gdbarch->long_double_bit = long_double_bit;
}
2000-08-11 02:55:38 +00:00
int
gdbarch_ptr_bit (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of ptr_bit, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_ptr_bit called\n");
return gdbarch->ptr_bit;
}
void
set_gdbarch_ptr_bit (struct gdbarch *gdbarch,
int ptr_bit)
{
gdbarch->ptr_bit = ptr_bit;
}
int
gdbarch_addr_bit (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->addr_bit == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_addr_bit invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_addr_bit called\n");
return gdbarch->addr_bit;
}
void
set_gdbarch_addr_bit (struct gdbarch *gdbarch,
int addr_bit)
{
gdbarch->addr_bit = addr_bit;
}
2000-08-11 02:55:38 +00:00
int
gdbarch_bfd_vma_bit (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
2000-08-11 02:55:38 +00:00
/* Skip verify of bfd_vma_bit, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_bfd_vma_bit called\n");
return gdbarch->bfd_vma_bit;
}
void
set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch,
int bfd_vma_bit)
{
gdbarch->bfd_vma_bit = bfd_vma_bit;
}
int
gdbarch_char_signed (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->char_signed == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_char_signed invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_char_signed called\n");
return gdbarch->char_signed;
}
void
set_gdbarch_char_signed (struct gdbarch *gdbarch,
int char_signed)
{
gdbarch->char_signed = char_signed;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
2001-05-04 04:15:33 +00:00
gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->read_pc == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_read_pc invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_read_pc called\n");
2001-05-04 04:15:33 +00:00
return gdbarch->read_pc (ptid);
1999-06-14 18:08:47 +00:00
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_read_pc (struct gdbarch *gdbarch,
gdbarch_read_pc_ftype read_pc)
1999-06-14 18:08:47 +00:00
{
gdbarch->read_pc = read_pc;
}
void
2001-05-04 04:15:33 +00:00
gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->write_pc == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_write_pc invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_write_pc called\n");
2001-05-04 04:15:33 +00:00
gdbarch->write_pc (val, ptid);
1999-06-14 18:08:47 +00:00
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_write_pc (struct gdbarch *gdbarch,
gdbarch_write_pc_ftype write_pc)
1999-06-14 18:08:47 +00:00
{
gdbarch->write_pc = write_pc;
}
CORE_ADDR
gdbarch_read_fp (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->read_fp == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_read_fp invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_read_fp called\n");
return gdbarch->read_fp ();
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_read_fp (struct gdbarch *gdbarch,
gdbarch_read_fp_ftype read_fp)
1999-06-14 18:08:47 +00:00
{
gdbarch->read_fp = read_fp;
}
CORE_ADDR
gdbarch_read_sp (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->read_sp == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_read_sp invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_read_sp called\n");
return gdbarch->read_sp ();
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_read_sp (struct gdbarch *gdbarch,
gdbarch_read_sp_ftype read_sp)
1999-06-14 18:08:47 +00:00
{
gdbarch->read_sp = read_sp;
}
void
gdbarch_write_sp (struct gdbarch *gdbarch, CORE_ADDR val)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->write_sp == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_write_sp invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_write_sp called\n");
gdbarch->write_sp (val);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_write_sp (struct gdbarch *gdbarch,
gdbarch_write_sp_ftype write_sp)
1999-06-14 18:08:47 +00:00
{
gdbarch->write_sp = write_sp;
}
void
gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->virtual_frame_pointer == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_virtual_frame_pointer invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_virtual_frame_pointer called\n");
gdbarch->virtual_frame_pointer (pc, frame_regnum, frame_offset);
}
void
set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch,
gdbarch_virtual_frame_pointer_ftype virtual_frame_pointer)
{
gdbarch->virtual_frame_pointer = virtual_frame_pointer;
}
int
gdbarch_pseudo_register_read_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->pseudo_register_read != 0;
}
void
gdbarch_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->pseudo_register_read == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pseudo_register_read invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_read called\n");
gdbarch->pseudo_register_read (gdbarch, regcache, cookednum, buf);
}
void
set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch,
gdbarch_pseudo_register_read_ftype pseudo_register_read)
{
gdbarch->pseudo_register_read = pseudo_register_read;
}
int
gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->pseudo_register_write != 0;
}
void
gdbarch_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->pseudo_register_write == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pseudo_register_write invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pseudo_register_write called\n");
gdbarch->pseudo_register_write (gdbarch, regcache, cookednum, buf);
}
void
set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch,
gdbarch_pseudo_register_write_ftype pseudo_register_write)
{
gdbarch->pseudo_register_write = pseudo_register_write;
}
1999-06-14 18:08:47 +00:00
int
1999-08-31 01:14:27 +00:00
gdbarch_num_regs (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->num_regs == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_num_regs invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_num_regs called\n");
return gdbarch->num_regs;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_num_regs (struct gdbarch *gdbarch,
int num_regs)
1999-06-14 18:08:47 +00:00
{
gdbarch->num_regs = num_regs;
}
int
gdbarch_num_pseudo_regs (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of num_pseudo_regs, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_num_pseudo_regs called\n");
return gdbarch->num_pseudo_regs;
}
void
set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch,
int num_pseudo_regs)
{
gdbarch->num_pseudo_regs = num_pseudo_regs;
}
1999-06-14 18:08:47 +00:00
int
1999-08-31 01:14:27 +00:00
gdbarch_sp_regnum (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
/* Skip verify of sp_regnum, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_sp_regnum called\n");
return gdbarch->sp_regnum;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_sp_regnum (struct gdbarch *gdbarch,
int sp_regnum)
1999-06-14 18:08:47 +00:00
{
gdbarch->sp_regnum = sp_regnum;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_fp_regnum (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
/* Skip verify of fp_regnum, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_fp_regnum called\n");
return gdbarch->fp_regnum;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_fp_regnum (struct gdbarch *gdbarch,
int fp_regnum)
1999-06-14 18:08:47 +00:00
{
gdbarch->fp_regnum = fp_regnum;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_pc_regnum (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
/* Skip verify of pc_regnum, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_regnum called\n");
return gdbarch->pc_regnum;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_pc_regnum (struct gdbarch *gdbarch,
int pc_regnum)
1999-06-14 18:08:47 +00:00
{
gdbarch->pc_regnum = pc_regnum;
}
int
gdbarch_ps_regnum (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of ps_regnum, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_ps_regnum called\n");
return gdbarch->ps_regnum;
}
void
set_gdbarch_ps_regnum (struct gdbarch *gdbarch,
int ps_regnum)
{
gdbarch->ps_regnum = ps_regnum;
}
int
gdbarch_fp0_regnum (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of fp0_regnum, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_fp0_regnum called\n");
return gdbarch->fp0_regnum;
}
void
set_gdbarch_fp0_regnum (struct gdbarch *gdbarch,
int fp0_regnum)
{
gdbarch->fp0_regnum = fp0_regnum;
}
2000-05-02 09:36:57 +00:00
int
gdbarch_npc_regnum (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
2000-05-02 09:36:57 +00:00
/* Skip verify of npc_regnum, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_npc_regnum called\n");
return gdbarch->npc_regnum;
}
void
set_gdbarch_npc_regnum (struct gdbarch *gdbarch,
int npc_regnum)
{
gdbarch->npc_regnum = npc_regnum;
}
int
gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->stab_reg_to_regnum == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_stab_reg_to_regnum invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_stab_reg_to_regnum called\n");
return gdbarch->stab_reg_to_regnum (stab_regnr);
}
void
set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch,
gdbarch_stab_reg_to_regnum_ftype stab_reg_to_regnum)
{
gdbarch->stab_reg_to_regnum = stab_reg_to_regnum;
}
int
gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->ecoff_reg_to_regnum == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_ecoff_reg_to_regnum invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_ecoff_reg_to_regnum called\n");
return gdbarch->ecoff_reg_to_regnum (ecoff_regnr);
}
void
set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch,
gdbarch_ecoff_reg_to_regnum_ftype ecoff_reg_to_regnum)
{
gdbarch->ecoff_reg_to_regnum = ecoff_reg_to_regnum;
}
int
gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->dwarf_reg_to_regnum == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_dwarf_reg_to_regnum invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_dwarf_reg_to_regnum called\n");
return gdbarch->dwarf_reg_to_regnum (dwarf_regnr);
}
void
set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch,
gdbarch_dwarf_reg_to_regnum_ftype dwarf_reg_to_regnum)
{
gdbarch->dwarf_reg_to_regnum = dwarf_reg_to_regnum;
}
int
gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->sdb_reg_to_regnum == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_sdb_reg_to_regnum invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_sdb_reg_to_regnum called\n");
return gdbarch->sdb_reg_to_regnum (sdb_regnr);
}
void
set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch,
gdbarch_sdb_reg_to_regnum_ftype sdb_reg_to_regnum)
{
gdbarch->sdb_reg_to_regnum = sdb_reg_to_regnum;
}
int
gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->dwarf2_reg_to_regnum == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_dwarf2_reg_to_regnum invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_dwarf2_reg_to_regnum called\n");
return gdbarch->dwarf2_reg_to_regnum (dwarf2_regnr);
}
void
set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch,
gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
{
gdbarch->dwarf2_reg_to_regnum = dwarf2_reg_to_regnum;
}
2002-06-17 23:32:36 +00:00
const char *
1999-06-14 18:08:47 +00:00
gdbarch_register_name (struct gdbarch *gdbarch, int regnr)
{
gdb_assert (gdbarch != NULL);
1999-08-16 19:57:19 +00:00
if (gdbarch->register_name == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_name invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_name called\n");
return gdbarch->register_name (regnr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_name (struct gdbarch *gdbarch,
gdbarch_register_name_ftype register_name)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_name = register_name;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_register_size (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_size == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_size invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_size called\n");
return gdbarch->register_size;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_size (struct gdbarch *gdbarch,
int register_size)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_size = register_size;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_register_bytes (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_bytes == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_bytes invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_bytes called\n");
return gdbarch->register_bytes;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_bytes (struct gdbarch *gdbarch,
int register_bytes)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_bytes = register_bytes;
}
int
gdbarch_register_byte (struct gdbarch *gdbarch, int reg_nr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_byte == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_byte invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_byte called\n");
return gdbarch->register_byte (reg_nr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_byte (struct gdbarch *gdbarch,
gdbarch_register_byte_ftype register_byte)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_byte = register_byte;
}
int
gdbarch_register_raw_size (struct gdbarch *gdbarch, int reg_nr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_raw_size == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_raw_size invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_raw_size called\n");
return gdbarch->register_raw_size (reg_nr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_raw_size (struct gdbarch *gdbarch,
gdbarch_register_raw_size_ftype register_raw_size)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_raw_size = register_raw_size;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_max_register_raw_size (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->max_register_raw_size == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_max_register_raw_size invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_max_register_raw_size called\n");
return gdbarch->max_register_raw_size;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_max_register_raw_size (struct gdbarch *gdbarch,
int max_register_raw_size)
1999-06-14 18:08:47 +00:00
{
gdbarch->max_register_raw_size = max_register_raw_size;
}
int
gdbarch_register_virtual_size (struct gdbarch *gdbarch, int reg_nr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_virtual_size == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_virtual_size invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_virtual_size called\n");
return gdbarch->register_virtual_size (reg_nr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_virtual_size (struct gdbarch *gdbarch,
gdbarch_register_virtual_size_ftype register_virtual_size)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_virtual_size = register_virtual_size;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_max_register_virtual_size (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->max_register_virtual_size == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_max_register_virtual_size invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_max_register_virtual_size called\n");
return gdbarch->max_register_virtual_size;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_max_register_virtual_size (struct gdbarch *gdbarch,
int max_register_virtual_size)
1999-06-14 18:08:47 +00:00
{
gdbarch->max_register_virtual_size = max_register_virtual_size;
}
struct type *
gdbarch_register_virtual_type (struct gdbarch *gdbarch, int reg_nr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_virtual_type == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_virtual_type invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_virtual_type called\n");
return gdbarch->register_virtual_type (reg_nr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_virtual_type (struct gdbarch *gdbarch,
gdbarch_register_virtual_type_ftype register_virtual_type)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_virtual_type = register_virtual_type;
}
int
gdbarch_deprecated_do_registers_info_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->deprecated_do_registers_info != 0;
}
void
gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->deprecated_do_registers_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_deprecated_do_registers_info invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_do_registers_info called\n");
gdbarch->deprecated_do_registers_info (reg_nr, fpregs);
}
void
set_gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch,
gdbarch_deprecated_do_registers_info_ftype deprecated_do_registers_info)
{
gdbarch->deprecated_do_registers_info = deprecated_do_registers_info;
}
void
gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->print_registers_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_print_registers_info invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_print_registers_info called\n");
gdbarch->print_registers_info (gdbarch, file, frame, regnum, all);
}
void
set_gdbarch_print_registers_info (struct gdbarch *gdbarch,
gdbarch_print_registers_info_ftype print_registers_info)
{
gdbarch->print_registers_info = print_registers_info;
}
int
gdbarch_print_float_info_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->print_float_info != 0;
}
void
gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->print_float_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_print_float_info invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_print_float_info called\n");
gdbarch->print_float_info (gdbarch, file, frame, args);
}
void
set_gdbarch_print_float_info (struct gdbarch *gdbarch,
gdbarch_print_float_info_ftype print_float_info)
{
gdbarch->print_float_info = print_float_info;
}
int
gdbarch_print_vector_info_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->print_vector_info != 0;
}
void
gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->print_vector_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_print_vector_info invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_print_vector_info called\n");
gdbarch->print_vector_info (gdbarch, file, frame, args);
}
void
set_gdbarch_print_vector_info (struct gdbarch *gdbarch,
gdbarch_print_vector_info_ftype print_vector_info)
{
gdbarch->print_vector_info = print_vector_info;
}
int
gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->register_sim_regno == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_sim_regno invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_sim_regno called\n");
return gdbarch->register_sim_regno (reg_nr);
}
void
set_gdbarch_register_sim_regno (struct gdbarch *gdbarch,
gdbarch_register_sim_regno_ftype register_sim_regno)
{
gdbarch->register_sim_regno = register_sim_regno;
}
2000-12-15 12:33:08 +00:00
int
gdbarch_register_bytes_ok_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
2000-12-15 12:33:08 +00:00
return gdbarch->register_bytes_ok != 0;
}
int
gdbarch_register_bytes_ok (struct gdbarch *gdbarch, long nr_bytes)
{
gdb_assert (gdbarch != NULL);
2000-12-15 12:33:08 +00:00
if (gdbarch->register_bytes_ok == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_bytes_ok invalid");
2000-12-15 12:33:08 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_bytes_ok called\n");
return gdbarch->register_bytes_ok (nr_bytes);
}
void
set_gdbarch_register_bytes_ok (struct gdbarch *gdbarch,
gdbarch_register_bytes_ok_ftype register_bytes_ok)
{
gdbarch->register_bytes_ok = register_bytes_ok;
}
int
2001-06-16 19:48:01 +00:00
gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->cannot_fetch_register == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_cannot_fetch_register invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_fetch_register called\n");
2001-06-16 19:48:01 +00:00
return gdbarch->cannot_fetch_register (regnum);
}
void
set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch,
gdbarch_cannot_fetch_register_ftype cannot_fetch_register)
{
gdbarch->cannot_fetch_register = cannot_fetch_register;
}
int
2001-06-16 19:48:01 +00:00
gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->cannot_store_register == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_cannot_store_register invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_store_register called\n");
2001-06-16 19:48:01 +00:00
return gdbarch->cannot_store_register (regnum);
}
void
set_gdbarch_cannot_store_register (struct gdbarch *gdbarch,
gdbarch_cannot_store_register_ftype cannot_store_register)
{
gdbarch->cannot_store_register = cannot_store_register;
}
int
gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->get_longjmp_target != 0;
}
int
gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->get_longjmp_target == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_get_longjmp_target invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_get_longjmp_target called\n");
return gdbarch->get_longjmp_target (pc);
}
void
set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch,
gdbarch_get_longjmp_target_ftype get_longjmp_target)
{
gdbarch->get_longjmp_target = get_longjmp_target;
}
1999-06-14 18:08:47 +00:00
int
1999-08-31 01:14:27 +00:00
gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->use_generic_dummy_frames == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_use_generic_dummy_frames invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_use_generic_dummy_frames called\n");
return gdbarch->use_generic_dummy_frames;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch,
int use_generic_dummy_frames)
1999-06-14 18:08:47 +00:00
{
gdbarch->use_generic_dummy_frames = use_generic_dummy_frames;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_location (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_location == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_location invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_location called\n");
return gdbarch->call_dummy_location;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_location (struct gdbarch *gdbarch,
int call_dummy_location)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_location = call_dummy_location;
}
CORE_ADDR
gdbarch_call_dummy_address (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_address called\n");
return gdbarch->call_dummy_address ();
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_address (struct gdbarch *gdbarch,
gdbarch_call_dummy_address_ftype call_dummy_address)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_address = call_dummy_address;
}
CORE_ADDR
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_start_offset == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_start_offset invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_start_offset called\n");
return gdbarch->call_dummy_start_offset;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_start_offset (struct gdbarch *gdbarch,
CORE_ADDR call_dummy_start_offset)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_start_offset = call_dummy_start_offset;
}
CORE_ADDR
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
if (gdbarch->call_dummy_breakpoint_offset_p && gdbarch->call_dummy_breakpoint_offset == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_breakpoint_offset invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_breakpoint_offset called\n");
return gdbarch->call_dummy_breakpoint_offset;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_breakpoint_offset (struct gdbarch *gdbarch,
CORE_ADDR call_dummy_breakpoint_offset)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_breakpoint_offset = call_dummy_breakpoint_offset;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_breakpoint_offset_p == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_breakpoint_offset_p invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_breakpoint_offset_p called\n");
return gdbarch->call_dummy_breakpoint_offset_p;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_breakpoint_offset_p (struct gdbarch *gdbarch,
int call_dummy_breakpoint_offset_p)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_breakpoint_offset_p = call_dummy_breakpoint_offset_p;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_length (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_length == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_length invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_length called\n");
return gdbarch->call_dummy_length;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_length (struct gdbarch *gdbarch,
int call_dummy_length)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_length = call_dummy_length;
}
int
gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->pc_in_call_dummy == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pc_in_call_dummy invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_in_call_dummy called\n");
return gdbarch->pc_in_call_dummy (pc, sp, frame_address);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_pc_in_call_dummy (struct gdbarch *gdbarch,
gdbarch_pc_in_call_dummy_ftype pc_in_call_dummy)
1999-06-14 18:08:47 +00:00
{
gdbarch->pc_in_call_dummy = pc_in_call_dummy;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_p (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_p == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_p invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_p called\n");
return gdbarch->call_dummy_p;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_p (struct gdbarch *gdbarch,
int call_dummy_p)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_p = call_dummy_p;
}
LONGEST *
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_words (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
/* Skip verify of call_dummy_words, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_words called\n");
return gdbarch->call_dummy_words;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_words (struct gdbarch *gdbarch,
LONGEST * call_dummy_words)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_words = call_dummy_words;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
/* Skip verify of sizeof_call_dummy_words, invalid_p == 0 */
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_sizeof_call_dummy_words called\n");
return gdbarch->sizeof_call_dummy_words;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_sizeof_call_dummy_words (struct gdbarch *gdbarch,
int sizeof_call_dummy_words)
1999-06-14 18:08:47 +00:00
{
gdbarch->sizeof_call_dummy_words = sizeof_call_dummy_words;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_stack_adjust_p == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_stack_adjust_p invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_stack_adjust_p called\n");
return gdbarch->call_dummy_stack_adjust_p;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_stack_adjust_p (struct gdbarch *gdbarch,
int call_dummy_stack_adjust_p)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_stack_adjust_p = call_dummy_stack_adjust_p;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->call_dummy_stack_adjust_p && gdbarch->call_dummy_stack_adjust == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_call_dummy_stack_adjust invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_call_dummy_stack_adjust called\n");
return gdbarch->call_dummy_stack_adjust;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_call_dummy_stack_adjust (struct gdbarch *gdbarch,
int call_dummy_stack_adjust)
1999-06-14 18:08:47 +00:00
{
gdbarch->call_dummy_stack_adjust = call_dummy_stack_adjust;
}
void
gdbarch_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->fix_call_dummy == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_fix_call_dummy invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_fix_call_dummy called\n");
gdbarch->fix_call_dummy (dummy, pc, fun, nargs, args, type, gcc_p);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_fix_call_dummy (struct gdbarch *gdbarch,
gdbarch_fix_call_dummy_ftype fix_call_dummy)
1999-06-14 18:08:47 +00:00
{
gdbarch->fix_call_dummy = fix_call_dummy;
}
void
gdbarch_init_frame_pc_first (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->init_frame_pc_first == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_init_frame_pc_first invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_init_frame_pc_first called\n");
gdbarch->init_frame_pc_first (fromleaf, prev);
}
void
set_gdbarch_init_frame_pc_first (struct gdbarch *gdbarch,
gdbarch_init_frame_pc_first_ftype init_frame_pc_first)
{
gdbarch->init_frame_pc_first = init_frame_pc_first;
}
void
gdbarch_init_frame_pc (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->init_frame_pc == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_init_frame_pc invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_init_frame_pc called\n");
gdbarch->init_frame_pc (fromleaf, prev);
}
void
set_gdbarch_init_frame_pc (struct gdbarch *gdbarch,
gdbarch_init_frame_pc_ftype init_frame_pc)
{
gdbarch->init_frame_pc = init_frame_pc;
}
1999-06-14 18:08:47 +00:00
int
1999-08-31 01:14:27 +00:00
gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion called\n");
return gdbarch->believe_pcc_promotion;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch,
int believe_pcc_promotion)
1999-06-14 18:08:47 +00:00
{
gdbarch->believe_pcc_promotion = believe_pcc_promotion;
}
int
1999-08-31 01:14:27 +00:00
gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion_type called\n");
return gdbarch->believe_pcc_promotion_type;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch,
int believe_pcc_promotion_type)
1999-06-14 18:08:47 +00:00
{
gdbarch->believe_pcc_promotion_type = believe_pcc_promotion_type;
}
int
gdbarch_coerce_float_to_double (struct gdbarch *gdbarch, struct type *formal, struct type *actual)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->coerce_float_to_double == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_coerce_float_to_double invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_coerce_float_to_double called\n");
return gdbarch->coerce_float_to_double (formal, actual);
}
void
set_gdbarch_coerce_float_to_double (struct gdbarch *gdbarch,
gdbarch_coerce_float_to_double_ftype coerce_float_to_double)
{
gdbarch->coerce_float_to_double = coerce_float_to_double;
}
int
gdbarch_get_saved_register_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->get_saved_register != 0;
}
1999-06-14 18:08:47 +00:00
void
1999-07-19 23:30:11 +00:00
gdbarch_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->get_saved_register == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_get_saved_register invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_get_saved_register called\n");
gdbarch->get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_get_saved_register (struct gdbarch *gdbarch,
gdbarch_get_saved_register_ftype get_saved_register)
1999-06-14 18:08:47 +00:00
{
gdbarch->get_saved_register = get_saved_register;
}
int
gdbarch_register_convertible (struct gdbarch *gdbarch, int nr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_convertible == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_convertible invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convertible called\n");
return gdbarch->register_convertible (nr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_convertible (struct gdbarch *gdbarch,
gdbarch_register_convertible_ftype register_convertible)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_convertible = register_convertible;
}
void
gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_convert_to_virtual == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_convert_to_virtual invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convert_to_virtual called\n");
gdbarch->register_convert_to_virtual (regnum, type, from, to);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_convert_to_virtual (struct gdbarch *gdbarch,
gdbarch_register_convert_to_virtual_ftype register_convert_to_virtual)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_convert_to_virtual = register_convert_to_virtual;
}
void
gdbarch_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->register_convert_to_raw == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_convert_to_raw invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_convert_to_raw called\n");
gdbarch->register_convert_to_raw (type, regnum, from, to);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_register_convert_to_raw (struct gdbarch *gdbarch,
gdbarch_register_convert_to_raw_ftype register_convert_to_raw)
1999-06-14 18:08:47 +00:00
{
gdbarch->register_convert_to_raw = register_convert_to_raw;
}
int
gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->convert_register_p == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_convert_register_p invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_register_p called\n");
return gdbarch->convert_register_p (regnum);
}
void
set_gdbarch_convert_register_p (struct gdbarch *gdbarch,
gdbarch_convert_register_p_ftype convert_register_p)
{
gdbarch->convert_register_p = convert_register_p;
}
void
gdbarch_register_to_value (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->register_to_value == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_to_value invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_to_value called\n");
gdbarch->register_to_value (regnum, type, from, to);
}
void
set_gdbarch_register_to_value (struct gdbarch *gdbarch,
gdbarch_register_to_value_ftype register_to_value)
{
gdbarch->register_to_value = register_to_value;
}
void
gdbarch_value_to_register (struct gdbarch *gdbarch, struct type *type, int regnum, char *from, char *to)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->value_to_register == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_value_to_register invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_value_to_register called\n");
gdbarch->value_to_register (type, regnum, from, to);
}
void
set_gdbarch_value_to_register (struct gdbarch *gdbarch,
gdbarch_value_to_register_ftype value_to_register)
{
gdbarch->value_to_register = value_to_register;
}
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
CORE_ADDR
gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf)
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
{
gdb_assert (gdbarch != NULL);
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
if (gdbarch->pointer_to_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pointer_to_address invalid");
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pointer_to_address called\n");
return gdbarch->pointer_to_address (type, buf);
}
void
set_gdbarch_pointer_to_address (struct gdbarch *gdbarch,
gdbarch_pointer_to_address_ftype pointer_to_address)
{
gdbarch->pointer_to_address = pointer_to_address;
}
void
gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr)
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
{
gdb_assert (gdbarch != NULL);
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
if (gdbarch->address_to_pointer == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_address_to_pointer invalid");
* gdbarch.sh (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Two new functions which architectures can redefine, defaulting to generic_pointer_to_address and generic_address_to_pointer. * findvar.c (extract_typed_address, store_typed_address, generic_pointer_to_address, generic_address_to_pointer): New functions. (POINTER_TO_ADDRESS, ADDRESS_TO_POINTER): Provide default definitions. (extract_address, store_address): Doc fixes. * values.c (value_as_pointer): Doc fix. (value_from_pointer): New function. * defs.h (extract_typed_address, store_typed_address): New declarations. * inferior.h (generic_address_to_pointer, generic_pointer_to_address): New declarations. * value.h (value_from_pointer): New declaration. * ax-gdb.c (const_var_ref): Use value_from_pointer, not value_from_longest. * blockframe.c (generic_push_dummy_frame): Use read_pc and read_sp, not read_register. * c-valprint.c (c_val_print): Use extract_typed_address instead of extract_address to extract vtable entries and references. * cp-valprint.c (cp_print_value_fields): Use value_from_pointer instead of value_from_longest to extract the vtable's address. * eval.c (evaluate_subexp_standard): Use value_from_pointer instead of value_from_longest to compute `this', and for doing pointer-to-member dereferencing. * findvar.c (read_register): Use extract_unsigned_integer, not extract_address. (read_var_value): Use store_typed_address instead of store_address for building label values. (locate_var_value): Use value_from_pointer instead of value_from_longest. * hppa-tdep.c (find_stub_with_shl_get): Use value_from_pointer, instead of value_from_longest, to build arguments to __d_shl_get. * printcmd.c (set_next_address): Use value_from_pointer, not value_from_longest. (x_command): Use value_from_pointer, not value_from_longest. * tracepoint.c (set_traceframe_context): Use value_from_pointer, not value_from_longest. * valarith.c (value_add, value_sub): Use value_from_pointer, not value_from_longest. * valops.c (find_function_in_inferior, value_coerce_array, value_coerce_function, value_addr, hand_function_call): Same. * value.h (COERCE_REF): Use unpack_pointer, not unpack_long. * values.c (unpack_long): Use extract_typed_address to produce addresses from pointers and references, not extract_address. (value_from_longest): Use store_typed_address instead of store_address to produce pointer and reference values.
2000-04-14 18:43:41 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_address_to_pointer called\n");
gdbarch->address_to_pointer (type, buf, addr);
}
void
set_gdbarch_address_to_pointer (struct gdbarch *gdbarch,
gdbarch_address_to_pointer_ftype address_to_pointer)
{
gdbarch->address_to_pointer = address_to_pointer;
}
int
gdbarch_integer_to_address_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->integer_to_address != 0;
}
CORE_ADDR
gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->integer_to_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_integer_to_address invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_integer_to_address called\n");
return gdbarch->integer_to_address (type, buf);
}
void
set_gdbarch_integer_to_address (struct gdbarch *gdbarch,
gdbarch_integer_to_address_ftype integer_to_address)
{
gdbarch->integer_to_address = integer_to_address;
}
int
gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->return_value_on_stack == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_return_value_on_stack invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_return_value_on_stack called\n");
return gdbarch->return_value_on_stack (type);
}
void
set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch,
gdbarch_return_value_on_stack_ftype return_value_on_stack)
{
gdbarch->return_value_on_stack = return_value_on_stack;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
gdbarch_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->push_arguments == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_push_arguments invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_push_arguments called\n");
return gdbarch->push_arguments (nargs, args, sp, struct_return, struct_addr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_push_arguments (struct gdbarch *gdbarch,
gdbarch_push_arguments_ftype push_arguments)
1999-06-14 18:08:47 +00:00
{
gdbarch->push_arguments = push_arguments;
}
void
gdbarch_push_dummy_frame (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->push_dummy_frame == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_push_dummy_frame invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_frame called\n");
gdbarch->push_dummy_frame ();
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_push_dummy_frame (struct gdbarch *gdbarch,
gdbarch_push_dummy_frame_ftype push_dummy_frame)
1999-06-14 18:08:47 +00:00
{
gdbarch->push_dummy_frame = push_dummy_frame;
}
2001-11-06 18:06:00 +00:00
int
gdbarch_push_return_address_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
2001-11-06 18:06:00 +00:00
return gdbarch->push_return_address != 0;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
gdbarch_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->push_return_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_push_return_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_push_return_address called\n");
return gdbarch->push_return_address (pc, sp);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_push_return_address (struct gdbarch *gdbarch,
gdbarch_push_return_address_ftype push_return_address)
1999-06-14 18:08:47 +00:00
{
gdbarch->push_return_address = push_return_address;
}
void
gdbarch_pop_frame (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->pop_frame == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pop_frame invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pop_frame called\n");
gdbarch->pop_frame ();
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_pop_frame (struct gdbarch *gdbarch,
gdbarch_pop_frame_ftype pop_frame)
1999-06-14 18:08:47 +00:00
{
gdbarch->pop_frame = pop_frame;
}
void
gdbarch_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->store_struct_return == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_store_struct_return invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_store_struct_return called\n");
gdbarch->store_struct_return (addr, sp);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_store_struct_return (struct gdbarch *gdbarch,
gdbarch_store_struct_return_ftype store_struct_return)
1999-06-14 18:08:47 +00:00
{
gdbarch->store_struct_return = store_struct_return;
}
void
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *valbuf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->extract_return_value == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_extract_return_value invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_return_value called\n");
gdbarch->extract_return_value (type, regcache, valbuf);
}
void
set_gdbarch_extract_return_value (struct gdbarch *gdbarch,
gdbarch_extract_return_value_ftype extract_return_value)
{
gdbarch->extract_return_value = extract_return_value;
}
void
gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const void *valbuf)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->store_return_value == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_store_return_value invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_store_return_value called\n");
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
gdbarch->store_return_value (type, regcache, valbuf);
1999-06-14 18:08:47 +00:00
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_store_return_value (struct gdbarch *gdbarch,
gdbarch_store_return_value_ftype store_return_value)
1999-06-14 18:08:47 +00:00
{
gdbarch->store_return_value = store_return_value;
}
Index: ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.3144 diff -u -r1.3144 ChangeLog --- ChangeLog 23 Aug 2002 23:05:38 -0000 1.3144 +++ ChangeLog 23 Aug 2002 23:14:45 -0000 @@ -1,3 +1,53 @@ 2002-08-23 Andrew Cagney <cagney@redhat.com> * gdbarch.sh (STORE_RETURN_VALUE): Add regcache parameter. (DEPRECATED_STORE_RETURN_VALUE): New method. (EXTRACT_RETURN_VALUE): Make buffer parameter a void pointer. * gdbarch.h, gdbarch.c: Re-generate. * values.c (set_return_value): Pass current_regcache to STORE_RETURN_VALUE. * arch-utils.h (legacy_store_return_value): Declare. * arch-utils.c (legacy_store_return_value): New function. (legacy_extract_return_value): Update parameters. * config/pa/tm-hppa.h (DEPRECATED_STORE_RETURN_VALUE): Rename STORE_RETURN_VALUE. * config/pa/tm-hppa64.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/z8k/tm-z8k.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/sparc/tm-sparclet.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/mn10200/tm-mn10200.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-linux.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/m32r/tm-m32r.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8500/tm-h8500.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * config/h8300/tm-h8300.h (DEPRECATED_STORE_RETURN_VALUE): Ditto. * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. * i386-tdep.c (i386_extract_return_value): Update. * arch-utils.c (legacy_extract_return_value): Update. * frv-tdep.c (frv_gdbarch_init): Update. * cris-tdep.c (cris_gdbarch_init): Update. * d10v-tdep.c (d10v_gdbarch_init): Update. * rs6000-tdep.c (rs6000_gdbarch_init): Update. * m68k-tdep.c (m68k_gdbarch_init): Update. * mcore-tdep.c (mcore_gdbarch_init): Update. * mn10300-tdep.c (mn10300_gdbarch_init): Update. * s390-tdep.c (s390_gdbarch_init): Update. * sparc-tdep.c (sparc_gdbarch_init): Update. * sh-tdep.c (sh_gdbarch_init): Update. * x86-64-tdep.c (x86_64_gdbarch_init): Update. * v850-tdep.c (v850_gdbarch_init): Update. * avr-tdep.c (avr_gdbarch_init): Update. * ia64-tdep.c (ia64_gdbarch_init): Update. * ns32k-tdep.c (ns32k_gdbarch_init): Update. * vax-tdep.c (vax_gdbarch_init): Update. * alpha-tdep.c (alpha_gdbarch_init): Update. * arm-tdep.c (arm_gdbarch_init): Update. * mips-tdep.c (mips_gdbarch_init): Update. * i386-tdep.c (i386_gdbarch_init): Update. Index: doc/ChangeLog 2002-08-21 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Update STORE_RETURN_VALUE, mention regcache.
2002-08-24 00:21:37 +00:00
void
gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->deprecated_extract_return_value == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_deprecated_extract_return_value invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_return_value called\n");
gdbarch->deprecated_extract_return_value (type, regbuf, valbuf);
}
void
set_gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch,
gdbarch_deprecated_extract_return_value_ftype deprecated_extract_return_value)
{
gdbarch->deprecated_extract_return_value = deprecated_extract_return_value;
}
void
gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->deprecated_store_return_value == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_deprecated_store_return_value invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_store_return_value called\n");
gdbarch->deprecated_store_return_value (type, valbuf);
}
void
set_gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch,
gdbarch_deprecated_store_return_value_ftype deprecated_store_return_value)
{
gdbarch->deprecated_store_return_value = deprecated_store_return_value;
}
int
gdbarch_extract_struct_value_address_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->extract_struct_value_address != 0;
}
CORE_ADDR
gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->extract_struct_value_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_extract_struct_value_address invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_extract_struct_value_address called\n");
return gdbarch->extract_struct_value_address (regcache);
}
void
set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch,
gdbarch_extract_struct_value_address_ftype extract_struct_value_address)
{
gdbarch->extract_struct_value_address = extract_struct_value_address;
}
int
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
return gdbarch->deprecated_extract_struct_value_address != 0;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
if (gdbarch->deprecated_extract_struct_value_address == 0)
internal_error (__FILE__, __LINE__,
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
"gdbarch: gdbarch_deprecated_extract_struct_value_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_struct_value_address called\n");
return gdbarch->deprecated_extract_struct_value_address (regbuf);
1999-06-14 18:08:47 +00:00
}
void
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch,
gdbarch_deprecated_extract_struct_value_address_ftype deprecated_extract_struct_value_address)
1999-06-14 18:08:47 +00:00
{
+ * gdbarch.sh (DEPRECATED_EXTRACT_RETURN_VALUE): Rename + EXTRACT_RETURN_VALUE. + (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Rename + EXTRACT_STRUCT_VALUE_ADDRESS. + * gdbarch.h, gdbarch.c: Regenerate. + + * values.c (value_being_returned): Handle + DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS. + (EXTRACT_RETURN_VALUE): Define as DEPRECATED_EXTRACT_RETURN_VALUE. + + * arm-linux-tdep.c (arm_linux_init_abi): Update. + * arm-tdep.c (arm_gdbarch_init): Update. + * avr-tdep.c (avr_gdbarch_init): Update. + * cris-tdep.c (cris_gdbarch_init): Update. + * d10v-tdep.c (d10v_gdbarch_init): Update. + * ia64-tdep.c (ia64_gdbarch_init): Update. + * m68hc11-tdep.c (m68hc11_gdbarch_init): Update. + * rs6000-tdep.c (rs6000_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sh-tdep.c (sh_gdbarch_init): Update. + * s390-tdep.c (s390_gdbarch_init): Update. + * sparc-tdep.c (sparc_gdbarch_init): Update. + * ns32k-tdep.c (ns32k_gdbarch_init): Update. + * v850-tdep.c (v850_gdbarch_init): Update. + * vax-tdep.c (vax_gdbarch_init): Update. + * x86-64-tdep.c (x86_64_gdbarch_init): Update. + * xstormy16-tdep.c (xstormy16_gdbarch_init): Update. + + * config/arc/tm-arc.h: Update. + * config/d30v/tm-d30v.h: Update. + * config/fr30/tm-fr30.h: Update. + * config/h8300/tm-h8300.h: Update. * config/h8500/tm-h8500.h: Update. * config/i386/tm-i386.h: Update. * config/i386/tm-ptx.h: Update. * config/i386/tm-symmetry.h: Update. * config/i960/tm-i960.h: Update. * config/m32r/tm-m32r.h: Update. * config/m68k/tm-delta68.h: Update. * config/m68k/tm-linux.h: Update. * config/m68k/tm-m68k.h: Update. * config/m88k/tm-m88k.h: Update. * config/mcore/tm-mcore.h: Update. * config/mips/tm-mips.h: Update. * config/mn10200/tm-mn10200.h: Update. * config/pa/tm-hppa.h: Update. * config/pa/tm-hppa64.h: Update. * config/sparc/tm-sp64.h: Update. * config/sparc/tm-sparc.h: Update. * config/sparc/tm-sparclet.h: Update. * config/z8k/tm-z8k.h: Update.
2002-06-14 22:55:51 +00:00
gdbarch->deprecated_extract_struct_value_address = deprecated_extract_struct_value_address;
1999-06-14 18:08:47 +00:00
}
int
gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->use_struct_convention == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_use_struct_convention invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_use_struct_convention called\n");
return gdbarch->use_struct_convention (gcc_p, value_type);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_use_struct_convention (struct gdbarch *gdbarch,
gdbarch_use_struct_convention_ftype use_struct_convention)
1999-06-14 18:08:47 +00:00
{
gdbarch->use_struct_convention = use_struct_convention;
}
void
gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_init_saved_regs == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_init_saved_regs invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_init_saved_regs called\n");
gdbarch->frame_init_saved_regs (frame);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_init_saved_regs (struct gdbarch *gdbarch,
gdbarch_frame_init_saved_regs_ftype frame_init_saved_regs)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_init_saved_regs = frame_init_saved_regs;
}
int
gdbarch_init_extra_frame_info_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->init_extra_frame_info != 0;
}
1999-06-14 18:08:47 +00:00
void
gdbarch_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->init_extra_frame_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_init_extra_frame_info invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_init_extra_frame_info called\n");
gdbarch->init_extra_frame_info (fromleaf, frame);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_init_extra_frame_info (struct gdbarch *gdbarch,
gdbarch_init_extra_frame_info_ftype init_extra_frame_info)
1999-06-14 18:08:47 +00:00
{
gdbarch->init_extra_frame_info = init_extra_frame_info;
}
CORE_ADDR
gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->skip_prologue == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_skip_prologue invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_prologue called\n");
return gdbarch->skip_prologue (ip);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_skip_prologue (struct gdbarch *gdbarch,
gdbarch_skip_prologue_ftype skip_prologue)
1999-06-14 18:08:47 +00:00
{
gdbarch->skip_prologue = skip_prologue;
}
int
gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->prologue_frameless_p == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_prologue_frameless_p invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_prologue_frameless_p called\n");
return gdbarch->prologue_frameless_p (ip);
}
void
set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch,
gdbarch_prologue_frameless_p_ftype prologue_frameless_p)
{
gdbarch->prologue_frameless_p = prologue_frameless_p;
}
1999-06-14 18:08:47 +00:00
int
gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->inner_than == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_inner_than invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_inner_than called\n");
return gdbarch->inner_than (lhs, rhs);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_inner_than (struct gdbarch *gdbarch,
gdbarch_inner_than_ftype inner_than)
1999-06-14 18:08:47 +00:00
{
gdbarch->inner_than = inner_than;
}
const unsigned char *
1999-07-19 23:30:11 +00:00
gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->breakpoint_from_pc == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_breakpoint_from_pc invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_breakpoint_from_pc called\n");
return gdbarch->breakpoint_from_pc (pcptr, lenptr);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch,
gdbarch_breakpoint_from_pc_ftype breakpoint_from_pc)
1999-06-14 18:08:47 +00:00
{
gdbarch->breakpoint_from_pc = breakpoint_from_pc;
}
1999-10-19 02:47:02 +00:00
int
gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache)
{
gdb_assert (gdbarch != NULL);
1999-10-19 02:47:02 +00:00
if (gdbarch->memory_insert_breakpoint == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_memory_insert_breakpoint invalid");
1999-10-19 02:47:02 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_insert_breakpoint called\n");
return gdbarch->memory_insert_breakpoint (addr, contents_cache);
}
void
set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch,
gdbarch_memory_insert_breakpoint_ftype memory_insert_breakpoint)
{
gdbarch->memory_insert_breakpoint = memory_insert_breakpoint;
}
int
gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache)
{
gdb_assert (gdbarch != NULL);
1999-10-19 02:47:02 +00:00
if (gdbarch->memory_remove_breakpoint == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_memory_remove_breakpoint invalid");
1999-10-19 02:47:02 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_memory_remove_breakpoint called\n");
return gdbarch->memory_remove_breakpoint (addr, contents_cache);
}
void
set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch,
gdbarch_memory_remove_breakpoint_ftype memory_remove_breakpoint)
{
gdbarch->memory_remove_breakpoint = memory_remove_breakpoint;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
1999-08-31 01:14:27 +00:00
gdbarch_decr_pc_after_break (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->decr_pc_after_break == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_decr_pc_after_break invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_decr_pc_after_break called\n");
return gdbarch->decr_pc_after_break;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch,
CORE_ADDR decr_pc_after_break)
1999-06-14 18:08:47 +00:00
{
gdbarch->decr_pc_after_break = decr_pc_after_break;
}
int
gdbarch_prepare_to_proceed (struct gdbarch *gdbarch, int select_it)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->prepare_to_proceed == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_prepare_to_proceed invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_prepare_to_proceed called\n");
return gdbarch->prepare_to_proceed (select_it);
}
void
set_gdbarch_prepare_to_proceed (struct gdbarch *gdbarch,
gdbarch_prepare_to_proceed_ftype prepare_to_proceed)
{
gdbarch->prepare_to_proceed = prepare_to_proceed;
}
1999-06-14 18:08:47 +00:00
CORE_ADDR
1999-08-31 01:14:27 +00:00
gdbarch_function_start_offset (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->function_start_offset == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_function_start_offset invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_function_start_offset called\n");
return gdbarch->function_start_offset;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_function_start_offset (struct gdbarch *gdbarch,
CORE_ADDR function_start_offset)
1999-06-14 18:08:47 +00:00
{
gdbarch->function_start_offset = function_start_offset;
}
void
1999-07-19 23:30:11 +00:00
gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->remote_translate_xfer_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_remote_translate_xfer_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_remote_translate_xfer_address called\n");
gdbarch->remote_translate_xfer_address (gdb_addr, gdb_len, rem_addr, rem_len);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch,
gdbarch_remote_translate_xfer_address_ftype remote_translate_xfer_address)
1999-06-14 18:08:47 +00:00
{
gdbarch->remote_translate_xfer_address = remote_translate_xfer_address;
}
CORE_ADDR
1999-08-31 01:14:27 +00:00
gdbarch_frame_args_skip (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_args_skip == -1)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_args_skip invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_args_skip called\n");
return gdbarch->frame_args_skip;
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_args_skip (struct gdbarch *gdbarch,
CORE_ADDR frame_args_skip)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_args_skip = frame_args_skip;
}
int
gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frameless_function_invocation == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frameless_function_invocation invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frameless_function_invocation called\n");
return gdbarch->frameless_function_invocation (fi);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch,
gdbarch_frameless_function_invocation_ftype frameless_function_invocation)
1999-06-14 18:08:47 +00:00
{
gdbarch->frameless_function_invocation = frameless_function_invocation;
}
CORE_ADDR
gdbarch_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_chain == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_chain invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_chain called\n");
return gdbarch->frame_chain (frame);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_chain (struct gdbarch *gdbarch,
gdbarch_frame_chain_ftype frame_chain)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_chain = frame_chain;
}
int
gdbarch_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_chain_valid == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_chain_valid invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_chain_valid called\n");
return gdbarch->frame_chain_valid (chain, thisframe);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_chain_valid (struct gdbarch *gdbarch,
gdbarch_frame_chain_valid_ftype frame_chain_valid)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_chain_valid = frame_chain_valid;
}
CORE_ADDR
gdbarch_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_saved_pc == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_saved_pc invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_saved_pc called\n");
return gdbarch->frame_saved_pc (fi);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_saved_pc (struct gdbarch *gdbarch,
gdbarch_frame_saved_pc_ftype frame_saved_pc)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_saved_pc = frame_saved_pc;
}
CORE_ADDR
gdbarch_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_args_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_args_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_args_address called\n");
return gdbarch->frame_args_address (fi);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_args_address (struct gdbarch *gdbarch,
gdbarch_frame_args_address_ftype frame_args_address)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_args_address = frame_args_address;
}
CORE_ADDR
gdbarch_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_locals_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_locals_address invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_locals_address called\n");
return gdbarch->frame_locals_address (fi);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_locals_address (struct gdbarch *gdbarch,
gdbarch_frame_locals_address_ftype frame_locals_address)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_locals_address = frame_locals_address;
}
CORE_ADDR
gdbarch_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->saved_pc_after_call == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_saved_pc_after_call invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_saved_pc_after_call called\n");
return gdbarch->saved_pc_after_call (frame);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_saved_pc_after_call (struct gdbarch *gdbarch,
gdbarch_saved_pc_after_call_ftype saved_pc_after_call)
1999-06-14 18:08:47 +00:00
{
gdbarch->saved_pc_after_call = saved_pc_after_call;
}
int
gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame)
{
gdb_assert (gdbarch != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch->frame_num_args == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_num_args invalid");
1999-06-14 18:08:47 +00:00
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_num_args called\n");
return gdbarch->frame_num_args (frame);
}
void
1999-08-31 01:14:27 +00:00
set_gdbarch_frame_num_args (struct gdbarch *gdbarch,
gdbarch_frame_num_args_ftype frame_num_args)
1999-06-14 18:08:47 +00:00
{
gdbarch->frame_num_args = frame_num_args;
}
int
gdbarch_stack_align_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->stack_align != 0;
}
CORE_ADDR
gdbarch_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->stack_align == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_stack_align invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_stack_align called\n");
return gdbarch->stack_align (sp);
}
void
set_gdbarch_stack_align (struct gdbarch *gdbarch,
gdbarch_stack_align_ftype stack_align)
{
gdbarch->stack_align = stack_align;
}
int
gdbarch_frame_align_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->frame_align != 0;
}
CORE_ADDR
gdbarch_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->frame_align == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_frame_align invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_frame_align called\n");
return gdbarch->frame_align (gdbarch, address);
}
void
set_gdbarch_frame_align (struct gdbarch *gdbarch,
gdbarch_frame_align_ftype frame_align)
{
gdbarch->frame_align = frame_align;
}
int
gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of extra_stack_alignment_needed, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_extra_stack_alignment_needed called\n");
return gdbarch->extra_stack_alignment_needed;
}
void
set_gdbarch_extra_stack_alignment_needed (struct gdbarch *gdbarch,
int extra_stack_alignment_needed)
{
gdbarch->extra_stack_alignment_needed = extra_stack_alignment_needed;
}
int
gdbarch_reg_struct_has_addr_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->reg_struct_has_addr != 0;
}
int
gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->reg_struct_has_addr == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_reg_struct_has_addr invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_reg_struct_has_addr called\n");
return gdbarch->reg_struct_has_addr (gcc_p, type);
}
void
set_gdbarch_reg_struct_has_addr (struct gdbarch *gdbarch,
gdbarch_reg_struct_has_addr_ftype reg_struct_has_addr)
{
gdbarch->reg_struct_has_addr = reg_struct_has_addr;
}
int
gdbarch_save_dummy_frame_tos_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->save_dummy_frame_tos != 0;
}
void
gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->save_dummy_frame_tos == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_save_dummy_frame_tos invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_save_dummy_frame_tos called\n");
gdbarch->save_dummy_frame_tos (sp);
}
void
set_gdbarch_save_dummy_frame_tos (struct gdbarch *gdbarch,
gdbarch_save_dummy_frame_tos_ftype save_dummy_frame_tos)
{
gdbarch->save_dummy_frame_tos = save_dummy_frame_tos;
}
int
gdbarch_parm_boundary (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_parm_boundary called\n");
return gdbarch->parm_boundary;
}
void
set_gdbarch_parm_boundary (struct gdbarch *gdbarch,
int parm_boundary)
{
gdbarch->parm_boundary = parm_boundary;
}
const struct floatformat *
gdbarch_float_format (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_float_format called\n");
return gdbarch->float_format;
}
void
set_gdbarch_float_format (struct gdbarch *gdbarch,
const struct floatformat * float_format)
{
gdbarch->float_format = float_format;
}
const struct floatformat *
gdbarch_double_format (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_double_format called\n");
return gdbarch->double_format;
}
void
set_gdbarch_double_format (struct gdbarch *gdbarch,
const struct floatformat * double_format)
{
gdbarch->double_format = double_format;
}
const struct floatformat *
gdbarch_long_double_format (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_long_double_format called\n");
return gdbarch->long_double_format;
}
void
set_gdbarch_long_double_format (struct gdbarch *gdbarch,
const struct floatformat * long_double_format)
{
gdbarch->long_double_format = long_double_format;
}
CORE_ADDR
gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->convert_from_func_ptr_addr == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_convert_from_func_ptr_addr invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_convert_from_func_ptr_addr called\n");
return gdbarch->convert_from_func_ptr_addr (addr);
}
void
set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr)
{
gdbarch->convert_from_func_ptr_addr = convert_from_func_ptr_addr;
}
2001-06-15 22:10:21 +00:00
CORE_ADDR
gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
{
gdb_assert (gdbarch != NULL);
2001-06-15 22:10:21 +00:00
if (gdbarch->addr_bits_remove == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_addr_bits_remove invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_addr_bits_remove called\n");
return gdbarch->addr_bits_remove (addr);
}
void
set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch,
gdbarch_addr_bits_remove_ftype addr_bits_remove)
{
gdbarch->addr_bits_remove = addr_bits_remove;
}
CORE_ADDR
gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->smash_text_address == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_smash_text_address invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_smash_text_address called\n");
return gdbarch->smash_text_address (addr);
}
void
set_gdbarch_smash_text_address (struct gdbarch *gdbarch,
gdbarch_smash_text_address_ftype smash_text_address)
{
gdbarch->smash_text_address = smash_text_address;
}
int
gdbarch_software_single_step_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->software_single_step != 0;
}
void
gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->software_single_step == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_software_single_step invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_software_single_step called\n");
gdbarch->software_single_step (sig, insert_breakpoints_p);
}
void
set_gdbarch_software_single_step (struct gdbarch *gdbarch,
gdbarch_software_single_step_ftype software_single_step)
{
gdbarch->software_single_step = software_single_step;
}
int
gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, disassemble_info *info)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->print_insn == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_print_insn invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_print_insn called\n");
return gdbarch->print_insn (vma, info);
}
void
set_gdbarch_print_insn (struct gdbarch *gdbarch,
gdbarch_print_insn_ftype print_insn)
{
gdbarch->print_insn = print_insn;
}
CORE_ADDR
gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->skip_trampoline_code == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_skip_trampoline_code invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_trampoline_code called\n");
return gdbarch->skip_trampoline_code (pc);
}
void
set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch,
gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
{
gdbarch->skip_trampoline_code = skip_trampoline_code;
}
int
gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->in_solib_call_trampoline == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_in_solib_call_trampoline invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_in_solib_call_trampoline called\n");
return gdbarch->in_solib_call_trampoline (pc, name);
}
void
set_gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch,
gdbarch_in_solib_call_trampoline_ftype in_solib_call_trampoline)
{
gdbarch->in_solib_call_trampoline = in_solib_call_trampoline;
}
int
gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->in_solib_return_trampoline == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_in_solib_return_trampoline invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_in_solib_return_trampoline called\n");
return gdbarch->in_solib_return_trampoline (pc, name);
}
void
set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch,
gdbarch_in_solib_return_trampoline_ftype in_solib_return_trampoline)
{
gdbarch->in_solib_return_trampoline = in_solib_return_trampoline;
}
int
gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->pc_in_sigtramp == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_pc_in_sigtramp invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_pc_in_sigtramp called\n");
return gdbarch->pc_in_sigtramp (pc, name);
}
void
set_gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch,
gdbarch_pc_in_sigtramp_ftype pc_in_sigtramp)
{
gdbarch->pc_in_sigtramp = pc_in_sigtramp;
}
int
gdbarch_sigtramp_start_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->sigtramp_start != 0;
}
CORE_ADDR
gdbarch_sigtramp_start (struct gdbarch *gdbarch, CORE_ADDR pc)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->sigtramp_start == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_sigtramp_start invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_sigtramp_start called\n");
return gdbarch->sigtramp_start (pc);
}
void
set_gdbarch_sigtramp_start (struct gdbarch *gdbarch,
gdbarch_sigtramp_start_ftype sigtramp_start)
{
gdbarch->sigtramp_start = sigtramp_start;
}
int
gdbarch_sigtramp_end_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->sigtramp_end != 0;
}
CORE_ADDR
gdbarch_sigtramp_end (struct gdbarch *gdbarch, CORE_ADDR pc)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->sigtramp_end == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_sigtramp_end invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_sigtramp_end called\n");
return gdbarch->sigtramp_end (pc);
}
void
set_gdbarch_sigtramp_end (struct gdbarch *gdbarch,
gdbarch_sigtramp_end_ftype sigtramp_end)
{
gdbarch->sigtramp_end = sigtramp_end;
}
int
gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->in_function_epilogue_p == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_in_function_epilogue_p invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_in_function_epilogue_p called\n");
return gdbarch->in_function_epilogue_p (gdbarch, addr);
}
void
set_gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch,
gdbarch_in_function_epilogue_p_ftype in_function_epilogue_p)
{
gdbarch->in_function_epilogue_p = in_function_epilogue_p;
}
char *
gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->construct_inferior_arguments == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_construct_inferior_arguments invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_construct_inferior_arguments called\n");
return gdbarch->construct_inferior_arguments (gdbarch, argc, argv);
}
void
set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch,
gdbarch_construct_inferior_arguments_ftype construct_inferior_arguments)
{
gdbarch->construct_inferior_arguments = construct_inferior_arguments;
}
int
gdbarch_dwarf2_build_frame_info_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->dwarf2_build_frame_info != 0;
}
void
gdbarch_dwarf2_build_frame_info (struct gdbarch *gdbarch, struct objfile *objfile)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->dwarf2_build_frame_info == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_dwarf2_build_frame_info invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_dwarf2_build_frame_info called\n");
gdbarch->dwarf2_build_frame_info (objfile);
}
void
set_gdbarch_dwarf2_build_frame_info (struct gdbarch *gdbarch,
gdbarch_dwarf2_build_frame_info_ftype dwarf2_build_frame_info)
{
gdbarch->dwarf2_build_frame_info = dwarf2_build_frame_info;
}
void
gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->elf_make_msymbol_special == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_elf_make_msymbol_special invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_elf_make_msymbol_special called\n");
gdbarch->elf_make_msymbol_special (sym, msym);
}
void
set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch,
gdbarch_elf_make_msymbol_special_ftype elf_make_msymbol_special)
{
gdbarch->elf_make_msymbol_special = elf_make_msymbol_special;
}
void
gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->coff_make_msymbol_special == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_coff_make_msymbol_special invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_coff_make_msymbol_special called\n");
gdbarch->coff_make_msymbol_special (val, msym);
}
void
set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch,
gdbarch_coff_make_msymbol_special_ftype coff_make_msymbol_special)
{
gdbarch->coff_make_msymbol_special = coff_make_msymbol_special;
}
const char *
gdbarch_name_of_malloc (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of name_of_malloc, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_name_of_malloc called\n");
return gdbarch->name_of_malloc;
}
void
set_gdbarch_name_of_malloc (struct gdbarch *gdbarch,
const char * name_of_malloc)
{
gdbarch->name_of_malloc = name_of_malloc;
}
int
gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of cannot_step_breakpoint, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_cannot_step_breakpoint called\n");
return gdbarch->cannot_step_breakpoint;
}
void
set_gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch,
int cannot_step_breakpoint)
{
gdbarch->cannot_step_breakpoint = cannot_step_breakpoint;
}
int
gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
/* Skip verify of have_nonsteppable_watchpoint, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_have_nonsteppable_watchpoint called\n");
return gdbarch->have_nonsteppable_watchpoint;
}
void
set_gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch,
int have_nonsteppable_watchpoint)
{
gdbarch->have_nonsteppable_watchpoint = have_nonsteppable_watchpoint;
}
2002-10-16 20:50:22 +00:00
int
gdbarch_address_class_type_flags_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->address_class_type_flags != 0;
}
int
gdbarch_address_class_type_flags (struct gdbarch *gdbarch, int byte_size, int dwarf2_addr_class)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->address_class_type_flags == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_address_class_type_flags invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_type_flags called\n");
return gdbarch->address_class_type_flags (byte_size, dwarf2_addr_class);
}
void
set_gdbarch_address_class_type_flags (struct gdbarch *gdbarch,
gdbarch_address_class_type_flags_ftype address_class_type_flags)
{
gdbarch->address_class_type_flags = address_class_type_flags;
}
int
gdbarch_address_class_type_flags_to_name_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->address_class_type_flags_to_name != 0;
}
char *
gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->address_class_type_flags_to_name == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_address_class_type_flags_to_name invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_type_flags_to_name called\n");
return gdbarch->address_class_type_flags_to_name (gdbarch, type_flags);
2002-10-16 20:50:22 +00:00
}
void
set_gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch,
gdbarch_address_class_type_flags_to_name_ftype address_class_type_flags_to_name)
{
gdbarch->address_class_type_flags_to_name = address_class_type_flags_to_name;
}
int
gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
return gdbarch->address_class_name_to_type_flags != 0;
}
int
gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, char *name, int *type_flags_ptr)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->address_class_name_to_type_flags == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_address_class_name_to_type_flags invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_address_class_name_to_type_flags called\n");
return gdbarch->address_class_name_to_type_flags (gdbarch, name, type_flags_ptr);
2002-10-16 20:50:22 +00:00
}
void
set_gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch,
gdbarch_address_class_name_to_type_flags_ftype address_class_name_to_type_flags)
{
gdbarch->address_class_name_to_type_flags = address_class_name_to_type_flags;
}
int
gdbarch_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup)
{
gdb_assert (gdbarch != NULL);
if (gdbarch->register_reggroup_p == 0)
internal_error (__FILE__, __LINE__,
"gdbarch: gdbarch_register_reggroup_p invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_register_reggroup_p called\n");
return gdbarch->register_reggroup_p (gdbarch, regnum, reggroup);
}
void
set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch,
gdbarch_register_reggroup_p_ftype register_reggroup_p)
{
gdbarch->register_reggroup_p = register_reggroup_p;
}
1999-06-14 18:08:47 +00:00
2000-11-30 03:30:52 +00:00
/* Keep a registry of per-architecture data-pointers required by GDB
1999-06-14 18:08:47 +00:00
modules. */
struct gdbarch_data
{
unsigned index;
int init_p;
gdbarch_data_init_ftype *init;
gdbarch_data_free_ftype *free;
1999-06-14 18:08:47 +00:00
};
struct gdbarch_data_registration
1999-07-19 23:30:11 +00:00
{
struct gdbarch_data *data;
struct gdbarch_data_registration *next;
};
1999-06-14 18:08:47 +00:00
2000-11-30 03:30:52 +00:00
struct gdbarch_data_registry
1999-07-19 23:30:11 +00:00
{
unsigned nr;
1999-07-19 23:30:11 +00:00
struct gdbarch_data_registration *registrations;
};
1999-06-14 18:08:47 +00:00
2000-11-30 03:30:52 +00:00
struct gdbarch_data_registry gdbarch_data_registry =
1999-06-14 18:08:47 +00:00
{
0, NULL,
};
struct gdbarch_data *
register_gdbarch_data (gdbarch_data_init_ftype *init,
gdbarch_data_free_ftype *free)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_data_registration **curr;
/* Append the new registraration. */
2000-11-30 03:30:52 +00:00
for (curr = &gdbarch_data_registry.registrations;
1999-06-14 18:08:47 +00:00
(*curr) != NULL;
curr = &(*curr)->next);
(*curr) = XMALLOC (struct gdbarch_data_registration);
(*curr)->next = NULL;
(*curr)->data = XMALLOC (struct gdbarch_data);
2000-11-30 03:30:52 +00:00
(*curr)->data->index = gdbarch_data_registry.nr++;
(*curr)->data->init = init;
(*curr)->data->init_p = 1;
(*curr)->data->free = free;
1999-06-14 18:08:47 +00:00
return (*curr)->data;
}
/* Create/delete the gdbarch data vector. */
static void
alloc_gdbarch_data (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch->data == NULL);
gdbarch->nr_data = gdbarch_data_registry.nr;
gdbarch->data = xcalloc (gdbarch->nr_data, sizeof (void*));
}
static void
free_gdbarch_data (struct gdbarch *gdbarch)
{
struct gdbarch_data_registration *rego;
gdb_assert (gdbarch->data != NULL);
for (rego = gdbarch_data_registry.registrations;
rego != NULL;
rego = rego->next)
{
struct gdbarch_data *data = rego->data;
gdb_assert (data->index < gdbarch->nr_data);
if (data->free != NULL && gdbarch->data[data->index] != NULL)
{
data->free (gdbarch, gdbarch->data[data->index]);
gdbarch->data[data->index] = NULL;
}
1999-06-14 18:08:47 +00:00
}
xfree (gdbarch->data);
gdbarch->data = NULL;
1999-06-14 18:08:47 +00:00
}
/* Initialize the current value of the specified per-architecture
data-pointer. */
void
set_gdbarch_data (struct gdbarch *gdbarch,
struct gdbarch_data *data,
void *pointer)
{
gdb_assert (data->index < gdbarch->nr_data);
if (gdbarch->data[data->index] != NULL)
{
gdb_assert (data->free != NULL);
data->free (gdbarch, gdbarch->data[data->index]);
}
gdbarch->data[data->index] = pointer;
}
1999-06-14 18:08:47 +00:00
/* Return the current value of the specified per-architecture
data-pointer. */
void *
gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data)
1999-06-14 18:08:47 +00:00
{
gdb_assert (data->index < gdbarch->nr_data);
/* The data-pointer isn't initialized, call init() to get a value but
only if the architecture initializaiton has completed. Otherwise
punt - hope that the caller knows what they are doing. */
if (gdbarch->data[data->index] == NULL
&& gdbarch->initialized_p)
{
/* Be careful to detect an initialization cycle. */
gdb_assert (data->init_p);
data->init_p = 0;
gdb_assert (data->init != NULL);
gdbarch->data[data->index] = data->init (gdbarch);
data->init_p = 1;
gdb_assert (gdbarch->data[data->index] != NULL);
}
return gdbarch->data[data->index];
1999-06-14 18:08:47 +00:00
}
2000-11-30 03:30:52 +00:00
/* Keep a registry of swapped data required by GDB modules. */
1999-06-14 18:08:47 +00:00
struct gdbarch_swap
{
void *swap;
struct gdbarch_swap_registration *source;
struct gdbarch_swap *next;
};
struct gdbarch_swap_registration
1999-07-19 23:30:11 +00:00
{
void *data;
unsigned long sizeof_data;
gdbarch_swap_ftype *init;
struct gdbarch_swap_registration *next;
};
1999-06-14 18:08:47 +00:00
2000-11-30 03:30:52 +00:00
struct gdbarch_swap_registry
1999-07-19 23:30:11 +00:00
{
int nr;
struct gdbarch_swap_registration *registrations;
};
1999-06-14 18:08:47 +00:00
2000-11-30 03:30:52 +00:00
struct gdbarch_swap_registry gdbarch_swap_registry =
1999-06-14 18:08:47 +00:00
{
0, NULL,
};
void
1999-08-31 01:14:27 +00:00
register_gdbarch_swap (void *data,
unsigned long sizeof_data,
gdbarch_swap_ftype *init)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_swap_registration **rego;
2000-11-30 03:30:52 +00:00
for (rego = &gdbarch_swap_registry.registrations;
1999-06-14 18:08:47 +00:00
(*rego) != NULL;
rego = &(*rego)->next);
(*rego) = XMALLOC (struct gdbarch_swap_registration);
(*rego)->next = NULL;
(*rego)->init = init;
(*rego)->data = data;
(*rego)->sizeof_data = sizeof_data;
}
static void
clear_gdbarch_swap (struct gdbarch *gdbarch)
{
struct gdbarch_swap *curr;
for (curr = gdbarch->swap;
curr != NULL;
curr = curr->next)
{
memset (curr->source->data, 0, curr->source->sizeof_data);
}
}
1999-06-14 18:08:47 +00:00
static void
1999-08-31 01:14:27 +00:00
init_gdbarch_swap (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_swap_registration *rego;
struct gdbarch_swap **curr = &gdbarch->swap;
2000-11-30 03:30:52 +00:00
for (rego = gdbarch_swap_registry.registrations;
1999-06-14 18:08:47 +00:00
rego != NULL;
rego = rego->next)
{
if (rego->data != NULL)
{
(*curr) = XMALLOC (struct gdbarch_swap);
(*curr)->source = rego;
(*curr)->swap = xmalloc (rego->sizeof_data);
(*curr)->next = NULL;
curr = &(*curr)->next;
}
if (rego->init != NULL)
rego->init ();
}
}
static void
1999-08-31 01:14:27 +00:00
swapout_gdbarch_swap (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_swap *curr;
for (curr = gdbarch->swap;
curr != NULL;
curr = curr->next)
memcpy (curr->swap, curr->source->data, curr->source->sizeof_data);
}
static void
1999-08-31 01:14:27 +00:00
swapin_gdbarch_swap (struct gdbarch *gdbarch)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_swap *curr;
for (curr = gdbarch->swap;
curr != NULL;
curr = curr->next)
memcpy (curr->source->data, curr->swap, curr->source->sizeof_data);
}
2000-11-30 03:30:52 +00:00
/* Keep a registry of the architectures known by GDB. */
1999-06-14 18:08:47 +00:00
struct gdbarch_registration
1999-06-14 18:08:47 +00:00
{
enum bfd_architecture bfd_architecture;
gdbarch_init_ftype *init;
gdbarch_dump_tdep_ftype *dump_tdep;
1999-06-14 18:08:47 +00:00
struct gdbarch_list *arches;
struct gdbarch_registration *next;
1999-06-14 18:08:47 +00:00
};
2000-11-30 03:30:52 +00:00
static struct gdbarch_registration *gdbarch_registry = NULL;
1999-06-14 18:08:47 +00:00
static void
append_name (const char ***buf, int *nr, const char *name)
{
*buf = xrealloc (*buf, sizeof (char**) * (*nr + 1));
(*buf)[*nr] = name;
*nr += 1;
}
const char **
gdbarch_printable_names (void)
{
if (GDB_MULTI_ARCH)
{
/* Accumulate a list of names based on the registed list of
architectures. */
enum bfd_architecture a;
int nr_arches = 0;
const char **arches = NULL;
struct gdbarch_registration *rego;
2000-11-30 03:30:52 +00:00
for (rego = gdbarch_registry;
rego != NULL;
rego = rego->next)
{
const struct bfd_arch_info *ap;
ap = bfd_lookup_arch (rego->bfd_architecture, 0);
if (ap == NULL)
internal_error (__FILE__, __LINE__,
"gdbarch_architecture_names: multi-arch unknown");
do
{
append_name (&arches, &nr_arches, ap->printable_name);
ap = ap->next;
}
while (ap != NULL);
}
append_name (&arches, &nr_arches, NULL);
return arches;
}
else
/* Just return all the architectures that BFD knows. Assume that
the legacy architecture framework supports them. */
return bfd_arch_list ();
}
1999-06-14 18:08:47 +00:00
void
gdbarch_register (enum bfd_architecture bfd_architecture,
gdbarch_init_ftype *init,
gdbarch_dump_tdep_ftype *dump_tdep)
1999-06-14 18:08:47 +00:00
{
struct gdbarch_registration **curr;
1999-06-14 18:08:47 +00:00
const struct bfd_arch_info *bfd_arch_info;
/* Check that BFD recognizes this architecture */
1999-06-14 18:08:47 +00:00
bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0);
if (bfd_arch_info == NULL)
{
internal_error (__FILE__, __LINE__,
"gdbarch: Attempt to register unknown architecture (%d)",
bfd_architecture);
1999-06-14 18:08:47 +00:00
}
/* Check that we haven't seen this architecture before */
2000-11-30 03:30:52 +00:00
for (curr = &gdbarch_registry;
1999-06-14 18:08:47 +00:00
(*curr) != NULL;
curr = &(*curr)->next)
{
if (bfd_architecture == (*curr)->bfd_architecture)
internal_error (__FILE__, __LINE__,
"gdbarch: Duplicate registraration of architecture (%s)",
bfd_arch_info->printable_name);
1999-06-14 18:08:47 +00:00
}
/* log it */
if (gdbarch_debug)
fprintf_unfiltered (gdb_stdlog, "register_gdbarch_init (%s, 0x%08lx)\n",
bfd_arch_info->printable_name,
(long) init);
/* Append it */
(*curr) = XMALLOC (struct gdbarch_registration);
1999-06-14 18:08:47 +00:00
(*curr)->bfd_architecture = bfd_architecture;
(*curr)->init = init;
(*curr)->dump_tdep = dump_tdep;
1999-06-14 18:08:47 +00:00
(*curr)->arches = NULL;
(*curr)->next = NULL;
/* When non- multi-arch, install whatever target dump routine we've
been provided - hopefully that routine has been written correctly
and works regardless of multi-arch. */
if (!GDB_MULTI_ARCH && dump_tdep != NULL
&& startup_gdbarch.dump_tdep == NULL)
startup_gdbarch.dump_tdep = dump_tdep;
}
void
register_gdbarch_init (enum bfd_architecture bfd_architecture,
gdbarch_init_ftype *init)
{
gdbarch_register (bfd_architecture, init, NULL);
1999-06-14 18:08:47 +00:00
}
/* Look for an architecture using gdbarch_info. Base search on only
BFD_ARCH_INFO and BYTE_ORDER. */
struct gdbarch_list *
1999-08-31 01:14:27 +00:00
gdbarch_list_lookup_by_info (struct gdbarch_list *arches,
const struct gdbarch_info *info)
1999-06-14 18:08:47 +00:00
{
for (; arches != NULL; arches = arches->next)
{
if (info->bfd_arch_info != arches->gdbarch->bfd_arch_info)
continue;
if (info->byte_order != arches->gdbarch->byte_order)
continue;
return arches;
}
return NULL;
}
/* Update the current architecture. Return ZERO if the update request
failed. */
int
gdbarch_update_p (struct gdbarch_info info)
1999-06-14 18:08:47 +00:00
{
struct gdbarch *new_gdbarch;
struct gdbarch *old_gdbarch;
struct gdbarch_registration *rego;
1999-06-14 18:08:47 +00:00
/* Fill in missing parts of the INFO struct using a number of
sources: ``set ...''; INFOabfd supplied; existing target. */
/* ``(gdb) set architecture ...'' */
if (info.bfd_arch_info == NULL
&& !TARGET_ARCHITECTURE_AUTO)
info.bfd_arch_info = TARGET_ARCHITECTURE;
if (info.bfd_arch_info == NULL
&& info.abfd != NULL
&& bfd_get_arch (info.abfd) != bfd_arch_unknown
&& bfd_get_arch (info.abfd) != bfd_arch_obscure)
info.bfd_arch_info = bfd_get_arch_info (info.abfd);
1999-06-14 18:08:47 +00:00
if (info.bfd_arch_info == NULL)
info.bfd_arch_info = TARGET_ARCHITECTURE;
/* ``(gdb) set byte-order ...'' */
if (info.byte_order == BFD_ENDIAN_UNKNOWN
&& !TARGET_BYTE_ORDER_AUTO)
info.byte_order = TARGET_BYTE_ORDER;
/* From the INFO struct. */
if (info.byte_order == BFD_ENDIAN_UNKNOWN
&& info.abfd != NULL)
2002-01-05 04:30:46 +00:00
info.byte_order = (bfd_big_endian (info.abfd) ? BFD_ENDIAN_BIG
2001-12-15 16:53:24 +00:00
: bfd_little_endian (info.abfd) ? BFD_ENDIAN_LITTLE
: BFD_ENDIAN_UNKNOWN);
/* From the current target. */
if (info.byte_order == BFD_ENDIAN_UNKNOWN)
info.byte_order = TARGET_BYTE_ORDER;
1999-06-14 18:08:47 +00:00
/* Must have found some sort of architecture. */
gdb_assert (info.bfd_arch_info != NULL);
1999-06-14 18:08:47 +00:00
if (gdbarch_debug)
{
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.bfd_arch_info %s\n",
(info.bfd_arch_info != NULL
? info.bfd_arch_info->printable_name
: "(null)"));
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.byte_order %d (%s)\n",
info.byte_order,
2002-01-05 04:30:46 +00:00
(info.byte_order == BFD_ENDIAN_BIG ? "big"
2001-12-15 16:53:24 +00:00
: info.byte_order == BFD_ENDIAN_LITTLE ? "little"
1999-06-14 18:08:47 +00:00
: "default"));
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.abfd 0x%lx\n",
(long) info.abfd);
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: info.tdep_info 0x%lx\n",
(long) info.tdep_info);
}
/* Find the target that knows about this architecture. */
for (rego = gdbarch_registry;
rego != NULL;
rego = rego->next)
if (rego->bfd_architecture == info.bfd_arch_info->arch)
break;
if (rego == NULL)
{
if (gdbarch_debug)
fprintf_unfiltered (gdb_stdlog, "gdbarch_update: No matching architecture\n");
return 0;
}
/* Swap the data belonging to the old target out setting the
installed data to zero. This stops the ->init() function trying
to refer to the previous architecture's global data structures. */
swapout_gdbarch_swap (current_gdbarch);
clear_gdbarch_swap (current_gdbarch);
/* Save the previously selected architecture, setting the global to
NULL. This stops ->init() trying to use the previous
architecture's configuration. The previous architecture may not
even be of the same architecture family. The most recent
architecture of the same family is found at the head of the
rego->arches list. */
old_gdbarch = current_gdbarch;
current_gdbarch = NULL;
1999-06-14 18:08:47 +00:00
/* Ask the target for a replacement architecture. */
new_gdbarch = rego->init (info, rego->arches);
/* Did the target like it? No. Reject the change and revert to the
old architecture. */
1999-06-14 18:08:47 +00:00
if (new_gdbarch == NULL)
{
if (gdbarch_debug)
fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Target rejected architecture\n");
swapin_gdbarch_swap (old_gdbarch);
current_gdbarch = old_gdbarch;
1999-06-14 18:08:47 +00:00
return 0;
}
/* Did the architecture change? No. Oops, put the old architecture
back. */
if (old_gdbarch == new_gdbarch)
1999-06-14 18:08:47 +00:00
{
if (gdbarch_debug)
fprintf_unfiltered (gdb_stdlog, "gdbarch_update: Architecture 0x%08lx (%s) unchanged\n",
(long) new_gdbarch,
new_gdbarch->bfd_arch_info->printable_name);
swapin_gdbarch_swap (old_gdbarch);
current_gdbarch = old_gdbarch;
1999-06-14 18:08:47 +00:00
return 1;
}
/* Is this a pre-existing architecture? Yes. Move it to the front
of the list of architectures (keeping the list sorted Most
Recently Used) and then copy it in. */
{
struct gdbarch_list **list;
for (list = &rego->arches;
(*list) != NULL;
list = &(*list)->next)
{
if ((*list)->gdbarch == new_gdbarch)
{
struct gdbarch_list *this;
if (gdbarch_debug)
fprintf_unfiltered (gdb_stdlog,
"gdbarch_update: Previous architecture 0x%08lx (%s) selected\n",
(long) new_gdbarch,
new_gdbarch->bfd_arch_info->printable_name);
/* Unlink this. */
this = (*list);
(*list) = this->next;
/* Insert in the front. */
this->next = rego->arches;
rego->arches = this;
/* Copy the new architecture in. */
current_gdbarch = new_gdbarch;
swapin_gdbarch_swap (new_gdbarch);
architecture_changed_event ();
return 1;
}
}
}
/* Prepend this new architecture to the architecture list (keep the
list sorted Most Recently Used). */
{
struct gdbarch_list *this = XMALLOC (struct gdbarch_list);
this->next = rego->arches;
this->gdbarch = new_gdbarch;
rego->arches = this;
}
1999-06-14 18:08:47 +00:00
/* Switch to this new architecture marking it initialized. */
1999-06-14 18:08:47 +00:00
current_gdbarch = new_gdbarch;
current_gdbarch->initialized_p = 1;
1999-06-14 18:08:47 +00:00
if (gdbarch_debug)
{
fprintf_unfiltered (gdb_stdlog,
1999-07-19 23:30:11 +00:00
"gdbarch_update: New architecture 0x%08lx (%s) selected\n",
1999-06-14 18:08:47 +00:00
(long) new_gdbarch,
new_gdbarch->bfd_arch_info->printable_name);
}
1999-07-19 23:30:11 +00:00
/* Check that the newly installed architecture is valid. Plug in
any post init values. */
new_gdbarch->dump_tdep = rego->dump_tdep;
1999-06-14 18:08:47 +00:00
verify_gdbarch (new_gdbarch);
/* Initialize the per-architecture memory (swap) areas.
CURRENT_GDBARCH must be update before these modules are
called. */
init_gdbarch_swap (new_gdbarch);
/* Initialize the per-architecture data. CURRENT_GDBARCH
must be updated before these modules are called. */
architecture_changed_event ();
if (gdbarch_debug)
gdbarch_dump (current_gdbarch, gdb_stdlog);
1999-06-14 18:08:47 +00:00
return 1;
}
/* Disassembler */
/* Pointer to the target-dependent disassembly function. */
1999-08-31 01:14:27 +00:00
int (*tm_print_insn) (bfd_vma, disassemble_info *);
disassemble_info tm_print_insn_info;
1999-08-31 01:14:27 +00:00
extern void _initialize_gdbarch (void);
void
_initialize_gdbarch (void)
{
2000-03-28 02:25:14 +00:00
struct cmd_list_element *c;
1999-07-19 23:30:11 +00:00
INIT_DISASSEMBLE_INFO_NO_ARCH (tm_print_insn_info, gdb_stdout, (fprintf_ftype)fprintf_filtered);
tm_print_insn_info.flavour = bfd_target_unknown_flavour;
tm_print_insn_info.read_memory_func = dis_asm_read_memory;
tm_print_insn_info.memory_error_func = dis_asm_memory_error;
tm_print_insn_info.print_address_func = dis_asm_print_address;
2000-03-28 02:25:14 +00:00
add_show_from_set (add_set_cmd ("arch",
class_maintenance,
var_zinteger,
1999-07-19 23:30:11 +00:00
(char *)&gdbarch_debug,
"Set architecture debugging.\n\
2000-03-28 02:25:14 +00:00
When non-zero, architecture debugging is enabled.", &setdebuglist),
&showdebuglist);
2000-03-30 05:32:23 +00:00
c = add_set_cmd ("archdebug",
class_maintenance,
var_zinteger,
(char *)&gdbarch_debug,
"Set architecture debugging.\n\
2000-03-28 02:25:14 +00:00
When non-zero, architecture debugging is enabled.", &setlist);
2000-03-30 05:32:23 +00:00
deprecate_cmd (c, "set debug arch");
deprecate_cmd (add_show_from_set (c, &showlist), "show debug arch");
}