This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[PATCH]: New default method for multi-arch
- To: gdb-patches at sources dot redhat dot com
- Subject: [PATCH]: New default method for multi-arch
- From: Michael Snyder <msnyder at redhat dot com>
- Date: Wed, 20 Dec 2000 17:14:39 -0800
- Organization: Red Hat
This is an example of a multi-arched method that should have a default
impl.
(because many architectures do it the same way).
2000-12-20 Michael Snyder <msnyder@mvstp600e.cygnus.com>
* arch-utils.c (default_frame_address): New function. Default
implementation of frame_args_address and frame_locals_address.
* arch-utils.h (default_frame_address): Export.
* d10v-tdep.c (d10v_gdbarch_init): Use default_frame_address.
(d10v_frame_args_address, d10v_frame_locals_address): Delete.
* sh-tdep.c (sh_gdbarch_init): Use default_frame_address.
(sh_frame_args_address, sh_frame_locals_address): Delete.
* sparc-tdep.c (sparc_gdbarch_init): Use default_frame_address.
(sparc_frame_address): Delete.
Index: arch-utils.c
===================================================================
RCS file: /cvs/src/src/gdb/arch-utils.c,v
retrieving revision 1.18
diff -c -3 -p -r1.18 arch-utils.c
*** arch-utils.c 2000/12/15 01:01:45 1.18
--- arch-utils.c 2000/12/20 23:44:23
*************** no_op_reg_to_regnum (int reg)
*** 239,244 ****
--- 239,251 ----
return reg;
}
+ /* For use by frame_args_address and frame_locals_address. */
+ CORE_ADDR
+ default_frame_address (struct frame_info *fi)
+ {
+ return fi->frame;
+ }
+
/* Functions to manipulate the endianness of the target. */
#ifdef TARGET_BYTE_ORDER_SELECTABLE
Index: arch-utils.h
===================================================================
RCS file: /cvs/src/src/gdb/arch-utils.h,v
retrieving revision 1.11
diff -c -3 -p -r1.11 arch-utils.h
*** arch-utils.h 2000/12/04 04:01:15 1.11
--- arch-utils.h 2000/12/20 23:44:23
*************** extern CORE_ADDR default_convert_from_fu
*** 101,104 ****
--- 101,109 ----
extern int no_op_reg_to_regnum (int reg);
+ /* Default frame_args_address and frame_locals_address. */
+
+ extern CORE_ADDR default_frame_address (struct frame_info *);
+
+
#endif
Index: d10v-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/d10v-tdep.c,v
retrieving revision 1.13
diff -c -3 -p -r1.13 d10v-tdep.c
*** d10v-tdep.c 2000/12/15 01:01:46 1.13
--- d10v-tdep.c 2000/12/20 23:44:23
*************** d10v_frame_saved_pc (struct frame_info *
*** 438,455 ****
return ((frame)->extra_info->return_pc);
}
- CORE_ADDR
- d10v_frame_args_address (struct frame_info *fi)
- {
- return (fi)->frame;
- }
-
- CORE_ADDR
- d10v_frame_locals_address (struct frame_info *fi)
- {
- return (fi)->frame;
- }
-
/* Immediately after a function call, return the saved pc. We can't
use frame->return_pc beause that is determined by reading R13 off
the stack and that may not be written yet. */
--- 438,443 ----
*************** d10v_gdbarch_init (struct gdbarch_info i
*** 1592,1599 ****
set_gdbarch_frame_chain (gdbarch, d10v_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, d10v_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, d10v_frame_saved_pc);
! set_gdbarch_frame_args_address (gdbarch, d10v_frame_args_address);
! set_gdbarch_frame_locals_address (gdbarch, d10v_frame_locals_address);
set_gdbarch_saved_pc_after_call (gdbarch, d10v_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_stack_align (gdbarch, d10v_stack_align);
--- 1580,1587 ----
set_gdbarch_frame_chain (gdbarch, d10v_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, d10v_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, d10v_frame_saved_pc);
! set_gdbarch_frame_args_address (gdbarch, default_frame_address);
! set_gdbarch_frame_locals_address (gdbarch, default_frame_address);
set_gdbarch_saved_pc_after_call (gdbarch, d10v_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_stack_align (gdbarch, d10v_stack_align);
Index: sh-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh-tdep.c,v
retrieving revision 1.25
diff -c -3 -p -r1.25 sh-tdep.c
*** sh-tdep.c 2000/12/19 23:20:45 1.25
--- sh-tdep.c 2000/12/20 23:44:23
*************** sh_frame_saved_pc (struct frame_info *fr
*** 850,867 ****
return ((frame)->extra_info->return_pc);
}
- static CORE_ADDR
- sh_frame_args_address (struct frame_info *fi)
- {
- return (fi)->frame;
- }
-
- static CORE_ADDR
- sh_frame_locals_address (struct frame_info *fi)
- {
- return (fi)->frame;
- }
-
/* Discard from the stack the innermost frame,
restoring all saved registers. */
static void
--- 850,855 ----
*************** sh_gdbarch_init (struct gdbarch_info inf
*** 2116,2123 ****
set_gdbarch_frame_chain (gdbarch, sh_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, sh_frame_saved_pc);
! set_gdbarch_frame_args_address (gdbarch, sh_frame_args_address);
! set_gdbarch_frame_locals_address (gdbarch, sh_frame_locals_address);
set_gdbarch_saved_pc_after_call (gdbarch, sh_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_believe_pcc_promotion (gdbarch, 1);
--- 2104,2111 ----
set_gdbarch_frame_chain (gdbarch, sh_frame_chain);
set_gdbarch_frame_chain_valid (gdbarch, generic_file_frame_chain_valid);
set_gdbarch_frame_saved_pc (gdbarch, sh_frame_saved_pc);
! set_gdbarch_frame_args_address (gdbarch, default_frame_address);
! set_gdbarch_frame_locals_address (gdbarch, default_frame_address);
set_gdbarch_saved_pc_after_call (gdbarch, sh_saved_pc_after_call);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_believe_pcc_promotion (gdbarch, 1);
Index: sparc-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sparc-tdep.c,v
retrieving revision 1.9
diff -c -3 -p -r1.9 sparc-tdep.c
*** sparc-tdep.c 2000/10/24 20:05:35 1.9
--- sparc-tdep.c 2000/12/20 23:44:24
*************** sparc_frame_init_saved_regs (struct fram
*** 2810,2823 ****
{ /* no-op */
}
- /* The frame address: stored in the 'frame' field of the frame_info. */
-
- static CORE_ADDR
- sparc_frame_address (struct frame_info *fi)
- {
- return fi->frame;
- }
-
/* gdbarch fix call dummy:
All this function does is rearrange the arguments before calling
sparc_fix_call_dummy (which does the real work). */
--- 2810,2815 ----
*************** sparc_gdbarch_init (struct gdbarch_info
*** 2957,2966 ****
set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_fp_regnum (gdbarch, SPARC_FP_REGNUM);
set_gdbarch_fp0_regnum (gdbarch, SPARC_FP0_REGNUM);
! set_gdbarch_frame_args_address (gdbarch, sparc_frame_address);
set_gdbarch_frame_chain (gdbarch, sparc_frame_chain);
set_gdbarch_frame_init_saved_regs (gdbarch, sparc_frame_init_saved_regs);
! set_gdbarch_frame_locals_address (gdbarch, sparc_frame_address);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_frame_saved_pc (gdbarch, sparc_frame_saved_pc);
set_gdbarch_frameless_function_invocation (gdbarch,
--- 2949,2958 ----
set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
set_gdbarch_fp_regnum (gdbarch, SPARC_FP_REGNUM);
set_gdbarch_fp0_regnum (gdbarch, SPARC_FP0_REGNUM);
! set_gdbarch_frame_args_address (gdbarch, default_frame_address);
set_gdbarch_frame_chain (gdbarch, sparc_frame_chain);
set_gdbarch_frame_init_saved_regs (gdbarch, sparc_frame_init_saved_regs);
! set_gdbarch_frame_locals_address (gdbarch, default_frame_address);
set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
set_gdbarch_frame_saved_pc (gdbarch, sparc_frame_saved_pc);
set_gdbarch_frameless_function_invocation (gdbarch,