2007-08-08 Michael Snyder <msnyder@access-company.com>
[deliverable/binutils-gdb.git] / gdb / gdbarch.c
index c1b705e67d2a331ad1ff7e70c327cb92865ff1b3..825ce1c124e297009cc6414bb721e55e9069afaa 100644 (file)
@@ -144,7 +144,6 @@ struct gdbarch
   const struct floatformat ** long_double_format;
   int ptr_bit;
   int addr_bit;
-  int bfd_vma_bit;
   int char_signed;
   gdbarch_read_pc_ftype *read_pc;
   gdbarch_write_pc_ftype *write_pc;
@@ -167,7 +166,6 @@ struct gdbarch
   gdbarch_unwind_dummy_id_ftype *unwind_dummy_id;
   int deprecated_fp_regnum;
   gdbarch_push_dummy_call_ftype *push_dummy_call;
-  int deprecated_register_size;
   int call_dummy_location;
   gdbarch_push_dummy_code_ftype *push_dummy_code;
   gdbarch_print_registers_info_ftype *print_registers_info;
@@ -189,7 +187,6 @@ struct gdbarch
   gdbarch_extract_return_value_ftype *extract_return_value;
   gdbarch_store_return_value_ftype *store_return_value;
   gdbarch_deprecated_use_struct_convention_ftype *deprecated_use_struct_convention;
-  gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address;
   gdbarch_skip_prologue_ftype *skip_prologue;
   gdbarch_inner_than_ftype *inner_than;
   gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc;
@@ -268,7 +265,6 @@ struct gdbarch startup_gdbarch =
   0,  /* long_double_format */
   8 * sizeof (void*),  /* ptr_bit */
   8 * sizeof (void*),  /* addr_bit */
-  8 * sizeof (void*),  /* bfd_vma_bit */
   1,  /* char_signed */
   0,  /* read_pc */
   0,  /* write_pc */
@@ -291,7 +287,6 @@ struct gdbarch startup_gdbarch =
   0,  /* unwind_dummy_id */
   -1,  /* deprecated_fp_regnum */
   0,  /* push_dummy_call */
-  0,  /* deprecated_register_size */
   0,  /* call_dummy_location */
   0,  /* push_dummy_code */
   default_print_registers_info,  /* print_registers_info */
@@ -313,7 +308,6 @@ struct gdbarch startup_gdbarch =
   0,  /* extract_return_value */
   0,  /* store_return_value */
   0,  /* deprecated_use_struct_convention */
-  0,  /* deprecated_extract_struct_value_address */
   0,  /* skip_prologue */
   0,  /* inner_than */
   0,  /* breakpoint_from_pc */
@@ -404,9 +398,7 @@ gdbarch_alloc (const struct gdbarch_info *info,
   current_gdbarch->double_bit = 8*TARGET_CHAR_BIT;
   current_gdbarch->long_double_bit = 8*TARGET_CHAR_BIT;
   current_gdbarch->ptr_bit = current_gdbarch->int_bit;
-  current_gdbarch->bfd_vma_bit = TARGET_ARCHITECTURE->bits_per_address;
   current_gdbarch->char_signed = -1;
-  current_gdbarch->write_pc = generic_target_write_pc;
   current_gdbarch->virtual_frame_pointer = legacy_virtual_frame_pointer;
   current_gdbarch->num_regs = -1;
   current_gdbarch->sp_regnum = -1;
@@ -520,11 +512,10 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
   /* Skip verify of ptr_bit, invalid_p == 0 */
   if (current_gdbarch->addr_bit == 0)
     current_gdbarch->addr_bit = gdbarch_ptr_bit (current_gdbarch);
-  /* Skip verify of bfd_vma_bit, invalid_p == 0 */
   if (current_gdbarch->char_signed == -1)
     current_gdbarch->char_signed = 1;
   /* Skip verify of read_pc, has predicate */
-  /* Skip verify of write_pc, invalid_p == 0 */
+  /* Skip verify of write_pc, has predicate */
   /* 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 */
@@ -560,7 +551,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
   /* Skip verify of integer_to_address, has predicate */
   /* Skip verify of return_value, has predicate */
   /* Skip verify of deprecated_use_struct_convention, invalid_p == 0 */
-  /* Skip verify of deprecated_extract_struct_value_address, has predicate */
   if (current_gdbarch->skip_prologue == 0)
     fprintf_unfiltered (log, "\n\tskip_prologue");
   if (current_gdbarch->inner_than == 0)
@@ -650,11 +640,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: GDB_TM_FILE = %s\n",
                       gdb_tm_file);
-#ifdef TARGET_ADDR_BIT
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_ADDR_BIT # %s\n",
-                      XSTRING (TARGET_ADDR_BIT));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: addr_bit = %s\n",
                       paddr_d (current_gdbarch->addr_bit));
@@ -688,25 +673,12 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: adjust_breakpoint_address = <0x%lx>\n",
                       (long) current_gdbarch->adjust_breakpoint_address);
-#ifdef BELIEVE_PCC_PROMOTION
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: BELIEVE_PCC_PROMOTION # %s\n",
-                      XSTRING (BELIEVE_PCC_PROMOTION));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: believe_pcc_promotion = %s\n",
                       paddr_d (current_gdbarch->believe_pcc_promotion));
-#ifdef TARGET_ARCHITECTURE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: TARGET_ARCHITECTURE # %s\n",
-                      XSTRING (TARGET_ARCHITECTURE));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: bfd_arch_info = %s\n",
-                      TARGET_ARCHITECTURE->printable_name);
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: bfd_vma_bit = %s\n",
-                      paddr_d (current_gdbarch->bfd_vma_bit));
+                      gdbarch_bfd_arch_info (current_gdbarch)->printable_name);
   fprintf_unfiltered (file,
                       "gdbarch_dump: breakpoint_from_pc = <0x%lx>\n",
                       (long) current_gdbarch->breakpoint_from_pc);
@@ -743,72 +715,18 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: decr_pc_after_break = 0x%s\n",
                       paddr_nz (current_gdbarch->decr_pc_after_break));
-#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P()",
-                      XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ()));
-#endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: gdbarch_deprecated_extract_struct_value_address_p() = %d\n",
-                      gdbarch_deprecated_extract_struct_value_address_p (current_gdbarch));
-#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regcache)",
-                      XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regcache)));
-#endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: deprecated_extract_struct_value_address = <0x%lx>\n",
-                      (long) current_gdbarch->deprecated_extract_struct_value_address);
-#ifdef DEPRECATED_FP_REGNUM
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FP_REGNUM # %s\n",
-                      XSTRING (DEPRECATED_FP_REGNUM));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: deprecated_fp_regnum = %s\n",
                       paddr_d (current_gdbarch->deprecated_fp_regnum));
-#ifdef DEPRECATED_FUNCTION_START_OFFSET
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_FUNCTION_START_OFFSET # %s\n",
-                      XSTRING (DEPRECATED_FUNCTION_START_OFFSET));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: deprecated_function_start_offset = 0x%s\n",
                       paddr_nz (current_gdbarch->deprecated_function_start_offset));
-#ifdef DEPRECATED_REG_STRUCT_HAS_ADDR_P
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "DEPRECATED_REG_STRUCT_HAS_ADDR_P()",
-                      XSTRING (DEPRECATED_REG_STRUCT_HAS_ADDR_P ()));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: gdbarch_deprecated_reg_struct_has_addr_p() = %d\n",
                       gdbarch_deprecated_reg_struct_has_addr_p (current_gdbarch));
-#ifdef DEPRECATED_REG_STRUCT_HAS_ADDR
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "DEPRECATED_REG_STRUCT_HAS_ADDR(gcc_p, type)",
-                      XSTRING (DEPRECATED_REG_STRUCT_HAS_ADDR (gcc_p, type)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: deprecated_reg_struct_has_addr = <0x%lx>\n",
                       (long) current_gdbarch->deprecated_reg_struct_has_addr);
-#ifdef DEPRECATED_REGISTER_SIZE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: DEPRECATED_REGISTER_SIZE # %s\n",
-                      XSTRING (DEPRECATED_REGISTER_SIZE));
-#endif
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: deprecated_register_size = %s\n",
-                      paddr_d (current_gdbarch->deprecated_register_size));
-#ifdef DEPRECATED_USE_STRUCT_CONVENTION
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "DEPRECATED_USE_STRUCT_CONVENTION(gcc_p, value_type)",
-                      XSTRING (DEPRECATED_USE_STRUCT_CONVENTION (gcc_p, value_type)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: deprecated_use_struct_convention = <0x%lx>\n",
                       (long) current_gdbarch->deprecated_use_struct_convention);
@@ -830,12 +748,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: elf_make_msymbol_special = <0x%lx>\n",
                       (long) current_gdbarch->elf_make_msymbol_special);
-#ifdef EXTRACT_RETURN_VALUE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "EXTRACT_RETURN_VALUE(type, regcache, valbuf)",
-                      XSTRING (EXTRACT_RETURN_VALUE (type, regcache, valbuf)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: extract_return_value = <0x%lx>\n",
                       (long) current_gdbarch->extract_return_value);
@@ -857,11 +769,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: float_format = %s\n",
                       pformat (current_gdbarch->float_format));
-#ifdef FP0_REGNUM
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: FP0_REGNUM # %s\n",
-                      XSTRING (FP0_REGNUM));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: fp0_regnum = %s\n",
                       paddr_d (current_gdbarch->fp0_regnum));
@@ -946,11 +853,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: overlay_update = <0x%lx>\n",
                       (long) current_gdbarch->overlay_update);
-#ifdef PC_REGNUM
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: PC_REGNUM # %s\n",
-                      XSTRING (PC_REGNUM));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: pc_regnum = %s\n",
                       paddr_d (current_gdbarch->pc_regnum));
@@ -963,12 +865,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: print_float_info = <0x%lx>\n",
                       (long) current_gdbarch->print_float_info);
-#ifdef TARGET_PRINT_INSN
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "TARGET_PRINT_INSN(vma, info)",
-                      XSTRING (TARGET_PRINT_INSN (vma, info)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: print_insn = <0x%lx>\n",
                       (long) current_gdbarch->print_insn);
@@ -981,11 +877,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: print_vector_info = <0x%lx>\n",
                       (long) current_gdbarch->print_vector_info);
-#ifdef PS_REGNUM
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: PS_REGNUM # %s\n",
-                      XSTRING (PS_REGNUM));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: ps_regnum = %s\n",
                       paddr_d (current_gdbarch->ps_regnum));
@@ -1016,21 +907,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: push_dummy_code = <0x%lx>\n",
                       (long) current_gdbarch->push_dummy_code);
-#ifdef TARGET_READ_PC_P
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "TARGET_READ_PC_P()",
-                      XSTRING (TARGET_READ_PC_P ()));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: gdbarch_read_pc_p() = %d\n",
                       gdbarch_read_pc_p (current_gdbarch));
-#ifdef TARGET_READ_PC
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "TARGET_READ_PC(ptid)",
-                      XSTRING (TARGET_READ_PC (ptid)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: read_pc = <0x%lx>\n",
                       (long) current_gdbarch->read_pc);
@@ -1097,29 +976,12 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: smash_text_address = <0x%lx>\n",
                       (long) current_gdbarch->smash_text_address);
-#ifdef SOFTWARE_SINGLE_STEP_P
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "SOFTWARE_SINGLE_STEP_P()",
-                      XSTRING (SOFTWARE_SINGLE_STEP_P ()));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: gdbarch_software_single_step_p() = %d\n",
                       gdbarch_software_single_step_p (current_gdbarch));
-#ifdef SOFTWARE_SINGLE_STEP
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "SOFTWARE_SINGLE_STEP(regcache)",
-                      XSTRING (SOFTWARE_SINGLE_STEP (regcache)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: software_single_step = <0x%lx>\n",
                       (long) current_gdbarch->software_single_step);
-#ifdef SP_REGNUM
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: SP_REGNUM # %s\n",
-                      XSTRING (SP_REGNUM));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: sp_regnum = %s\n",
                       paddr_d (current_gdbarch->sp_regnum));
@@ -1129,12 +991,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: stabs_argument_has_addr = <0x%lx>\n",
                       (long) current_gdbarch->stabs_argument_has_addr);
-#ifdef STORE_RETURN_VALUE
-  fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "STORE_RETURN_VALUE(type, regcache, valbuf)",
-                      XSTRING (STORE_RETURN_VALUE (type, regcache, valbuf)));
-#endif
   fprintf_unfiltered (file,
                       "gdbarch_dump: store_return_value = <0x%lx>\n",
                       (long) current_gdbarch->store_return_value);
@@ -1174,12 +1030,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
   fprintf_unfiltered (file,
                       "gdbarch_dump: vtable_function_descriptors = %s\n",
                       paddr_d (current_gdbarch->vtable_function_descriptors));
-#ifdef TARGET_WRITE_PC
   fprintf_unfiltered (file,
-                      "gdbarch_dump: %s # %s\n",
-                      "TARGET_WRITE_PC(val, ptid)",
-                      XSTRING (TARGET_WRITE_PC (val, ptid)));
-#endif
+                      "gdbarch_dump: gdbarch_write_pc_p() = %d\n",
+                      gdbarch_write_pc_p (current_gdbarch));
   fprintf_unfiltered (file,
                       "gdbarch_dump: write_pc = <0x%lx>\n",
                       (long) current_gdbarch->write_pc);
@@ -1434,23 +1287,6 @@ set_gdbarch_addr_bit (struct gdbarch *gdbarch,
   gdbarch->addr_bit = addr_bit;
 }
 
-int
-gdbarch_bfd_vma_bit (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  /* 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)
 {
@@ -1477,13 +1313,13 @@ gdbarch_read_pc_p (struct gdbarch *gdbarch)
 }
 
 CORE_ADDR
-gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid)
+gdbarch_read_pc (struct gdbarch *gdbarch, struct regcache *regcache)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->read_pc != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_read_pc called\n");
-  return gdbarch->read_pc (ptid);
+  return gdbarch->read_pc (regcache);
 }
 
 void
@@ -1493,14 +1329,21 @@ set_gdbarch_read_pc (struct gdbarch *gdbarch,
   gdbarch->read_pc = read_pc;
 }
 
+int
+gdbarch_write_pc_p (struct gdbarch *gdbarch)
+{
+  gdb_assert (gdbarch != NULL);
+  return gdbarch->write_pc != NULL;
+}
+
 void
-gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid)
+gdbarch_write_pc (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR val)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->write_pc != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_write_pc called\n");
-  gdbarch->write_pc (val, ptid);
+  gdbarch->write_pc (regcache, val);
 }
 
 void
@@ -1869,22 +1712,6 @@ set_gdbarch_push_dummy_call (struct gdbarch *gdbarch,
   gdbarch->push_dummy_call = push_dummy_call;
 }
 
-int
-gdbarch_deprecated_register_size (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_register_size called\n");
-  return gdbarch->deprecated_register_size;
-}
-
-void
-set_gdbarch_deprecated_register_size (struct gdbarch *gdbarch,
-                                      int deprecated_register_size)
-{
-  gdbarch->deprecated_register_size = deprecated_register_size;
-}
-
 int
 gdbarch_call_dummy_location (struct gdbarch *gdbarch)
 {
@@ -1910,13 +1737,13 @@ gdbarch_push_dummy_code_p (struct gdbarch *gdbarch)
 }
 
 CORE_ADDR
-gdbarch_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, int using_gcc, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr)
+gdbarch_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, int using_gcc, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr, struct regcache *regcache)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->push_dummy_code != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_push_dummy_code called\n");
-  return gdbarch->push_dummy_code (gdbarch, sp, funaddr, using_gcc, args, nargs, value_type, real_pc, bp_addr);
+  return gdbarch->push_dummy_code (gdbarch, sp, funaddr, using_gcc, args, nargs, value_type, real_pc, bp_addr, regcache);
 }
 
 void
@@ -2050,13 +1877,13 @@ gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch)
 }
 
 int
-gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc)
+gdbarch_get_longjmp_target (struct gdbarch *gdbarch, struct frame_info *frame, CORE_ADDR *pc)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->get_longjmp_target != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_get_longjmp_target called\n");
-  return gdbarch->get_longjmp_target (pc);
+  return gdbarch->get_longjmp_target (frame, pc);
 }
 
 void
@@ -2284,30 +2111,6 @@ set_gdbarch_deprecated_use_struct_convention (struct gdbarch *gdbarch,
   gdbarch->deprecated_use_struct_convention = deprecated_use_struct_convention;
 }
 
-int
-gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch)
-{
-  gdb_assert (gdbarch != NULL);
-  return gdbarch->deprecated_extract_struct_value_address != NULL;
-}
-
-CORE_ADDR
-gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache)
-{
-  gdb_assert (gdbarch != NULL);
-  gdb_assert (gdbarch->deprecated_extract_struct_value_address != NULL);
-  if (gdbarch_debug >= 2)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_struct_value_address called\n");
-  return gdbarch->deprecated_extract_struct_value_address (regcache);
-}
-
-void
-set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch,
-                                                     gdbarch_deprecated_extract_struct_value_address_ftype deprecated_extract_struct_value_address)
-{
-  gdbarch->deprecated_extract_struct_value_address = deprecated_extract_struct_value_address;
-}
-
 CORE_ADDR
 gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip)
 {
@@ -2721,13 +2524,13 @@ gdbarch_software_single_step_p (struct gdbarch *gdbarch)
 }
 
 int
-gdbarch_software_single_step (struct gdbarch *gdbarch, struct regcache *regcache)
+gdbarch_software_single_step (struct gdbarch *gdbarch, struct frame_info *frame)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->software_single_step != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_software_single_step called\n");
-  return gdbarch->software_single_step (regcache);
+  return gdbarch->software_single_step (frame);
 }
 
 void
@@ -2779,13 +2582,13 @@ set_gdbarch_print_insn (struct gdbarch *gdbarch,
 }
 
 CORE_ADDR
-gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc)
+gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, struct frame_info *frame, CORE_ADDR pc)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->skip_trampoline_code != NULL);
   if (gdbarch_debug >= 2)
     fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_trampoline_code called\n");
-  return gdbarch->skip_trampoline_code (pc);
+  return gdbarch->skip_trampoline_code (frame, pc);
 }
 
 void
@@ -3291,107 +3094,6 @@ gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *data)
 }
 
 
-
-/* Keep a registry of swapped data required by GDB modules. */
-
-struct gdbarch_swap
-{
-  void *swap;
-  struct gdbarch_swap_registration *source;
-  struct gdbarch_swap *next;
-};
-
-struct gdbarch_swap_registration
-{
-  void *data;
-  unsigned long sizeof_data;
-  gdbarch_swap_ftype *init;
-  struct gdbarch_swap_registration *next;
-};
-
-struct gdbarch_swap_registry
-{
-  int nr;
-  struct gdbarch_swap_registration *registrations;
-};
-
-struct gdbarch_swap_registry gdbarch_swap_registry = 
-{
-  0, NULL,
-};
-
-void
-deprecated_register_gdbarch_swap (void *data,
-                                 unsigned long sizeof_data,
-                                 gdbarch_swap_ftype *init)
-{
-  struct gdbarch_swap_registration **rego;
-  for (rego = &gdbarch_swap_registry.registrations;
-       (*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
-current_gdbarch_swap_init_hack (void)
-{
-  struct gdbarch_swap_registration *rego;
-  struct gdbarch_swap **curr = &current_gdbarch->swap;
-  for (rego = gdbarch_swap_registry.registrations;
-       rego != NULL;
-       rego = rego->next)
-    {
-      if (rego->data != NULL)
-       {
-         (*curr) = GDBARCH_OBSTACK_ZALLOC (current_gdbarch,
-                                           struct gdbarch_swap);
-         (*curr)->source = rego;
-         (*curr)->swap = gdbarch_obstack_zalloc (current_gdbarch,
-                                                 rego->sizeof_data);
-         (*curr)->next = NULL;
-         curr = &(*curr)->next;
-       }
-      if (rego->init != NULL)
-       rego->init ();
-    }
-}
-
-static struct gdbarch *
-current_gdbarch_swap_out_hack (void)
-{
-  struct gdbarch *old_gdbarch = current_gdbarch;
-  struct gdbarch_swap *curr;
-
-  gdb_assert (old_gdbarch != NULL);
-  for (curr = old_gdbarch->swap;
-       curr != NULL;
-       curr = curr->next)
-    {
-      memcpy (curr->swap, curr->source->data, curr->source->sizeof_data);
-      memset (curr->source->data, 0, curr->source->sizeof_data);
-    }
-  current_gdbarch = NULL;
-  return old_gdbarch;
-}
-
-static void
-current_gdbarch_swap_in_hack (struct gdbarch *new_gdbarch)
-{
-  struct gdbarch_swap *curr;
-
-  gdb_assert (current_gdbarch == NULL);
-  for (curr = new_gdbarch->swap;
-       curr != NULL;
-       curr = curr->next)
-    memcpy (curr->source->data, curr->swap, curr->source->sizeof_data);
-  current_gdbarch = new_gdbarch;
-}
-
-
 /* Keep a registry of the architectures known by GDB. */
 
 struct gdbarch_registration
@@ -3635,13 +3337,6 @@ find_arch_by_info (struct gdbarch_info info)
   verify_gdbarch (new_gdbarch);
   new_gdbarch->initialized_p = 1;
 
-  /* Initialize any per-architecture swap areas.  This phase requires
-     a valid global CURRENT_GDBARCH.  Set it momentarially, and then
-     swap the entire architecture out.  */
-  current_gdbarch = new_gdbarch;
-  current_gdbarch_swap_init_hack ();
-  current_gdbarch_swap_out_hack ();
-
   if (gdbarch_debug)
     gdbarch_dump (new_gdbarch, gdb_stdlog);
 
@@ -3651,26 +3346,28 @@ find_arch_by_info (struct gdbarch_info info)
 struct gdbarch *
 gdbarch_find_by_info (struct gdbarch_info info)
 {
+  struct gdbarch *new_gdbarch;
+
   /* Save the previously selected architecture, setting the global to
      NULL.  This stops things like gdbarch->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.  */
-  struct gdbarch *old_gdbarch = current_gdbarch_swap_out_hack ();
+  struct gdbarch *old_gdbarch = current_gdbarch;
+  current_gdbarch = NULL;
 
   /* Find the specified architecture.  */
-  struct gdbarch *new_gdbarch = find_arch_by_info (info);
+  new_gdbarch = find_arch_by_info (info);
 
   /* Restore the existing architecture.  */
   gdb_assert (current_gdbarch == NULL);
-  current_gdbarch_swap_in_hack (old_gdbarch);
+  current_gdbarch = old_gdbarch;
 
   return new_gdbarch;
 }
 
-/* Make the specified architecture current, swapping the existing one
-   out.  */
+/* Make the specified architecture current.  */
 
 void
 deprecated_current_gdbarch_select_hack (struct gdbarch *new_gdbarch)
@@ -3678,8 +3375,7 @@ deprecated_current_gdbarch_select_hack (struct gdbarch *new_gdbarch)
   gdb_assert (new_gdbarch != NULL);
   gdb_assert (current_gdbarch != NULL);
   gdb_assert (new_gdbarch->initialized_p);
-  current_gdbarch_swap_out_hack ();
-  current_gdbarch_swap_in_hack (new_gdbarch);
+  current_gdbarch = new_gdbarch;
   architecture_changed_event ();
   reinit_frame_cache ();
 }
This page took 0.031891 seconds and 4 git commands to generate.