OSDN Git Service

* arm-tdep.c (arm_frame_chain_valid): Make static.
authorrearnsha <rearnsha>
Fri, 8 Feb 2002 18:26:36 +0000 (18:26 +0000)
committerrearnsha <rearnsha>
Fri, 8 Feb 2002 18:26:36 +0000 (18:26 +0000)
(arm_push_arguments): Likewise.
(arm_gdbarch_init): New function.
(_initialize_arm_tdep): Call it.
* config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
(TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
(FRAME_CHAIN_VALID): Delete.
(arm_frame_chain_valid): Delete declaration.
(PUSH_ARGUMENTS): Delete.
(arm_push_arguments): Delete declaration.
(CALL_DUMMY_P): Delete.

gdb/ChangeLog
gdb/arm-tdep.c
gdb/config/arm/tm-arm.h

index 08dab9c..3f57955 100644 (file)
@@ -1,3 +1,17 @@
+2002-02-08  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm-tdep.c (arm_frame_chain_valid): Make static.
+       (arm_push_arguments): Likewise.
+       (arm_gdbarch_init): New function.
+       (_initialize_arm_tdep): Call it.
+       * config/arm/tm-arm.h (GDB_MULTI_ARCH): Set to 1.
+       (TARGET_DOUBLE_FORMAT): Test TARGET_BYTE_ORDER, not target_byte_order.
+       (FRAME_CHAIN_VALID): Delete.
+       (arm_frame_chain_valid): Delete declaration.
+       (PUSH_ARGUMENTS): Delete.
+       (arm_push_arguments): Delete declaration.
+       (CALL_DUMMY_P): Delete.
+
 2002-02-08  Andrew Cagney  <ac131313@redhat.com>
            Corinna Vinschen  <vinschen@redhat.com>
 
index 3228842..501f3d6 100644 (file)
@@ -235,7 +235,7 @@ arm_use_struct_convention (int gcc_p, struct type *type)
   return nRc;
 }
 
-int
+static int
 arm_frame_chain_valid (CORE_ADDR chain, struct frame_info *thisframe)
 {
   return (chain != 0 && (FRAME_SAVED_PC (thisframe) >= LOWEST_PC));
@@ -1417,7 +1417,7 @@ arm_call_dummy_breakpoint_offset (void)
    variant of the APCS.  It passes any floating point arguments in the
    general registers and/or on the stack.  */
 
-CORE_ADDR
+static CORE_ADDR
 arm_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
                    int struct_return, CORE_ADDR struct_addr)
 {
@@ -2341,6 +2341,35 @@ arm_coff_make_msymbol_special(int val, struct minimal_symbol *msym)
     MSYMBOL_SET_SPECIAL (msym);
 }
 
+static struct gdbarch *
+arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+{
+  struct gdbarch *gdbarch;
+
+  if (arches != NULL)
+    return arches->gdbarch;
+
+  /* XXX We'll probably need to set the tdep field soon.  */
+  gdbarch = gdbarch_alloc (&info, NULL);
+
+  set_gdbarch_use_generic_dummy_frames (gdbarch, 0);
+
+  /* Call dummy code.  */
+  set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
+  set_gdbarch_call_dummy_breakpoint_offset_p (gdbarch, 1);
+  set_gdbarch_call_dummy_p (gdbarch, 1);
+  set_gdbarch_call_dummy_stack_adjust_p (gdbarch, 0);
+
+  set_gdbarch_pc_in_call_dummy (gdbarch, pc_in_call_dummy_on_stack);
+
+  set_gdbarch_get_saved_register (gdbarch, generic_get_saved_register);
+  set_gdbarch_push_arguments (gdbarch, arm_push_arguments);
+
+  set_gdbarch_frame_chain_valid (gdbarch, arm_frame_chain_valid);
+
+  return gdbarch;
+}
+
 void
 _initialize_arm_tdep (void)
 {
@@ -2353,6 +2382,9 @@ _initialize_arm_tdep (void)
   int numregs, i, j;
   static char *helptext;
 
+  if (GDB_MULTI_ARCH)
+    register_gdbarch_init (bfd_arch_arm, arm_gdbarch_init);
+
   tm_print_insn = gdb_print_insn_arm;
 
   /* Get the number of possible sets of register names defined in opcodes. */
index b203da1..0d62a5f 100644 (file)
 #ifndef TM_ARM_H
 #define TM_ARM_H
 
+#ifndef GDB_MULTI_ARCH
+#define GDB_MULTI_ARCH 1
+#endif
+
 #include "regcache.h"
 #include "floatformat.h"
 
@@ -30,7 +34,7 @@ struct type;
 struct value;
 
 /* IEEE format floating point.  */
-#define TARGET_DOUBLE_FORMAT  (target_byte_order == BFD_ENDIAN_BIG \
+#define TARGET_DOUBLE_FORMAT  (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG \
                               ? &floatformat_ieee_double_big    \
                               : &floatformat_ieee_double_littlebyte_bigword)
 
@@ -324,10 +328,6 @@ CORE_ADDR arm_target_read_fp (void);
 CORE_ADDR arm_frame_chain (struct frame_info *);
 #define FRAME_CHAIN(thisframe) arm_frame_chain (thisframe)
 
-int arm_frame_chain_valid (CORE_ADDR, struct frame_info *);
-#define FRAME_CHAIN_VALID(chain, thisframe) \
-     arm_frame_chain_valid (chain, thisframe)
-
 /* Define other aspects of the stack frame.  */
 
 int arm_frameless_function_invocation (struct frame_info *fi);
@@ -359,12 +359,6 @@ void arm_frame_init_saved_regs (struct frame_info *);
 #define FRAME_INIT_SAVED_REGS(frame_info) \
        arm_frame_init_saved_regs (frame_info);
 
-/* Things needed for making the inferior call functions.  */
-
-CORE_ADDR arm_push_arguments (int, struct value **, CORE_ADDR, int, CORE_ADDR);
-#define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) \
-     arm_push_arguments ((nargs), (args), (sp), (struct_return), (struct_addr))
-
 /* Push an empty stack frame, to record the current PC, etc.  */
 
 void arm_push_dummy_frame (void);
@@ -377,8 +371,6 @@ void arm_pop_frame (void);
 
 #define POP_FRAME arm_pop_frame ()
 
-#define CALL_DUMMY_P (1)
-
 #define CALL_DUMMY_WORDS arm_call_dummy_words
 extern LONGEST arm_call_dummy_words[];