diff --git a/gdb/aarch64-fbsd-tdep.c b/gdb/aarch64-fbsd-tdep.c
index 39d193551059..95b2dcbd4c5b 100644
--- a/gdb/aarch64-fbsd-tdep.c
+++ b/gdb/aarch64-fbsd-tdep.c
@@ -88,7 +88,7 @@ static const struct regcache_map_entry aarch64_fbsd_tls_regmap[] =
 
 static void
 aarch64_fbsd_sigframe_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
index a321aee036a0..4d40069f0691 100644
--- a/gdb/aarch64-linux-tdep.c
+++ b/gdb/aarch64-linux-tdep.c
@@ -284,7 +284,7 @@ aarch64_linux_restore_vreg (struct trad_frame_cache *cache, int num_regs,
 
 static void
 aarch64_linux_sigframe_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index 07330356fdcb..828cd07b5fc8 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -216,7 +216,7 @@ class instruction_reader : public abstract_instruction_reader
 
 static CORE_ADDR
 aarch64_frame_unmask_lr (aarch64_gdbarch_tdep *tdep,
-			 frame_info_ptr this_frame, CORE_ADDR addr)
+			 frame_info *this_frame, CORE_ADDR addr)
 {
   if (tdep->has_pauth ()
       && frame_unwind_register_unsigned (this_frame,
@@ -927,7 +927,7 @@ aarch64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    cache CACHE.  */
 
 static void
-aarch64_scan_prologue (frame_info_ptr this_frame,
+aarch64_scan_prologue (frame_info *this_frame,
 		       struct aarch64_prologue_cache *cache)
 {
   CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
@@ -981,7 +981,7 @@ aarch64_scan_prologue (frame_info_ptr this_frame,
    not available.  */
 
 static void
-aarch64_make_prologue_cache_1 (frame_info_ptr this_frame,
+aarch64_make_prologue_cache_1 (frame_info *this_frame,
 			       struct aarch64_prologue_cache *cache)
 {
   CORE_ADDR unwound_fp;
@@ -1016,7 +1016,7 @@ aarch64_make_prologue_cache_1 (frame_info_ptr this_frame,
    *THIS_CACHE.  */
 
 static struct aarch64_prologue_cache *
-aarch64_make_prologue_cache (frame_info_ptr this_frame, void **this_cache)
+aarch64_make_prologue_cache (frame_info *this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache;
 
@@ -1043,7 +1043,7 @@ aarch64_make_prologue_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the "stop_reason" frame_unwind method.  */
 
 static enum unwind_stop_reason
-aarch64_prologue_frame_unwind_stop_reason (frame_info_ptr this_frame,
+aarch64_prologue_frame_unwind_stop_reason (frame_info *this_frame,
 					   void **this_cache)
 {
   struct aarch64_prologue_cache *cache
@@ -1069,7 +1069,7 @@ aarch64_prologue_frame_unwind_stop_reason (frame_info_ptr this_frame,
    PC and the caller's SP when we were called.  */
 
 static void
-aarch64_prologue_this_id (frame_info_ptr this_frame,
+aarch64_prologue_this_id (frame_info *this_frame,
 			  void **this_cache, struct frame_id *this_id)
 {
   struct aarch64_prologue_cache *cache
@@ -1084,7 +1084,7 @@ aarch64_prologue_this_id (frame_info_ptr this_frame,
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-aarch64_prologue_prev_register (frame_info_ptr this_frame,
+aarch64_prologue_prev_register (frame_info *this_frame,
 				void **this_cache, int prev_regnum)
 {
   struct aarch64_prologue_cache *cache
@@ -1150,7 +1150,7 @@ static frame_unwind aarch64_prologue_unwind =
    *THIS_CACHE.  */
 
 static struct aarch64_prologue_cache *
-aarch64_make_stub_cache (frame_info_ptr this_frame, void **this_cache)
+aarch64_make_stub_cache (frame_info *this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache;
 
@@ -1180,7 +1180,7 @@ aarch64_make_stub_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the "stop_reason" frame_unwind method.  */
 
 static enum unwind_stop_reason
-aarch64_stub_frame_unwind_stop_reason (frame_info_ptr this_frame,
+aarch64_stub_frame_unwind_stop_reason (frame_info *this_frame,
 				       void **this_cache)
 {
   struct aarch64_prologue_cache *cache
@@ -1195,7 +1195,7 @@ aarch64_stub_frame_unwind_stop_reason (frame_info_ptr this_frame,
 /* Our frame ID for a stub frame is the current SP and LR.  */
 
 static void
-aarch64_stub_this_id (frame_info_ptr this_frame,
+aarch64_stub_this_id (frame_info *this_frame,
 		      void **this_cache, struct frame_id *this_id)
 {
   struct aarch64_prologue_cache *cache
@@ -1211,7 +1211,7 @@ aarch64_stub_this_id (frame_info_ptr this_frame,
 
 static int
 aarch64_stub_unwind_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
@@ -1242,7 +1242,7 @@ static frame_unwind aarch64_stub_unwind =
 /* Return the frame base address of *THIS_FRAME.  */
 
 static CORE_ADDR
-aarch64_normal_frame_base (frame_info_ptr this_frame, void **this_cache)
+aarch64_normal_frame_base (frame_info *this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache
     = aarch64_make_prologue_cache (this_frame, this_cache);
@@ -1263,7 +1263,7 @@ static frame_base aarch64_normal_base =
    *THIS_FRAME.  */
 
 static struct value *
-aarch64_dwarf2_prev_register (frame_info_ptr this_frame,
+aarch64_dwarf2_prev_register (frame_info *this_frame,
 			      void **this_cache, int regnum)
 {
   gdbarch *arch = get_frame_arch (this_frame);
@@ -1290,7 +1290,7 @@ static const unsigned char op_lit1 = DW_OP_lit1;
 static void
 aarch64_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       frame_info_ptr this_frame)
+			       frame_info *this_frame)
 {
   aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
@@ -2918,7 +2918,7 @@ aarch64_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache,
 /* Callback function for user_reg_add.  */
 
 static struct value *
-value_of_aarch64_user_reg (frame_info_ptr frame, const void *baton)
+value_of_aarch64_user_reg (frame_info *frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
 
diff --git a/gdb/alpha-linux-tdep.c b/gdb/alpha-linux-tdep.c
index 3a6a9aea1603..bf75d2256fe5 100644
--- a/gdb/alpha-linux-tdep.c
+++ b/gdb/alpha-linux-tdep.c
@@ -126,7 +126,7 @@ alpha_linux_pc_in_sigtramp (struct gdbarch *gdbarch,
 }
 
 static CORE_ADDR
-alpha_linux_sigcontext_addr (frame_info_ptr this_frame)
+alpha_linux_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc;
diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c
index 01f84f7fc3e9..1f270022ee98 100644
--- a/gdb/alpha-mdebug-tdep.c
+++ b/gdb/alpha-mdebug-tdep.c
@@ -187,7 +187,7 @@ struct alpha_mdebug_unwind_cache
    and store the resulting register save locations in the structure.  */
 
 static struct alpha_mdebug_unwind_cache *
-alpha_mdebug_frame_unwind_cache (frame_info_ptr this_frame, 
+alpha_mdebug_frame_unwind_cache (frame_info *this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info;
@@ -264,7 +264,7 @@ alpha_mdebug_frame_unwind_cache (frame_info_ptr this_frame,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_mdebug_frame_this_id (frame_info_ptr this_frame,
+alpha_mdebug_frame_this_id (frame_info *this_frame,
 			    void **this_prologue_cache,
 			    struct frame_id *this_id)
 {
@@ -277,7 +277,7 @@ alpha_mdebug_frame_this_id (frame_info_ptr this_frame,
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_mdebug_frame_prev_register (frame_info_ptr this_frame,
+alpha_mdebug_frame_prev_register (frame_info *this_frame,
 				  void **this_prologue_cache, int regnum)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -308,7 +308,7 @@ alpha_mdebug_max_frame_size_exceeded (struct mdebug_extra_func_info *proc_desc)
 
 static int
 alpha_mdebug_frame_sniffer (const struct frame_unwind *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    void **this_cache)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -345,7 +345,7 @@ static const struct frame_unwind alpha_mdebug_frame_unwind =
 };
 
 static CORE_ADDR
-alpha_mdebug_frame_base_address (frame_info_ptr this_frame,
+alpha_mdebug_frame_base_address (frame_info *this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -355,7 +355,7 @@ alpha_mdebug_frame_base_address (frame_info_ptr this_frame,
 }
 
 static CORE_ADDR
-alpha_mdebug_frame_locals_address (frame_info_ptr this_frame,
+alpha_mdebug_frame_locals_address (frame_info *this_frame,
 				   void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -365,7 +365,7 @@ alpha_mdebug_frame_locals_address (frame_info_ptr this_frame,
 }
 
 static CORE_ADDR
-alpha_mdebug_frame_args_address (frame_info_ptr this_frame,
+alpha_mdebug_frame_args_address (frame_info *this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -382,7 +382,7 @@ static const struct frame_base alpha_mdebug_frame_base = {
 };
 
 static const struct frame_base *
-alpha_mdebug_frame_base_sniffer (frame_info_ptr this_frame)
+alpha_mdebug_frame_base_sniffer (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
   struct mdebug_extra_func_info *proc_desc;
diff --git a/gdb/alpha-netbsd-tdep.c b/gdb/alpha-netbsd-tdep.c
index ae2deca2c85e..23a7fea06292 100644
--- a/gdb/alpha-netbsd-tdep.c
+++ b/gdb/alpha-netbsd-tdep.c
@@ -235,7 +235,7 @@ alphanbsd_pc_in_sigtramp (struct gdbarch *gdbarch,
 }
 
 static CORE_ADDR
-alphanbsd_sigcontext_addr (frame_info_ptr frame)
+alphanbsd_sigcontext_addr (frame_info *frame)
 {
   /* FIXME: This is not correct for all versions of NetBSD/alpha.
      We will probably need to disassemble the trampoline to figure
diff --git a/gdb/alpha-obsd-tdep.c b/gdb/alpha-obsd-tdep.c
index 41c376c65030..c01f1ff0c9c0 100644
--- a/gdb/alpha-obsd-tdep.c
+++ b/gdb/alpha-obsd-tdep.c
@@ -69,7 +69,7 @@ alphaobsd_pc_in_sigtramp (struct gdbarch *gdbarch,
 }
 
 static CORE_ADDR
-alphaobsd_sigcontext_addr (frame_info_ptr this_frame)
+alphaobsd_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 99e51b8afec1..225a8a0d02a2 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -234,7 +234,7 @@ alpha_convert_register_p (struct gdbarch *gdbarch, int regno,
 }
 
 static int
-alpha_register_to_value (frame_info_ptr frame, int regnum,
+alpha_register_to_value (frame_info *frame, int regnum,
 			 struct type *valtype, gdb_byte *out,
 			int *optimizedp, int *unavailablep)
 {
@@ -871,7 +871,7 @@ struct alpha_sigtramp_unwind_cache
 };
 
 static struct alpha_sigtramp_unwind_cache *
-alpha_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
+alpha_sigtramp_frame_unwind_cache (frame_info *this_frame,
 				   void **this_prologue_cache)
 {
   struct alpha_sigtramp_unwind_cache *info;
@@ -912,7 +912,7 @@ alpha_sigtramp_register_address (struct gdbarch *gdbarch,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_sigtramp_frame_this_id (frame_info_ptr this_frame,
+alpha_sigtramp_frame_this_id (frame_info *this_frame,
 			      void **this_prologue_cache,
 			      struct frame_id *this_id)
 {
@@ -954,7 +954,7 @@ alpha_sigtramp_frame_this_id (frame_info_ptr this_frame,
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+alpha_sigtramp_frame_prev_register (frame_info *this_frame,
 				    void **this_prologue_cache, int regnum)
 {
   struct alpha_sigtramp_unwind_cache *info
@@ -979,7 +979,7 @@ alpha_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 alpha_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1221,7 +1221,7 @@ alpha_heuristic_analyze_probing_loop (struct gdbarch *gdbarch, CORE_ADDR *pc,
 }
 
 static struct alpha_heuristic_unwind_cache *
-alpha_heuristic_frame_unwind_cache (frame_info_ptr this_frame,
+alpha_heuristic_frame_unwind_cache (frame_info *this_frame,
 				    void **this_prologue_cache,
 				    CORE_ADDR start_pc)
 {
@@ -1398,7 +1398,7 @@ alpha_heuristic_frame_unwind_cache (frame_info_ptr this_frame,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_heuristic_frame_this_id (frame_info_ptr this_frame,
+alpha_heuristic_frame_this_id (frame_info *this_frame,
 			       void **this_prologue_cache,
 			       struct frame_id *this_id)
 {
@@ -1411,7 +1411,7 @@ alpha_heuristic_frame_this_id (frame_info_ptr this_frame,
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_heuristic_frame_prev_register (frame_info_ptr this_frame,
+alpha_heuristic_frame_prev_register (frame_info *this_frame,
 				     void **this_prologue_cache, int regnum)
 {
   struct alpha_heuristic_unwind_cache *info
@@ -1438,7 +1438,7 @@ static const struct frame_unwind alpha_heuristic_frame_unwind =
 };
 
 static CORE_ADDR
-alpha_heuristic_frame_base_address (frame_info_ptr this_frame,
+alpha_heuristic_frame_base_address (frame_info *this_frame,
 				    void **this_prologue_cache)
 {
   struct alpha_heuristic_unwind_cache *info
diff --git a/gdb/alpha-tdep.h b/gdb/alpha-tdep.h
index be71b313a0a0..9d147d4dce65 100644
--- a/gdb/alpha-tdep.h
+++ b/gdb/alpha-tdep.h
@@ -81,7 +81,7 @@ struct alpha_gdbarch_tdep : gdbarch_tdep_base
 
   /* Translate a signal handler stack base address into the address of
      the sigcontext structure for that signal handler.  */
-  CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
+  CORE_ADDR (*sigcontext_addr) (frame_info *) = nullptr;
 
   /* Does the PC fall in a signal trampoline.  */
   /* NOTE: cagney/2004-04-30: Do not copy/clone this code.  Instead
diff --git a/gdb/amd64-darwin-tdep.c b/gdb/amd64-darwin-tdep.c
index 86819cf148f8..633f2669819e 100644
--- a/gdb/amd64-darwin-tdep.c
+++ b/gdb/amd64-darwin-tdep.c
@@ -75,7 +75,7 @@ const int amd64_darwin_thread_state_num_regs =
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64_darwin_sigcontext_addr (frame_info_ptr this_frame)
+amd64_darwin_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/amd64-fbsd-tdep.c b/gdb/amd64-fbsd-tdep.c
index 960bb0b5942f..206f8674ecee 100644
--- a/gdb/amd64-fbsd-tdep.c
+++ b/gdb/amd64-fbsd-tdep.c
@@ -169,7 +169,7 @@ const struct regset amd64_fbsd_segbases_regset =
 
 static void
 amd64_fbsd_sigframe_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
index 07c1669f91e0..2f4b0324c5dd 100644
--- a/gdb/amd64-linux-tdep.c
+++ b/gdb/amd64-linux-tdep.c
@@ -133,7 +133,7 @@ static const gdb_byte amd64_x32_linux_sigtramp_code[] =
    the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-amd64_linux_sigtramp_start (frame_info_ptr this_frame)
+amd64_linux_sigtramp_start (frame_info *this_frame)
 {
   struct gdbarch *gdbarch;
   const gdb_byte *sigtramp_code;
@@ -175,7 +175,7 @@ amd64_linux_sigtramp_start (frame_info_ptr this_frame)
    routine.  */
 
 static int
-amd64_linux_sigtramp_p (frame_info_ptr this_frame)
+amd64_linux_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -201,7 +201,7 @@ amd64_linux_sigtramp_p (frame_info_ptr this_frame)
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64_linux_sigcontext_addr (frame_info_ptr this_frame)
+amd64_linux_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/amd64-netbsd-tdep.c b/gdb/amd64-netbsd-tdep.c
index ec6906c12fb6..ded9d36fa52e 100644
--- a/gdb/amd64-netbsd-tdep.c
+++ b/gdb/amd64-netbsd-tdep.c
@@ -35,7 +35,7 @@
    routine.  */
 
 static int
-amd64nbsd_sigtramp_p (frame_info_ptr this_frame)
+amd64nbsd_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -48,7 +48,7 @@ amd64nbsd_sigtramp_p (frame_info_ptr this_frame)
    return the address of the associated mcontext structure.  */
 
 static CORE_ADDR
-amd64nbsd_mcontext_addr (frame_info_ptr this_frame)
+amd64nbsd_mcontext_addr (frame_info *this_frame)
 {
   CORE_ADDR addr;
 
diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
index 22cf7f5d6c24..b30342bfb5d8 100644
--- a/gdb/amd64-obsd-tdep.c
+++ b/gdb/amd64-obsd-tdep.c
@@ -45,7 +45,7 @@ static const int amd64obsd_page_size = 4096;
    routine.  */
 
 static int
-amd64obsd_sigtramp_p (frame_info_ptr this_frame)
+amd64obsd_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   CORE_ADDR start_pc = (pc & ~(amd64obsd_page_size - 1));
@@ -98,7 +98,7 @@ amd64obsd_sigtramp_p (frame_info_ptr this_frame)
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64obsd_sigcontext_addr (frame_info_ptr this_frame)
+amd64obsd_sigcontext_addr (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   ULONGEST offset = (pc & (amd64obsd_page_size - 1));
@@ -315,7 +315,7 @@ amd64obsd_collect_uthread (const struct regcache *regcache,
 #define amd64obsd_tf_reg_offset amd64obsd_sc_reg_offset
 
 static struct trad_frame_cache *
-amd64obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
+amd64obsd_trapframe_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -362,7 +362,7 @@ amd64obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-amd64obsd_trapframe_this_id (frame_info_ptr this_frame,
+amd64obsd_trapframe_this_id (frame_info *this_frame,
 			     void **this_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *cache =
@@ -372,7 +372,7 @@ amd64obsd_trapframe_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-amd64obsd_trapframe_prev_register (frame_info_ptr this_frame,
+amd64obsd_trapframe_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   struct trad_frame_cache *cache =
@@ -383,7 +383,7 @@ amd64obsd_trapframe_prev_register (frame_info_ptr this_frame,
 
 static int
 amd64obsd_trapframe_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   ULONGEST cs;
diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c
index f62240fcd55f..254a86833b68 100644
--- a/gdb/amd64-sol2-tdep.c
+++ b/gdb/amd64-sol2-tdep.c
@@ -67,7 +67,7 @@ static int amd64_sol2_gregset_reg_offset[] = {
    'mcontext_t' that contains the saved set of machine registers.  */
 
 static CORE_ADDR
-amd64_sol2_mcontext_addr (frame_info_ptr this_frame)
+amd64_sol2_mcontext_addr (frame_info *this_frame)
 {
   CORE_ADDR sp, ucontext_addr;
 
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index bbfc509319cb..96070d9ae635 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -2560,7 +2560,7 @@ amd64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 /* Normal frames.  */
 
 static void
-amd64_frame_cache_1 (frame_info_ptr this_frame,
+amd64_frame_cache_1 (frame_info *this_frame,
 		     struct amd64_frame_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2629,7 +2629,7 @@ amd64_frame_cache_1 (frame_info_ptr this_frame,
 }
 
 static struct amd64_frame_cache *
-amd64_frame_cache (frame_info_ptr this_frame, void **this_cache)
+amd64_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct amd64_frame_cache *cache;
 
@@ -2653,7 +2653,7 @@ amd64_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static enum unwind_stop_reason
-amd64_frame_unwind_stop_reason (frame_info_ptr this_frame,
+amd64_frame_unwind_stop_reason (frame_info *this_frame,
 				void **this_cache)
 {
   struct amd64_frame_cache *cache =
@@ -2670,7 +2670,7 @@ amd64_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-amd64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+amd64_frame_this_id (frame_info *this_frame, void **this_cache,
 		     struct frame_id *this_id)
 {
   struct amd64_frame_cache *cache =
@@ -2688,7 +2688,7 @@ amd64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-amd64_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+amd64_frame_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2742,7 +2742,7 @@ amd64_gen_return_address (struct gdbarch *gdbarch,
    on both platforms.  */
 
 static struct amd64_frame_cache *
-amd64_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
+amd64_sigtramp_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -2782,7 +2782,7 @@ amd64_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static enum unwind_stop_reason
-amd64_sigtramp_frame_unwind_stop_reason (frame_info_ptr this_frame,
+amd64_sigtramp_frame_unwind_stop_reason (frame_info *this_frame,
 					 void **this_cache)
 {
   struct amd64_frame_cache *cache =
@@ -2795,7 +2795,7 @@ amd64_sigtramp_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-amd64_sigtramp_frame_this_id (frame_info_ptr this_frame,
+amd64_sigtramp_frame_this_id (frame_info *this_frame,
 			      void **this_cache, struct frame_id *this_id)
 {
   struct amd64_frame_cache *cache =
@@ -2813,7 +2813,7 @@ amd64_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-amd64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+amd64_sigtramp_frame_prev_register (frame_info *this_frame,
 				    void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -2824,7 +2824,7 @@ amd64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 amd64_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      void **this_cache)
 {
   gdbarch *arch = get_frame_arch (this_frame);
@@ -2866,7 +2866,7 @@ static const struct frame_unwind amd64_sigtramp_frame_unwind =
 
 
 static CORE_ADDR
-amd64_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+amd64_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct amd64_frame_cache *cache =
     amd64_frame_cache (this_frame, this_cache);
@@ -2911,7 +2911,7 @@ amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
 static int
 amd64_epilogue_frame_sniffer (const struct frame_unwind *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      void **this_prologue_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -2922,7 +2922,7 @@ amd64_epilogue_frame_sniffer (const struct frame_unwind *self,
 }
 
 static struct amd64_frame_cache *
-amd64_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
+amd64_epilogue_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2963,7 +2963,7 @@ amd64_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static enum unwind_stop_reason
-amd64_epilogue_frame_unwind_stop_reason (frame_info_ptr this_frame,
+amd64_epilogue_frame_unwind_stop_reason (frame_info *this_frame,
 					 void **this_cache)
 {
   struct amd64_frame_cache *cache
@@ -2976,7 +2976,7 @@ amd64_epilogue_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-amd64_epilogue_frame_this_id (frame_info_ptr this_frame,
+amd64_epilogue_frame_this_id (frame_info *this_frame,
 			      void **this_cache,
 			      struct frame_id *this_id)
 {
@@ -3001,7 +3001,7 @@ static const struct frame_unwind amd64_epilogue_frame_unwind =
 };
 
 static struct frame_id
-amd64_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+amd64_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR fp;
 
diff --git a/gdb/amd64-tdep.h b/gdb/amd64-tdep.h
index df85c60c19c5..be328e0b55e1 100644
--- a/gdb/amd64-tdep.h
+++ b/gdb/amd64-tdep.h
@@ -22,7 +22,6 @@
 #define AMD64_TDEP_H
 
 struct gdbarch;
-class frame_info_ptr;
 struct regcache;
 
 #include "i386-tdep.h"
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index 0cc5feec2a45..6c98fa121098 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -513,7 +513,7 @@ pc_in_range (CORE_ADDR pc, const struct amd64_windows_frame_cache *cache)
    Return 1 if an epilogue sequence was recognized, 0 otherwise.  */
 
 static int
-amd64_windows_frame_decode_epilogue (frame_info_ptr this_frame,
+amd64_windows_frame_decode_epilogue (frame_info *this_frame,
 				     struct amd64_windows_frame_cache *cache)
 {
   /* According to MSDN an epilogue "must consist of either an add RSP,constant
@@ -693,7 +693,7 @@ amd64_windows_frame_decode_epilogue (frame_info_ptr this_frame,
 /* Decode and execute unwind insns at UNWIND_INFO.  */
 
 static void
-amd64_windows_frame_decode_insns (frame_info_ptr this_frame,
+amd64_windows_frame_decode_insns (frame_info *this_frame,
 				  struct amd64_windows_frame_cache *cache,
 				  CORE_ADDR unwind_info)
 {
@@ -1073,7 +1073,7 @@ amd64_windows_find_unwind_info (struct gdbarch *gdbarch, CORE_ADDR pc,
    for THIS_FRAME.  */
 
 static struct amd64_windows_frame_cache *
-amd64_windows_frame_cache (frame_info_ptr this_frame, void **this_cache)
+amd64_windows_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1118,7 +1118,7 @@ amd64_windows_frame_cache (frame_info_ptr this_frame, void **this_cache)
    using the standard Windows x64 SEH info.  */
 
 static struct value *
-amd64_windows_frame_prev_register (frame_info_ptr this_frame,
+amd64_windows_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1164,7 +1164,7 @@ amd64_windows_frame_prev_register (frame_info_ptr this_frame,
    the standard Windows x64 SEH info.  */
 
 static void
-amd64_windows_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+amd64_windows_frame_this_id (frame_info *this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
   struct amd64_windows_frame_cache *cache =
diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c
index da7f4758c195..81091d135a92 100644
--- a/gdb/arc-linux-tdep.c
+++ b/gdb/arc-linux-tdep.c
@@ -159,7 +159,7 @@ static const int arc_linux_core_reg_offsets[] = {
    Returns TRUE if this is a sigtramp frame.  */
 
 static bool
-arc_linux_is_sigtramp (frame_info_ptr this_frame)
+arc_linux_is_sigtramp (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -257,7 +257,7 @@ arc_linux_is_sigtramp (frame_info_ptr this_frame)
    etc) in GDB hardcode values.  */
 
 static CORE_ADDR
-arc_linux_sigcontext_addr (frame_info_ptr this_frame)
+arc_linux_sigcontext_addr (frame_info *this_frame)
 {
   const int ucontext_offset = 0x80;
   const int sigcontext_offset = 0x14;
diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c
index 3ab0930bb295..432b3cca7dd7 100644
--- a/gdb/arc-tdep.c
+++ b/gdb/arc-tdep.c
@@ -1061,7 +1061,7 @@ arc_return_value (struct gdbarch *gdbarch, struct value *function,
    frame pointer.  */
 
 static CORE_ADDR
-arc_frame_base_address (frame_info_ptr this_frame, void **prologue_cache)
+arc_frame_base_address (frame_info *this_frame, void **prologue_cache)
 {
   return (CORE_ADDR) get_frame_register_unsigned (this_frame, ARC_FP_REGNUM);
 }
@@ -1642,7 +1642,7 @@ arc_print_frame_cache (struct gdbarch *gdbarch, const char *message,
 /* Frame unwinder for normal frames.  */
 
 static struct arc_frame_cache *
-arc_make_frame_cache (frame_info_ptr this_frame)
+arc_make_frame_cache (frame_info *this_frame)
 {
   arc_debug_printf ("called");
 
@@ -1709,7 +1709,7 @@ arc_make_frame_cache (frame_info_ptr this_frame)
 /* Implement the "this_id" frame_unwind method.  */
 
 static void
-arc_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+arc_frame_this_id (frame_info *this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
   arc_debug_printf ("called");
@@ -1754,7 +1754,7 @@ arc_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-arc_frame_prev_register (frame_info_ptr this_frame,
+arc_frame_prev_register (frame_info *this_frame,
 			 void **this_cache, int regnum)
 {
   if (*this_cache == NULL)
@@ -1791,7 +1791,7 @@ arc_frame_prev_register (frame_info_ptr this_frame,
 static void
 arc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			   struct dwarf2_frame_state_reg *reg,
-			   frame_info_ptr info)
+			   frame_info *info)
 {
   if (regnum == gdbarch_pc_regnum (gdbarch))
     /* The return address column.  */
@@ -1805,7 +1805,7 @@ arc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
     from within signal handlers.  */
 
 static struct arc_frame_cache *
-arc_make_sigtramp_frame_cache (frame_info_ptr this_frame)
+arc_make_sigtramp_frame_cache (frame_info *this_frame)
 {
   arc_debug_printf ("called");
 
@@ -1844,7 +1844,7 @@ arc_make_sigtramp_frame_cache (frame_info_ptr this_frame)
    frames.  */
 
 static void
-arc_sigtramp_frame_this_id (frame_info_ptr this_frame,
+arc_sigtramp_frame_this_id (frame_info *this_frame,
 			    void **this_cache, struct frame_id *this_id)
 {
   arc_debug_printf ("called");
@@ -1863,7 +1863,7 @@ arc_sigtramp_frame_this_id (frame_info_ptr this_frame,
 /* Get a register from a signal handler frame.  */
 
 static struct value *
-arc_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+arc_sigtramp_frame_prev_register (frame_info *this_frame,
 				  void **this_cache, int regnum)
 {
   arc_debug_printf ("regnum = %d", regnum);
@@ -1881,7 +1881,7 @@ arc_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 arc_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    void **this_cache)
 {
   arc_debug_printf ("called");
diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h
index 0a7628352953..16e9499b1609 100644
--- a/gdb/arc-tdep.h
+++ b/gdb/arc-tdep.h
@@ -131,10 +131,10 @@ struct arc_gdbarch_tdep : gdbarch_tdep_base
   bool has_hw_loops = false;
 
   /* Detect sigtramp.  */
-  bool (*is_sigtramp) (frame_info_ptr) = nullptr;
+  bool (*is_sigtramp) (frame_info *) = nullptr;
 
   /* Get address of sigcontext for sigtramp.  */
-  CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
+  CORE_ADDR (*sigcontext_addr) (frame_info *) = nullptr;
 
   /* Offset of registers in `struct sigcontext'.  */
   const int *sc_reg_offset = nullptr;
diff --git a/gdb/arm-fbsd-tdep.c b/gdb/arm-fbsd-tdep.c
index 75ee08eba506..c459f9f44c26 100644
--- a/gdb/arm-fbsd-tdep.c
+++ b/gdb/arm-fbsd-tdep.c
@@ -105,7 +105,7 @@ static const struct regcache_map_entry arm_fbsd_tls_regmap[] =
 
 static void
 arm_fbsd_sigframe_init (const struct tramp_frame *self,
-			frame_info_ptr this_frame,
+			frame_info *this_frame,
 			struct trad_frame_cache *this_cache,
 			CORE_ADDR func)
 {
diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c
index 27aca0c39e6b..58e8cc9686b2 100644
--- a/gdb/arm-linux-tdep.c
+++ b/gdb/arm-linux-tdep.c
@@ -277,7 +277,7 @@ static struct arm_get_next_pcs_ops arm_linux_get_next_pcs_ops = {
 };
 
 static void
-arm_linux_sigtramp_cache (frame_info_ptr this_frame,
+arm_linux_sigtramp_cache (frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func, int regs_offset)
 {
@@ -300,7 +300,7 @@ arm_linux_sigtramp_cache (frame_info_ptr this_frame,
 /* See arm-linux.h for stack layout details.  */
 static void
 arm_linux_sigreturn_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
@@ -320,7 +320,7 @@ arm_linux_sigreturn_init (const struct tramp_frame *self,
 
 static void
 arm_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
@@ -343,7 +343,7 @@ arm_linux_rt_sigreturn_init (const struct tramp_frame *self,
 
 static void
 arm_linux_restart_syscall_init (const struct tramp_frame *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				struct trad_frame_cache *this_cache,
 				CORE_ADDR func)
 {
diff --git a/gdb/arm-obsd-tdep.c b/gdb/arm-obsd-tdep.c
index 697f07561129..1e53579af180 100644
--- a/gdb/arm-obsd-tdep.c
+++ b/gdb/arm-obsd-tdep.c
@@ -30,7 +30,7 @@
 
 static void
 armobsd_sigframe_init (const struct tramp_frame *self,
-		       frame_info_ptr this_frame,
+		       frame_info *this_frame,
 		       struct trad_frame_cache *cache,
 		       CORE_ADDR func)
 {
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 6f02f04b5cb2..ac1f3eadeb5c 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -338,7 +338,7 @@ arm_cache_init (struct arm_prologue_cache *cache, struct gdbarch *gdbarch)
 /* Similar to the previous function, but extracts GDBARCH from FRAME.  */
 
 static void
-arm_cache_init (struct arm_prologue_cache *cache, frame_info_ptr frame)
+arm_cache_init (struct arm_prologue_cache *cache, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -627,7 +627,7 @@ arm_is_thumb (struct regcache *regcache)
    frame.  */
 
 int
-arm_frame_is_thumb (frame_info_ptr frame)
+arm_frame_is_thumb (frame_info *frame)
 {
   /* Check the architecture of FRAME.  */
   struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -767,7 +767,7 @@ arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr)
      a symbol table we will not reach here, so it still may not be
      displayed in the mode it will be executed).  */
   if (target_has_registers ())
-    return arm_frame_is_thumb (get_current_frame ());
+    return arm_frame_is_thumb (get_current_frame ().get ());
 
   /* Otherwise we're out of luck; we assume ARM.  */
   return 0;
@@ -2199,7 +2199,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch,
 }
 
 static void
-arm_scan_prologue (frame_info_ptr this_frame,
+arm_scan_prologue (frame_info *this_frame,
 		   struct arm_prologue_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2296,7 +2296,7 @@ arm_scan_prologue (frame_info_ptr this_frame,
 }
 
 static struct arm_prologue_cache *
-arm_make_prologue_cache (frame_info_ptr this_frame)
+arm_make_prologue_cache (frame_info *this_frame)
 {
   int reg;
   struct arm_prologue_cache *cache;
@@ -2330,7 +2330,7 @@ arm_make_prologue_cache (frame_info_ptr this_frame)
 /* Implementation of the stop_reason hook for arm_prologue frames.  */
 
 static enum unwind_stop_reason
-arm_prologue_unwind_stop_reason (frame_info_ptr this_frame,
+arm_prologue_unwind_stop_reason (frame_info *this_frame,
 				 void **this_cache)
 {
   struct arm_prologue_cache *cache;
@@ -2358,7 +2358,7 @@ arm_prologue_unwind_stop_reason (frame_info_ptr this_frame,
    and the caller's SP when we were called.  */
 
 static void
-arm_prologue_this_id (frame_info_ptr this_frame,
+arm_prologue_this_id (frame_info *this_frame,
 		      void **this_cache,
 		      struct frame_id *this_id)
 {
@@ -2386,7 +2386,7 @@ arm_prologue_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-arm_prologue_prev_register (frame_info_ptr this_frame,
+arm_prologue_prev_register (frame_info *this_frame,
 			    void **this_cache,
 			    int prev_regnum)
 {
@@ -2782,7 +2782,7 @@ arm_find_exidx_entry (CORE_ADDR memaddr, CORE_ADDR *start)
    for the ARM Architecture" document.  */
 
 static struct arm_prologue_cache *
-arm_exidx_fill_cache (frame_info_ptr this_frame, gdb_byte *entry)
+arm_exidx_fill_cache (frame_info *this_frame, gdb_byte *entry)
 {
   CORE_ADDR vsp = 0;
   int vsp_valid = 0;
@@ -3080,7 +3080,7 @@ arm_exidx_fill_cache (frame_info_ptr this_frame, gdb_byte *entry)
 
 static int
 arm_exidx_unwind_sniffer (const struct frame_unwind *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3179,7 +3179,7 @@ struct frame_unwind arm_exidx_unwind = {
 };
 
 static struct arm_prologue_cache *
-arm_make_epilogue_frame_cache (frame_info_ptr this_frame)
+arm_make_epilogue_frame_cache (frame_info *this_frame)
 {
   struct arm_prologue_cache *cache;
   int reg;
@@ -3211,7 +3211,7 @@ arm_make_epilogue_frame_cache (frame_info_ptr this_frame)
    'struct frame_uwnind' for epilogue unwinder.  */
 
 static void
-arm_epilogue_frame_this_id (frame_info_ptr this_frame,
+arm_epilogue_frame_this_id (frame_info *this_frame,
 			    void **this_cache,
 			    struct frame_id *this_id)
 {
@@ -3239,7 +3239,7 @@ arm_epilogue_frame_this_id (frame_info_ptr this_frame,
    'struct frame_uwnind' for epilogue unwinder.  */
 
 static struct value *
-arm_epilogue_frame_prev_register (frame_info_ptr this_frame,
+arm_epilogue_frame_prev_register (frame_info *this_frame,
 				  void **this_cache, int regnum)
 {
   if (*this_cache == NULL)
@@ -3258,7 +3258,7 @@ static int thumb_stack_frame_destroyed_p (struct gdbarch *gdbarch,
 
 static int
 arm_epilogue_frame_sniffer (const struct frame_unwind *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    void **this_prologue_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -3315,7 +3315,7 @@ static const struct frame_unwind arm_epilogue_frame_unwind =
    The trampoline 'bx r2' doesn't belong to main.  */
 
 static CORE_ADDR
-arm_skip_bx_reg (frame_info_ptr frame, CORE_ADDR pc)
+arm_skip_bx_reg (frame_info *frame, CORE_ADDR pc)
 {
   /* The heuristics of recognizing such trampoline is that FRAME is
      executing in Thumb mode and the instruction on PC is 'bx Rm'.  */
@@ -3347,7 +3347,7 @@ arm_skip_bx_reg (frame_info_ptr frame, CORE_ADDR pc)
 }
 
 static struct arm_prologue_cache *
-arm_make_stub_cache (frame_info_ptr this_frame)
+arm_make_stub_cache (frame_info *this_frame)
 {
   struct arm_prologue_cache *cache;
 
@@ -3366,7 +3366,7 @@ arm_make_stub_cache (frame_info_ptr this_frame)
 /* Our frame ID for a stub frame is the current SP and LR.  */
 
 static void
-arm_stub_this_id (frame_info_ptr this_frame,
+arm_stub_this_id (frame_info *this_frame,
 		  void **this_cache,
 		  struct frame_id *this_id)
 {
@@ -3384,7 +3384,7 @@ arm_stub_this_id (frame_info_ptr this_frame,
 
 static int
 arm_stub_unwind_sniffer (const struct frame_unwind *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
@@ -3422,7 +3422,7 @@ struct frame_unwind arm_stub_unwind = {
    returned.  */
 
 static struct arm_prologue_cache *
-arm_m_exception_cache (frame_info_ptr this_frame)
+arm_m_exception_cache (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -3808,7 +3808,7 @@ arm_m_exception_cache (frame_info_ptr this_frame)
 /* Implementation of the stop_reason hook for arm_m_exception frames.  */
 
 static enum unwind_stop_reason
-arm_m_exception_frame_unwind_stop_reason (frame_info_ptr this_frame,
+arm_m_exception_frame_unwind_stop_reason (frame_info *this_frame,
 					  void **this_cache)
 {
   struct arm_prologue_cache *cache;
@@ -3830,7 +3830,7 @@ arm_m_exception_frame_unwind_stop_reason (frame_info_ptr this_frame,
    'struct frame_uwnind'.  */
 
 static void
-arm_m_exception_this_id (frame_info_ptr this_frame,
+arm_m_exception_this_id (frame_info *this_frame,
 			 void **this_cache,
 			 struct frame_id *this_id)
 {
@@ -3851,7 +3851,7 @@ arm_m_exception_this_id (frame_info_ptr this_frame,
    'struct frame_uwnind'.  */
 
 static struct value *
-arm_m_exception_prev_register (frame_info_ptr this_frame,
+arm_m_exception_prev_register (frame_info *this_frame,
 			       void **this_cache,
 			       int prev_regnum)
 {
@@ -3916,7 +3916,7 @@ arm_m_exception_prev_register (frame_info_ptr this_frame,
 
 static int
 arm_m_exception_unwind_sniffer (const struct frame_unwind *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3944,7 +3944,7 @@ struct frame_unwind arm_m_exception_unwind =
 };
 
 static CORE_ADDR
-arm_normal_frame_base (frame_info_ptr this_frame, void **this_cache)
+arm_normal_frame_base (frame_info *this_frame, void **this_cache)
 {
   struct arm_prologue_cache *cache;
 
@@ -3965,7 +3965,7 @@ struct frame_base arm_normal_base = {
 };
 
 static struct value *
-arm_dwarf2_prev_register (frame_info_ptr this_frame, void **this_cache,
+arm_dwarf2_prev_register (frame_info *this_frame, void **this_cache,
 			  int regnum)
 {
   struct gdbarch * gdbarch = get_frame_arch (this_frame);
@@ -5191,7 +5191,7 @@ static const unsigned char op_lit0 = DW_OP_lit0;
 static void
 arm_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			   struct dwarf2_frame_state_reg *reg,
-			   frame_info_ptr this_frame)
+			   frame_info *this_frame)
 {
   arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
@@ -9312,7 +9312,7 @@ arm_skip_stub (frame_info_ptr frame, CORE_ADDR pc)
     {
       /* Trampoline 'bx reg' doesn't belong to any functions.  Do the
 	 check here.  */
-      start_addr = arm_skip_bx_reg (frame, pc);
+      start_addr = arm_skip_bx_reg (frame.get (), pc);
       if (start_addr != 0)
 	return start_addr;
 
@@ -9850,7 +9850,7 @@ arm_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache,
 }
 
 static struct value *
-value_of_arm_user_reg (frame_info_ptr frame, const void *baton)
+value_of_arm_user_reg (frame_info *frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
   return value_of_register (*reg_p, frame);
diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h
index bcd7e08b7cee..eee6cc985e14 100644
--- a/gdb/arm-tdep.h
+++ b/gdb/arm-tdep.h
@@ -292,7 +292,7 @@ int arm_get_next_pcs_is_thumb (struct arm_get_next_pcs *self);
 
 std::vector<CORE_ADDR> arm_software_single_step (struct regcache *);
 int arm_is_thumb (struct regcache *regcache);
-int arm_frame_is_thumb (frame_info_ptr frame);
+int arm_frame_is_thumb (frame_info *frame);
 
 extern void arm_displaced_step_fixup (struct gdbarch *,
 				      displaced_step_copy_insn_closure *,
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index bac0b3f5008b..72a4663a01d3 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -979,7 +979,7 @@ avr_return_value (struct gdbarch *gdbarch, struct value *function,
    for it IS the sp for the next frame.  */
 
 static struct avr_unwind_cache *
-avr_frame_unwind_cache (frame_info_ptr this_frame,
+avr_frame_unwind_cache (frame_info *this_frame,
 			void **this_prologue_cache)
 {
   CORE_ADDR start_pc, current_pc;
@@ -1059,7 +1059,7 @@ avr_frame_unwind_cache (frame_info_ptr this_frame,
 }
 
 static CORE_ADDR
-avr_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+avr_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   ULONGEST pc;
 
@@ -1069,7 +1069,7 @@ avr_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 }
 
 static CORE_ADDR
-avr_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+avr_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   ULONGEST sp;
 
@@ -1082,7 +1082,7 @@ avr_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-avr_frame_this_id (frame_info_ptr this_frame,
+avr_frame_this_id (frame_info *this_frame,
 		   void **this_prologue_cache,
 		   struct frame_id *this_id)
 {
@@ -1107,7 +1107,7 @@ avr_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-avr_frame_prev_register (frame_info_ptr this_frame,
+avr_frame_prev_register (frame_info *this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   struct avr_unwind_cache *info
@@ -1166,7 +1166,7 @@ static const struct frame_unwind avr_frame_unwind = {
 };
 
 static CORE_ADDR
-avr_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+avr_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct avr_unwind_cache *info
     = avr_frame_unwind_cache (this_frame, this_cache);
@@ -1186,7 +1186,7 @@ static const struct frame_base avr_frame_base = {
    save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint.  */
 
 static struct frame_id
-avr_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+avr_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   ULONGEST base;
 
diff --git a/gdb/bfin-linux-tdep.c b/gdb/bfin-linux-tdep.c
index 873cb017e82b..ecfe336eda76 100644
--- a/gdb/bfin-linux-tdep.c
+++ b/gdb/bfin-linux-tdep.c
@@ -95,7 +95,7 @@ static const int bfin_linux_sigcontext_reg_offset[BFIN_NUM_REGS] =
 
 static void
 bfin_linux_sigframe_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
index f751e2782112..781699284301 100644
--- a/gdb/bfin-tdep.c
+++ b/gdb/bfin-tdep.c
@@ -288,7 +288,7 @@ bfin_alloc_frame_cache (void)
 }
 
 static struct bfin_frame_cache *
-bfin_frame_cache (frame_info_ptr this_frame, void **this_cache)
+bfin_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache;
   int i;
@@ -340,7 +340,7 @@ bfin_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-bfin_frame_this_id (frame_info_ptr this_frame,
+bfin_frame_this_id (frame_info *this_frame,
 		    void **this_cache,
 		    struct frame_id *this_id)
 {
@@ -355,7 +355,7 @@ bfin_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-bfin_frame_prev_register (frame_info_ptr this_frame,
+bfin_frame_prev_register (frame_info *this_frame,
 			  void **this_cache,
 			  int regnum)
 {
@@ -724,7 +724,7 @@ bfin_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
 }
 
 static CORE_ADDR
-bfin_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+bfin_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
@@ -732,7 +732,7 @@ bfin_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 }
 
 static CORE_ADDR
-bfin_frame_local_address (frame_info_ptr this_frame, void **this_cache)
+bfin_frame_local_address (frame_info *this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
@@ -740,7 +740,7 @@ bfin_frame_local_address (frame_info_ptr this_frame, void **this_cache)
 }
 
 static CORE_ADDR
-bfin_frame_args_address (frame_info_ptr this_frame, void **this_cache)
+bfin_frame_args_address (frame_info *this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 49bafa34b608..35bfa754f03c 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -52,7 +52,7 @@
    slot instruction.  */
 
 const struct block *
-get_frame_block (frame_info_ptr frame, CORE_ADDR *addr_in_block)
+get_frame_block (frame_info *frame, CORE_ADDR *addr_in_block)
 {
   CORE_ADDR pc;
   const struct block *bl;
@@ -115,7 +115,7 @@ get_pc_function_start (CORE_ADDR pc)
 /* Return the symbol for the function executing in frame FRAME.  */
 
 struct symbol *
-get_frame_function (frame_info_ptr frame)
+get_frame_function (frame_info *frame)
 {
   const struct block *bl = get_frame_block (frame, 0);
 
diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c
index ea7c11473784..8708f7dd218a 100644
--- a/gdb/bpf-tdep.c
+++ b/gdb/bpf-tdep.c
@@ -154,7 +154,7 @@ bpf_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 /* Given THIS_FRAME, return its ID.  */
 
 static void
-bpf_frame_this_id (frame_info_ptr this_frame,
+bpf_frame_this_id (frame_info *this_frame,
 		   void **this_prologue_cache,
 		   struct frame_id *this_id)
 {
@@ -165,7 +165,7 @@ bpf_frame_this_id (frame_info_ptr this_frame,
 /* Return the reason why we can't unwind past THIS_FRAME.  */
 
 static enum unwind_stop_reason
-bpf_frame_unwind_stop_reason (frame_info_ptr this_frame,
+bpf_frame_unwind_stop_reason (frame_info *this_frame,
 			      void **this_cache)
 {
   return UNWIND_OUTERMOST;
@@ -174,7 +174,7 @@ bpf_frame_unwind_stop_reason (frame_info_ptr this_frame,
 /* Ask THIS_FRAME to unwind its register.  */
 
 static struct value *
-bpf_frame_prev_register (frame_info_ptr this_frame,
+bpf_frame_prev_register (frame_info *this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   return frame_unwind_got_register (this_frame, regnum, regnum);
@@ -235,7 +235,7 @@ bpf_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 /* Assuming THIS_FRAME is a dummy frame, return its frame ID.  */
 
 static struct frame_id
-bpf_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+bpf_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR sp = get_frame_register_unsigned (this_frame,
 					      gdbarch_sp_regnum (gdbarch));
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index d38850aa1af0..d6f5452ec53d 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -193,7 +193,7 @@ static const unsigned short rt_sigtramp_code[] =
    the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-cris_sigtramp_start (frame_info_ptr this_frame)
+cris_sigtramp_start (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   gdb_byte buf[SIGTRAMP_LEN];
@@ -221,7 +221,7 @@ cris_sigtramp_start (frame_info_ptr this_frame)
    the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-cris_rt_sigtramp_start (frame_info_ptr this_frame)
+cris_rt_sigtramp_start (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   gdb_byte buf[SIGTRAMP_LEN];
@@ -249,7 +249,7 @@ cris_rt_sigtramp_start (frame_info_ptr this_frame)
    return the address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-cris_sigcontext_addr (frame_info_ptr this_frame)
+cris_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -309,7 +309,7 @@ struct cris_unwind_cache
 };
 
 static struct cris_unwind_cache *
-cris_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
+cris_sigtramp_frame_unwind_cache (frame_info *this_frame,
 				  void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -402,7 +402,7 @@ cris_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
 }
 
 static void
-cris_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+cris_sigtramp_frame_this_id (frame_info *this_frame, void **this_cache,
 			     struct frame_id *this_id)
 {
   struct cris_unwind_cache *cache =
@@ -412,10 +412,10 @@ cris_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 
 /* Forward declaration.  */
 
-static struct value *cris_frame_prev_register (frame_info_ptr this_frame,
+static struct value *cris_frame_prev_register (frame_info *this_frame,
 					       void **this_cache, int regnum);
 static struct value *
-cris_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+cris_sigtramp_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -425,7 +425,7 @@ cris_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 cris_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_cache)
 {
   if (cris_sigtramp_start (this_frame) 
@@ -645,11 +645,11 @@ static void set_cris_dwarf2_cfi (const char *ignore_args, int from_tty,
 				 struct cmd_list_element *c);
 
 static CORE_ADDR cris_scan_prologue (CORE_ADDR pc, 
-				     frame_info_ptr this_frame,
+				     frame_info *this_frame,
 				     struct cris_unwind_cache *info);
 
 static CORE_ADDR crisv32_scan_prologue (CORE_ADDR pc, 
-					frame_info_ptr this_frame,
+					frame_info *this_frame,
 					struct cris_unwind_cache *info);
 
 /* When arguments must be pushed onto the stack, they go on in reverse
@@ -692,7 +692,7 @@ pop_stack_item (struct cris_stack_item *si)
    for it IS the sp for the next frame.  */
 
 static struct cris_unwind_cache *
-cris_frame_unwind_cache (frame_info_ptr this_frame,
+cris_frame_unwind_cache (frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -729,7 +729,7 @@ cris_frame_unwind_cache (frame_info_ptr this_frame,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-cris_frame_this_id (frame_info_ptr this_frame,
+cris_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache,
 		    struct frame_id *this_id)
 {
@@ -755,7 +755,7 @@ cris_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-cris_frame_prev_register (frame_info_ptr this_frame,
+cris_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct cris_unwind_cache *info
@@ -912,7 +912,7 @@ static const struct frame_unwind cris_frame_unwind =
 };
 
 static CORE_ADDR
-cris_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+cris_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct cris_unwind_cache *info
     = cris_frame_unwind_cache (this_frame, this_cache);
@@ -1004,7 +1004,7 @@ static const struct frame_base cris_frame_base =
    determine that it is a prologue (1).  */
 
 static CORE_ADDR 
-cris_scan_prologue (CORE_ADDR pc, frame_info_ptr this_frame,
+cris_scan_prologue (CORE_ADDR pc, frame_info *this_frame,
 		    struct cris_unwind_cache *info)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1287,7 +1287,7 @@ cris_scan_prologue (CORE_ADDR pc, frame_info_ptr this_frame,
 }
 
 static CORE_ADDR 
-crisv32_scan_prologue (CORE_ADDR pc, frame_info_ptr this_frame,
+crisv32_scan_prologue (CORE_ADDR pc, frame_info *this_frame,
 		    struct cris_unwind_cache *info)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1756,7 +1756,7 @@ cris_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 static void
 cris_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			    struct dwarf2_frame_state_reg *reg,
-			    frame_info_ptr this_frame)
+			    frame_info *this_frame)
 {
   /* The return address column.  */
   if (regnum == gdbarch_pc_regnum (gdbarch))
diff --git a/gdb/csky-linux-tdep.c b/gdb/csky-linux-tdep.c
index 8df3eaa2026b..e22f50983a4f 100644
--- a/gdb/csky-linux-tdep.c
+++ b/gdb/csky-linux-tdep.c
@@ -310,7 +310,7 @@ csky_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 csky_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      struct trad_frame_cache *this_cache,
 			      CORE_ADDR func)
 {
@@ -355,7 +355,7 @@ csky_linux_rt_sigreturn_tramp_frame = {
 
 static void
 csky_linux_rt_sigreturn_init_pt_regs (const struct tramp_frame *self,
-				      frame_info_ptr this_frame,
+				      frame_info *this_frame,
 				      struct trad_frame_cache *this_cache,
 				      CORE_ADDR func)
 {
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index f293d204da20..67a9bdbda2c6 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -955,7 +955,7 @@ csky_analyze_prologue (struct gdbarch *gdbarch,
 		       CORE_ADDR start_pc,
 		       CORE_ADDR limit_pc,
 		       CORE_ADDR end_pc,
-		       frame_info_ptr this_frame,
+		       frame_info *this_frame,
 		       struct csky_unwind_cache *this_cache,
 		       lr_type_t lr_type)
 {
@@ -2060,7 +2060,7 @@ csky_analyze_lr_type (struct gdbarch *gdbarch,
 /* Heuristic unwinder.  */
 
 static struct csky_unwind_cache *
-csky_frame_unwind_cache (frame_info_ptr this_frame)
+csky_frame_unwind_cache (frame_info *this_frame)
 {
   CORE_ADDR prologue_start, prologue_end, func_end, prev_pc, block_addr;
   struct csky_unwind_cache *cache;
@@ -2119,7 +2119,7 @@ csky_frame_unwind_cache (frame_info_ptr this_frame)
 /* Implement the this_id function for the normal unwinder.  */
 
 static void
-csky_frame_this_id (frame_info_ptr this_frame,
+csky_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache, struct frame_id *this_id)
 {
   struct csky_unwind_cache *cache;
@@ -2140,7 +2140,7 @@ csky_frame_this_id (frame_info_ptr this_frame,
 /* Implement the prev_register function for the normal unwinder.  */
 
 static struct value *
-csky_frame_prev_register (frame_info_ptr this_frame,
+csky_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct csky_unwind_cache *cache;
@@ -2169,7 +2169,7 @@ static const struct frame_unwind csky_unwind_cache = {
 };
 
 static CORE_ADDR
-csky_check_long_branch (frame_info_ptr frame, CORE_ADDR pc)
+csky_check_long_branch (frame_info *frame, CORE_ADDR pc)
 {
   gdb_byte buf[8];
   struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -2206,7 +2206,7 @@ csky_check_long_branch (frame_info_ptr frame, CORE_ADDR pc)
 
 static int
 csky_stub_unwind_sniffer (const struct frame_unwind *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block, pc;
@@ -2237,7 +2237,7 @@ csky_stub_unwind_sniffer (const struct frame_unwind *self,
 }
 
 static struct csky_unwind_cache *
-csky_make_stub_cache (frame_info_ptr this_frame)
+csky_make_stub_cache (frame_info *this_frame)
 {
   struct csky_unwind_cache *cache;
 
@@ -2249,7 +2249,7 @@ csky_make_stub_cache (frame_info_ptr this_frame)
 }
 
 static void
-csky_stub_this_id (frame_info_ptr this_frame,
+csky_stub_this_id (frame_info *this_frame,
 		  void **this_cache,
 		  struct frame_id *this_id)
 {
@@ -2264,7 +2264,7 @@ csky_stub_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-csky_stub_prev_register (frame_info_ptr this_frame,
+csky_stub_prev_register (frame_info *this_frame,
 			    void **this_cache,
 			    int prev_regnum)
 {
@@ -2304,7 +2304,7 @@ static frame_unwind csky_stub_unwind = {
    for the normal unwinder.  */
 
 static CORE_ADDR
-csky_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+csky_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct csky_unwind_cache *cache;
 
@@ -2327,7 +2327,7 @@ static const struct frame_base csky_frame_base = {
 static void
 csky_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			    struct dwarf2_frame_state_reg *reg,
-			    frame_info_ptr this_frame)
+			    frame_info *this_frame)
 {
   if (regnum == gdbarch_pc_regnum (gdbarch))
     reg->how = DWARF2_FRAME_REG_RA;
diff --git a/gdb/defs.h b/gdb/defs.h
index f51ab9e5c0c3..1cd644cc814f 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -284,7 +284,6 @@ enum return_value_convention
 
 struct symtab;
 struct breakpoint;
-class frame_info_ptr;
 struct gdbarch;
 struct value;
 
diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c
index 42c4bf23431b..5254d26dd0a3 100644
--- a/gdb/dummy-frame.c
+++ b/gdb/dummy-frame.c
@@ -288,7 +288,7 @@ struct dummy_frame_cache
 
 static int
 dummy_frame_sniffer (const struct frame_unwind *self,
-		     frame_info_ptr this_frame,
+		     frame_info *this_frame,
 		     void **this_prologue_cache)
 {
   /* When unwinding a normal frame, the stack structure is determined
@@ -334,7 +334,7 @@ dummy_frame_sniffer (const struct frame_unwind *self,
    register value is taken from the local copy of the register buffer.  */
 
 static struct value *
-dummy_frame_prev_register (frame_info_ptr this_frame,
+dummy_frame_prev_register (frame_info *this_frame,
 			   void **this_prologue_cache,
 			   int regnum)
 {
@@ -364,7 +364,7 @@ dummy_frame_prev_register (frame_info_ptr this_frame,
    dummy cache is located and saved in THIS_PROLOGUE_CACHE.  */
 
 static void
-dummy_frame_this_id (frame_info_ptr this_frame,
+dummy_frame_this_id (frame_info *this_frame,
 		     void **this_prologue_cache,
 		     struct frame_id *this_id)
 {
@@ -390,7 +390,7 @@ const struct frame_unwind dummy_frame_unwind =
 /* See dummy-frame.h.  */
 
 struct frame_id
-default_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+default_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR sp, pc;
 
diff --git a/gdb/dummy-frame.h b/gdb/dummy-frame.h
index 213881e4eab1..1388fdac2c0a 100644
--- a/gdb/dummy-frame.h
+++ b/gdb/dummy-frame.h
@@ -78,6 +78,6 @@ extern int find_dummy_frame_dtor (dummy_frame_dtor_ftype *dtor,
    for THIS_FRAME assuming that the frame is a dummy frame.  */
 
 extern struct frame_id default_dummy_id (struct gdbarch *gdbarch,
-					 frame_info_ptr this_frame);
+					 frame_info *this_frame);
 
 #endif /* !defined (DUMMY_FRAME_H)  */
diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c
index 73dfd4b4ffb6..ca13e1a2d56c 100644
--- a/gdb/dwarf2/expr.c
+++ b/gdb/dwarf2/expr.c
@@ -49,7 +49,7 @@ static const registry<gdbarch>::key<dwarf_gdbarch_types> dwarf_arch_cookie;
 /* Ensure that a FRAME is defined, throw an exception otherwise.  */
 
 static void
-ensure_have_frame (frame_info_ptr frame, const char *op_name)
+ensure_have_frame (frame_info *frame, const char *op_name)
 {
   if (frame == nullptr)
     throw_error (GENERIC_ERROR,
@@ -78,7 +78,7 @@ bits_to_bytes (ULONGEST start, ULONGEST n_bits)
 /* See expr.h.  */
 
 CORE_ADDR
-read_addr_from_reg (frame_info_ptr frame, int reg)
+read_addr_from_reg (frame_info *frame, int reg)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   int regnum = dwarf_reg_to_regnum_or_error (gdbarch, reg);
@@ -112,7 +112,7 @@ static piece_closure *
 allocate_piece_closure (dwarf2_per_cu_data *per_cu,
 			dwarf2_per_objfile *per_objfile,
 			std::vector<dwarf_expr_piece> &&pieces,
-			frame_info_ptr frame)
+			frame_info *frame)
 {
   piece_closure *c = new piece_closure;
 
@@ -810,7 +810,7 @@ dwarf_expr_context::dwarf_call (cu_offset die_cu_off)
 {
   ensure_have_per_cu (this->m_per_cu, "DW_OP_call");
 
-  frame_info_ptr frame = this->m_frame;
+  frame_info *frame = this->m_frame;
 
   auto get_pc_from_frame = [frame] ()
     {
@@ -887,7 +887,7 @@ dwarf_expr_context::push_dwarf_reg_entry_value (call_site_parameter_kind kind,
      It is possible for the caller to be from a different objfile from the
      callee if the call is made through a function pointer.  */
   scoped_restore save_frame = make_scoped_restore (&this->m_frame,
-						   caller_frame);
+						   caller_frame.get ());
   scoped_restore save_per_cu = make_scoped_restore (&this->m_per_cu,
 						    caller_per_cu);
   scoped_restore save_addr_info = make_scoped_restore (&this->m_addr_info,
@@ -1069,7 +1069,7 @@ dwarf_expr_context::fetch_result (struct type *type, struct type *subobj_type,
 
 value *
 dwarf_expr_context::evaluate (const gdb_byte *addr, size_t len, bool as_lval,
-			      dwarf2_per_cu_data *per_cu, frame_info_ptr frame,
+			      dwarf2_per_cu_data *per_cu, frame_info *frame,
 			      const struct property_addr_info *addr_info,
 			      struct type *type, struct type *subobj_type,
 			      LONGEST subobj_offset)
diff --git a/gdb/dwarf2/expr.h b/gdb/dwarf2/expr.h
index 6078dce0abc5..4ce9b734f77f 100644
--- a/gdb/dwarf2/expr.h
+++ b/gdb/dwarf2/expr.h
@@ -137,7 +137,7 @@ struct dwarf_expr_context
      The ADDR_INFO property can be specified to override the range of
      memory addresses with the passed in buffer.  */
   value *evaluate (const gdb_byte *addr, size_t len, bool as_lval,
-		   dwarf2_per_cu_data *per_cu, frame_info_ptr frame,
+		   dwarf2_per_cu_data *per_cu, frame_info *frame,
 		   const struct property_addr_info *addr_info = nullptr,
 		   struct type *type = nullptr,
 		   struct type *subobj_type = nullptr,
@@ -196,7 +196,7 @@ struct dwarf_expr_context
   dwarf2_per_objfile *m_per_objfile;
 
   /* Frame information used for the evaluation.  */
-  frame_info_ptr m_frame = nullptr;
+  frame_info *m_frame = nullptr;
 
   /* Compilation unit used for the evaluation.  */
   dwarf2_per_cu_data *m_per_cu = nullptr;
@@ -256,7 +256,7 @@ struct dwarf_expr_context
 
 /* Return the value of register number REG (a DWARF register number),
    read as an address in a given FRAME.  */
-CORE_ADDR read_addr_from_reg (frame_info_ptr frame, int reg);
+CORE_ADDR read_addr_from_reg (frame_info *frame, int reg);
 
 void dwarf_expr_require_composition (const gdb_byte *, const gdb_byte *,
 				     const char *);
diff --git a/gdb/dwarf2/frame-tailcall.c b/gdb/dwarf2/frame-tailcall.c
index a1e43cc18eda..3e2e898d5eb3 100644
--- a/gdb/dwarf2/frame-tailcall.c
+++ b/gdb/dwarf2/frame-tailcall.c
@@ -90,12 +90,12 @@ cache_eq (const void *arg1, const void *arg2)
    tailcall_cache.  */
 
 static struct tailcall_cache *
-cache_new_ref1 (frame_info_ptr next_bottom_frame)
+cache_new_ref1 (frame_info *next_bottom_frame)
 {
   struct tailcall_cache *cache = XCNEW (struct tailcall_cache);
   void **slot;
 
-  cache->next_bottom_frame = next_bottom_frame.get ();
+  cache->next_bottom_frame = next_bottom_frame;
   cache->refc = 1;
 
   slot = htab_find_slot (cache_htab, cache, INSERT);
@@ -137,7 +137,7 @@ cache_unref (struct tailcall_cache *cache)
    return 0.  */
 
 static int
-frame_is_tailcall (frame_info_ptr fi)
+frame_is_tailcall (frame_info *fi)
 {
   return frame_unwinder_is (fi, &dwarf2_tailcall_frame_unwind);
 }
@@ -146,7 +146,7 @@ frame_is_tailcall (frame_info_ptr fi)
    call chain.  Otherwise return NULL.  No new reference is created.  */
 
 static struct tailcall_cache *
-cache_find (frame_info_ptr fi)
+cache_find (frame_info *fi)
 {
   struct tailcall_cache *cache;
   struct tailcall_cache search;
@@ -158,7 +158,7 @@ cache_find (frame_info_ptr fi)
       gdb_assert (fi != NULL);
     }
 
-  search.next_bottom_frame = fi.get();
+  search.next_bottom_frame = fi;
   search.refc = 1;
   slot = htab_find_slot (cache_htab, &search, NO_INSERT);
   if (slot == NULL)
@@ -173,11 +173,11 @@ cache_find (frame_info_ptr fi)
    If THIS_FRAME is CACHE-> NEXT_BOTTOM_FRAME return -1.  */
 
 static int
-existing_next_levels (frame_info_ptr this_frame,
+existing_next_levels (frame_info *this_frame,
 		      struct tailcall_cache *cache)
 {
   int retval = (frame_relative_level (this_frame)
-		- frame_relative_level (frame_info_ptr (cache->next_bottom_frame)) - 1);
+		- frame_relative_level (cache->next_bottom_frame) - 1);
 
   gdb_assert (retval >= -1);
 
@@ -210,14 +210,13 @@ pretended_chain_levels (struct call_site_chain *chain)
    Specific virtual tail call frames are tracked by INLINE_DEPTH.  */
 
 static void
-tailcall_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+tailcall_frame_this_id (frame_info *this_frame, void **this_cache,
 			struct frame_id *this_id)
 {
   struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
-  frame_info_ptr next_frame;
 
   /* Tail call does not make sense for a sentinel frame.  */
-  next_frame = get_next_frame (this_frame);
+  frame_info *next_frame = get_next_frame (this_frame);
   gdb_assert (next_frame != NULL);
 
   *this_id = get_frame_id (next_frame);
@@ -232,7 +231,7 @@ tailcall_frame_this_id (frame_info_ptr this_frame, void **this_cache,
    CACHE.  */
 
 static CORE_ADDR
-pretend_pc (frame_info_ptr this_frame, struct tailcall_cache *cache)
+pretend_pc (frame_info *this_frame, struct tailcall_cache *cache)
 {
   int next_levels = existing_next_levels (this_frame, cache);
   struct call_site_chain *chain = cache->chain;
@@ -264,7 +263,7 @@ pretend_pc (frame_info_ptr this_frame, struct tailcall_cache *cache)
    frames unwind the NULL case differently.  */
 
 struct value *
-dwarf2_tailcall_prev_register_first (frame_info_ptr this_frame,
+dwarf2_tailcall_prev_register_first (frame_info *this_frame,
 				     void **tailcall_cachep, int regnum)
 {
   struct gdbarch *this_gdbarch = get_frame_arch (this_frame);
@@ -294,7 +293,7 @@ dwarf2_tailcall_prev_register_first (frame_info_ptr this_frame,
    dwarf2_tailcall_prev_register_first.  */
 
 static struct value *
-tailcall_frame_prev_register (frame_info_ptr this_frame,
+tailcall_frame_prev_register (frame_info *this_frame,
 			       void **this_cache, int regnum)
 {
   struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
@@ -316,9 +315,8 @@ tailcall_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 tailcall_frame_sniffer (const struct frame_unwind *self,
-			 frame_info_ptr this_frame, void **this_cache)
+			 frame_info *this_frame, void **this_cache)
 {
-  frame_info_ptr next_frame;
   int next_levels;
   struct tailcall_cache *cache;
 
@@ -326,7 +324,7 @@ tailcall_frame_sniffer (const struct frame_unwind *self,
     return 0;
 
   /* Inner tail call element does not make sense for a sentinel frame.  */
-  next_frame = get_next_frame (this_frame);
+  frame_info *next_frame = get_next_frame (this_frame);
   if (next_frame == NULL)
     return 0;
 
@@ -363,7 +361,7 @@ tailcall_frame_sniffer (const struct frame_unwind *self,
    address pushed on the stack.  */
 
 void
-dwarf2_tailcall_sniffer_first (frame_info_ptr this_frame,
+dwarf2_tailcall_sniffer_first (frame_info *this_frame,
 			       void **tailcall_cachep,
 			       const LONGEST *entry_cfa_sp_offsetp)
 {
@@ -458,7 +456,7 @@ tailcall_frame_dealloc_cache (frame_info *self, void *this_cache)
    call frames have gdbarch of the bottom (callee) frame.  */
 
 static struct gdbarch *
-tailcall_frame_prev_arch (frame_info_ptr this_frame,
+tailcall_frame_prev_arch (frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   struct tailcall_cache *cache = (struct tailcall_cache *) *this_prologue_cache;
diff --git a/gdb/dwarf2/frame-tailcall.h b/gdb/dwarf2/frame-tailcall.h
index c849bfb070ef..ec6e40e73a9c 100644
--- a/gdb/dwarf2/frame-tailcall.h
+++ b/gdb/dwarf2/frame-tailcall.h
@@ -20,18 +20,17 @@
 #ifndef DWARF2_FRAME_TAILCALL_H
 #define DWARF2_FRAME_TAILCALL_H 1
 
-class frame_info_ptr;
 struct frame_unwind;
 
 /* The tail call frame unwinder.  */
 
 extern void
-  dwarf2_tailcall_sniffer_first (frame_info_ptr this_frame,
+  dwarf2_tailcall_sniffer_first (frame_info *this_frame,
 				 void **tailcall_cachep,
 				 const LONGEST *entry_cfa_sp_offsetp);
 
 extern struct value *
-  dwarf2_tailcall_prev_register_first (frame_info_ptr this_frame,
+  dwarf2_tailcall_prev_register_first (frame_info *this_frame,
 				       void **tailcall_cachep, int regnum);
 
 extern const struct frame_unwind dwarf2_tailcall_frame_unwind;
diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c
index 3f884abe1d58..70a5c5d45d2a 100644
--- a/gdb/dwarf2/frame.c
+++ b/gdb/dwarf2/frame.c
@@ -226,7 +226,7 @@ register %s (#%d) at %s"),
 
 static CORE_ADDR
 execute_stack_op (const gdb_byte *exp, ULONGEST len, int addr_size,
-		  frame_info_ptr this_frame, CORE_ADDR initial,
+		  frame_info *this_frame, CORE_ADDR initial,
 		  int initial_in_stack_memory, dwarf2_per_objfile *per_objfile)
 {
   dwarf_expr_context ctx (per_objfile, addr_size);
@@ -582,17 +582,17 @@ execute_cfa_program_test (struct gdbarch *gdbarch)
 static void dwarf2_frame_default_init_reg (struct gdbarch *gdbarch,
 					   int regnum,
 					   struct dwarf2_frame_state_reg *reg,
-					   frame_info_ptr this_frame);
+					   frame_info *this_frame);
 
 struct dwarf2_frame_ops
 {
   /* Pre-initialize the register state REG for register REGNUM.  */
   void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *,
-		    frame_info_ptr)
+		    frame_info *)
     = dwarf2_frame_default_init_reg;
 
   /* Check whether the THIS_FRAME is a signal trampoline.  */
-  int (*signal_frame_p) (struct gdbarch *, frame_info_ptr) = nullptr;
+  int (*signal_frame_p) (struct gdbarch *, frame_info *) = nullptr;
 
   /* Convert .eh_frame register number to DWARF register number, or
      adjust .debug_frame register number.  */
@@ -618,7 +618,7 @@ get_frame_ops (struct gdbarch *gdbarch)
 static void
 dwarf2_frame_default_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       frame_info_ptr this_frame)
+			       frame_info *this_frame)
 {
   /* If we have a register that acts as a program counter, mark it as
      a destination for the return address.  If we have a register that
@@ -659,7 +659,7 @@ void
 dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
 			   void (*init_reg) (struct gdbarch *, int,
 					     struct dwarf2_frame_state_reg *,
-					     frame_info_ptr))
+					     frame_info *))
 {
   struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
 
@@ -671,7 +671,7 @@ dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
 static void
 dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 		       struct dwarf2_frame_state_reg *reg,
-		       frame_info_ptr this_frame)
+		       frame_info *this_frame)
 {
   struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
 
@@ -684,7 +684,7 @@ dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 void
 dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
 				 int (*signal_frame_p) (struct gdbarch *,
-							frame_info_ptr))
+							frame_info *))
 {
   struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
 
@@ -696,7 +696,7 @@ dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
 
 static int
 dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch,
-			     frame_info_ptr this_frame)
+			     frame_info *this_frame)
 {
   struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
 
@@ -865,7 +865,7 @@ struct dwarf2_frame_cache
 };
 
 static struct dwarf2_frame_cache *
-dwarf2_frame_cache (frame_info_ptr this_frame, void **this_cache)
+dwarf2_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   const int num_regs = gdbarch_num_cooked_regs (gdbarch);
@@ -1094,7 +1094,7 @@ incomplete CFI data; unspecified registers (e.g., %s) at %s"),
 }
 
 static enum unwind_stop_reason
-dwarf2_frame_unwind_stop_reason (frame_info_ptr this_frame,
+dwarf2_frame_unwind_stop_reason (frame_info *this_frame,
 				 void **this_cache)
 {
   struct dwarf2_frame_cache *cache
@@ -1110,7 +1110,7 @@ dwarf2_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-dwarf2_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+dwarf2_frame_this_id (frame_info *this_frame, void **this_cache,
 		      struct frame_id *this_id)
 {
   struct dwarf2_frame_cache *cache =
@@ -1125,7 +1125,7 @@ dwarf2_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-dwarf2_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+dwarf2_frame_prev_register (frame_info *this_frame, void **this_cache,
 			    int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1228,7 +1228,7 @@ static void
 dwarf2_frame_dealloc_cache (frame_info *self, void *this_cache)
 {
   struct dwarf2_frame_cache *cache
-      = dwarf2_frame_cache (frame_info_ptr (self), &this_cache);
+      = dwarf2_frame_cache (self, &this_cache);
 
   if (cache->tailcall_cache)
     dwarf2_tailcall_frame_unwind.dealloc_cache (self, cache->tailcall_cache);
@@ -1236,7 +1236,7 @@ dwarf2_frame_dealloc_cache (frame_info *self, void *this_cache)
 
 static int
 dwarf2_frame_sniffer (const struct frame_unwind *self,
-		      frame_info_ptr this_frame, void **this_cache)
+		      frame_info *this_frame, void **this_cache)
 {
   if (!dwarf2_frame_unwinders_enabled_p)
     return 0;
@@ -1312,7 +1312,7 @@ dwarf2_append_unwinders (struct gdbarch *gdbarch)
    response to the "info frame" command.  */
 
 static CORE_ADDR
-dwarf2_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+dwarf2_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct dwarf2_frame_cache *cache =
     dwarf2_frame_cache (this_frame, this_cache);
@@ -1329,7 +1329,7 @@ static const struct frame_base dwarf2_frame_base =
 };
 
 const struct frame_base *
-dwarf2_frame_base_sniffer (frame_info_ptr this_frame)
+dwarf2_frame_base_sniffer (frame_info *this_frame)
 {
   CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
 
@@ -1344,7 +1344,7 @@ dwarf2_frame_base_sniffer (frame_info_ptr this_frame)
    DW_OP_call_frame_cfa.  */
 
 CORE_ADDR
-dwarf2_frame_cfa (frame_info_ptr this_frame)
+dwarf2_frame_cfa (frame_info *this_frame)
 {
   if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind)
       || frame_unwinder_is (this_frame, &record_btrace_frame_unwind))
@@ -1352,7 +1352,7 @@ dwarf2_frame_cfa (frame_info_ptr this_frame)
 		 _("cfa not available for record btrace target"));
 
   while (get_frame_type (this_frame) == INLINE_FRAME)
-    this_frame = get_prev_frame (this_frame);
+    this_frame = get_prev_frame (this_frame).get ();
   if (get_frame_unwind_stop_reason (this_frame) == UNWIND_UNAVAILABLE)
     throw_error (NOT_AVAILABLE_ERROR,
 		_("can't compute CFA for this frame: "
diff --git a/gdb/dwarf2/frame.h b/gdb/dwarf2/frame.h
index 06c8a10c1785..20e1ae344510 100644
--- a/gdb/dwarf2/frame.h
+++ b/gdb/dwarf2/frame.h
@@ -23,7 +23,7 @@
 #define DWARF2_FRAME_H 1
 
 struct gdbarch;
-class frame_info_ptr;
+struct frame_info;
 struct dwarf2_per_cu_data;
 struct agent_expr;
 struct axs_value;
@@ -78,7 +78,7 @@ struct dwarf2_frame_state_reg
       const gdb_byte *start;
       ULONGEST len;
     } exp;
-    struct value *(*fn) (frame_info_ptr this_frame, void **this_cache,
+    struct value *(*fn) (frame_info *this_frame, void **this_cache,
 			 int regnum);
   } loc;
   enum dwarf2_frame_reg_rule how;
@@ -208,7 +208,7 @@ extern bool dwarf2_frame_unwinders_enabled_p;
 extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
 				       void (*init_reg) (struct gdbarch *, int,
 					     struct dwarf2_frame_state_reg *,
-					     frame_info_ptr));
+					     frame_info *));
 
 /* Set the architecture-specific signal trampoline recognition
    function for GDBARCH to SIGNAL_FRAME_P.  */
@@ -216,7 +216,7 @@ extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
 extern void
   dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
 				   int (*signal_frame_p) (struct gdbarch *,
-							  frame_info_ptr));
+							  frame_info *));
 
 /* Set the architecture-specific adjustment of .eh_frame and .debug_frame
    register numbers.  */
@@ -234,11 +234,11 @@ void dwarf2_append_unwinders (struct gdbarch *gdbarch);
    NULL if it can't be handled by the DWARF CFI frame unwinder.  */
 
 extern const struct frame_base *
-  dwarf2_frame_base_sniffer (frame_info_ptr this_frame);
+  dwarf2_frame_base_sniffer (frame_info *this_frame);
 
 /* Compute the DWARF CFA for a frame.  */
 
-CORE_ADDR dwarf2_frame_cfa (frame_info_ptr this_frame);
+CORE_ADDR dwarf2_frame_cfa (frame_info *this_frame);
 
 /* Find the CFA information for PC.
 
diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c
index 8355aa44333c..a97fa5888e3b 100644
--- a/gdb/dwarf2/loc.c
+++ b/gdb/dwarf2/loc.c
@@ -1126,7 +1126,7 @@ call_site_parameter_matches (struct call_site_parameter *parameter,
 /* See loc.h.  */
 
 struct call_site_parameter *
-dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
+dwarf_expr_reg_to_entry_parameter (frame_info *frame,
 				   enum call_site_parameter_kind kind,
 				   union call_site_parameter_u kind_u,
 				   dwarf2_per_cu_data **per_cu_return,
@@ -1143,7 +1143,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
 
   while (get_frame_type (frame) == INLINE_FRAME)
     {
-      frame = get_prev_frame (frame);
+      frame = get_prev_frame (frame).get ();
       gdb_assert (frame != NULL);
     }
 
@@ -1339,7 +1339,7 @@ value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame,
   dwarf2_per_cu_data *caller_per_cu;
   dwarf2_per_objfile *caller_per_objfile;
 
-  parameter = dwarf_expr_reg_to_entry_parameter (frame, kind, kind_u,
+  parameter = dwarf_expr_reg_to_entry_parameter (frame.get (), kind, kind_u,
 						 &caller_per_cu,
 						 &caller_per_objfile);
 
@@ -1510,7 +1510,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame,
 
   try
     {
-      retval = ctx.evaluate (data, size, as_lval, per_cu, frame, nullptr,
+      retval = ctx.evaluate (data, size, as_lval, per_cu, frame.get (), nullptr,
 			     type, subobj_type, subobj_byte_offset);
     }
   catch (const gdb_exception_error &ex)
@@ -1595,7 +1595,7 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
   try
     {
       result = ctx.evaluate (dlbaton->data, dlbaton->size,
-			     true, per_cu, frame, addr_stack);
+			     true, per_cu, frame.get (), addr_stack);
     }
   catch (const gdb_exception_error &ex)
     {
diff --git a/gdb/dwarf2/loc.h b/gdb/dwarf2/loc.h
index 9156e1ee5333..b599402471d7 100644
--- a/gdb/dwarf2/loc.h
+++ b/gdb/dwarf2/loc.h
@@ -65,7 +65,7 @@ value *compute_var_value (const char *name);
    otherwise.  */
 
 struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
-  (frame_info_ptr frame, enum call_site_parameter_kind kind,
+  (frame_info *frame, enum call_site_parameter_kind kind,
    union call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return,
    dwarf2_per_objfile **per_objfile_return);
 
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 91de3fd5c3eb..d4a1910c2aeb 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -257,7 +257,7 @@ copy_integer_to_size (gdb_byte *dest, int dest_size, const gdb_byte *source,
    determined by register_type ().  */
 
 struct value *
-value_of_register (int regnum, frame_info_ptr frame)
+value_of_register (int regnum, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   struct value *reg_val;
@@ -277,17 +277,16 @@ value_of_register (int regnum, frame_info_ptr frame)
    determined by register_type ().  The value is not fetched.  */
 
 struct value *
-value_of_register_lazy (frame_info_ptr frame, int regnum)
+value_of_register_lazy (frame_info *frame, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   struct value *reg_val;
-  frame_info_ptr next_frame;
 
   gdb_assert (regnum < gdbarch_num_cooked_regs (gdbarch));
 
   gdb_assert (frame != NULL);
 
-  next_frame = get_next_frame_sentinel_okay (frame);
+  frame_info *next_frame = get_next_frame_sentinel_okay_raw (frame);
 
   /* In some cases NEXT_FRAME may not have a valid frame-id yet.  This can
      happen if we end up trying to unwind a register as part of the frame
@@ -295,7 +294,7 @@ value_of_register_lazy (frame_info_ptr frame, int regnum)
      if NEXT_FRAME is an inline frame.  If this is the case then we can
      avoid getting into trouble here by skipping past the inline frames.  */
   while (get_frame_type (next_frame) == INLINE_FRAME)
-    next_frame = get_next_frame_sentinel_okay (next_frame);
+    next_frame = get_next_frame_sentinel_okay_raw (next_frame);
 
   /* We should have a valid next frame.  */
   gdb_assert (frame_id_p (get_frame_id (next_frame)));
@@ -832,7 +831,7 @@ default_value_from_register (struct gdbarch *gdbarch, struct type *type,
    complete resulting value as optimized out.  */
 
 void
-read_frame_register_value (struct value *value, frame_info_ptr frame)
+read_frame_register_value (struct value *value, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   LONGEST offset = 0;
@@ -872,7 +871,7 @@ read_frame_register_value (struct value *value, frame_info_ptr frame)
 /* Return a value of type TYPE, stored in register REGNUM, in frame FRAME.  */
 
 struct value *
-value_from_register (struct type *type, int regnum, frame_info_ptr frame)
+value_from_register (struct type *type, int regnum, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   struct type *type1 = check_typedef (type);
@@ -922,7 +921,7 @@ value_from_register (struct type *type, int regnum, frame_info_ptr frame)
    Will abort if register value is not available.  */
 
 CORE_ADDR
-address_from_register (int regnum, frame_info_ptr frame)
+address_from_register (int regnum, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   struct type *type = builtin_type (gdbarch)->builtin_data_ptr;
diff --git a/gdb/frame-base.c b/gdb/frame-base.c
index fb577df5143f..7167e448a431 100644
--- a/gdb/frame-base.c
+++ b/gdb/frame-base.c
@@ -29,19 +29,19 @@
    really need to override this.  */
 
 static CORE_ADDR
-default_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+default_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   return get_frame_base (this_frame); /* sigh! */
 }
 
 static CORE_ADDR
-default_frame_locals_address (frame_info_ptr this_frame, void **this_cache)
+default_frame_locals_address (frame_info *this_frame, void **this_cache)
 {
   return default_frame_base_address (this_frame, this_cache);
 }
 
 static CORE_ADDR
-default_frame_args_address (frame_info_ptr this_frame, void **this_cache)
+default_frame_args_address (frame_info *this_frame, void **this_cache)
 {
   return default_frame_base_address (this_frame, this_cache);
 }
@@ -99,7 +99,7 @@ frame_base_set_default (struct gdbarch *gdbarch,
 }
 
 const struct frame_base *
-frame_base_find_by_frame (frame_info_ptr this_frame)
+frame_base_find_by_frame (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct frame_base_table *table = get_frame_base_table (gdbarch);
diff --git a/gdb/frame-base.h b/gdb/frame-base.h
index 334a2e2c7504..dde61f21e3da 100644
--- a/gdb/frame-base.h
+++ b/gdb/frame-base.h
@@ -20,7 +20,7 @@
 #if !defined (FRAME_BASE_H)
 #define FRAME_BASE_H 1
 
-class frame_info_ptr;
+struct frame_info;
 struct frame_id;
 struct frame_unwind;
 struct frame_base;
@@ -42,17 +42,17 @@ struct regcache;
 
 /* A generic base address.  */
 
-typedef CORE_ADDR (frame_this_base_ftype) (frame_info_ptr this_frame,
+typedef CORE_ADDR (frame_this_base_ftype) (frame_info *this_frame,
 					   void **this_base_cache);
 
 /* The base address of the frame's local variables.  */
 
-typedef CORE_ADDR (frame_this_locals_ftype) (frame_info_ptr this_frame,
+typedef CORE_ADDR (frame_this_locals_ftype) (frame_info *this_frame,
 					     void **this_base_cache);
 
 /* The base address of the frame's arguments / parameters.  */
 
-typedef CORE_ADDR (frame_this_args_ftype) (frame_info_ptr this_frame,
+typedef CORE_ADDR (frame_this_args_ftype) (frame_info *this_frame,
 					   void **this_base_cache);
 
 struct frame_base
@@ -68,7 +68,8 @@ struct frame_base
 /* Given THIS frame, return the frame base methods for THIS frame,
    or NULL if it can't handle THIS frame.  */
 
-typedef const struct frame_base *(frame_base_sniffer_ftype) (frame_info_ptr this_frame);
+typedef const struct frame_base *(frame_base_sniffer_ftype)
+  (frame_info *this_frame);
 
 /* Append a frame base sniffer to the list.  The sniffers are polled
    in the order that they are appended.  */
@@ -86,6 +87,7 @@ extern void frame_base_set_default (struct gdbarch *gdbarch,
 /* Iterate through the list of frame base handlers until one returns
    an implementation.  */
 
-extern const struct frame_base *frame_base_find_by_frame (frame_info_ptr this_frame);
+extern const struct frame_base *frame_base_find_by_frame
+  (frame_info *this_frame);
 
 #endif
diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c
index e535d41225c6..f52e9e40352d 100644
--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -121,7 +121,7 @@ frame_unwind_append_unwinder (struct gdbarch *gdbarch,
    unchanged and returns 0.  */
 
 static int
-frame_unwind_try_unwinder (frame_info_ptr this_frame, void **this_cache,
+frame_unwind_try_unwinder (frame_info *this_frame, void **this_cache,
 			  const struct frame_unwind *unwinder)
 {
   int res = 0;
@@ -181,7 +181,7 @@ frame_unwind_try_unwinder (frame_info_ptr this_frame, void **this_cache,
    by this function.  Possibly initialize THIS_CACHE.  */
 
 void
-frame_unwind_find_by_frame (frame_info_ptr this_frame, void **this_cache)
+frame_unwind_find_by_frame (frame_info *this_frame, void **this_cache)
 {
   FRAME_SCOPED_DEBUG_ENTER_EXIT;
   frame_debug_printf ("this_frame=%d", frame_relative_level (this_frame));
@@ -215,7 +215,7 @@ frame_unwind_find_by_frame (frame_info_ptr this_frame, void **this_cache)
 
 int
 default_frame_sniffer (const struct frame_unwind *self,
-		       frame_info_ptr this_frame,
+		       frame_info *this_frame,
 		       void **this_prologue_cache)
 {
   return 1;
@@ -224,7 +224,7 @@ default_frame_sniffer (const struct frame_unwind *self,
 /* The default frame unwinder stop_reason callback.  */
 
 enum unwind_stop_reason
-default_frame_unwind_stop_reason (frame_info_ptr this_frame,
+default_frame_unwind_stop_reason (frame_info *this_frame,
 				  void **this_cache)
 {
   struct frame_id this_id = get_frame_id (this_frame);
@@ -238,7 +238,7 @@ default_frame_unwind_stop_reason (frame_info_ptr this_frame,
 /* See frame-unwind.h.  */
 
 CORE_ADDR
-default_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+default_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   int pc_regnum = gdbarch_pc_regnum (gdbarch);
   CORE_ADDR pc = frame_unwind_register_unsigned (next_frame, pc_regnum);
@@ -249,7 +249,7 @@ default_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* See frame-unwind.h.  */
 
 CORE_ADDR
-default_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+default_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   int sp_regnum = gdbarch_sp_regnum (gdbarch);
   return frame_unwind_register_unsigned (next_frame, sp_regnum);
@@ -261,7 +261,7 @@ default_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Return a value which indicates that FRAME did not save REGNUM.  */
 
 struct value *
-frame_unwind_got_optimized (frame_info_ptr frame, int regnum)
+frame_unwind_got_optimized (frame_info *frame, int regnum)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct type *type = register_type (gdbarch, regnum);
@@ -273,7 +273,7 @@ frame_unwind_got_optimized (frame_info_ptr frame, int regnum)
    register NEW_REGNUM.  */
 
 struct value *
-frame_unwind_got_register (frame_info_ptr frame,
+frame_unwind_got_register (frame_info *frame,
 			   int regnum, int new_regnum)
 {
   return value_of_register_lazy (frame, new_regnum);
@@ -283,7 +283,7 @@ frame_unwind_got_register (frame_info_ptr frame,
    ADDR.  */
 
 struct value *
-frame_unwind_got_memory (frame_info_ptr frame, int regnum, CORE_ADDR addr)
+frame_unwind_got_memory (frame_info *frame, int regnum, CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct value *v = value_at_lazy (register_type (gdbarch, regnum), addr);
@@ -296,7 +296,7 @@ frame_unwind_got_memory (frame_info_ptr frame, int regnum, CORE_ADDR addr)
    REGNUM has a known constant (computed) value of VAL.  */
 
 struct value *
-frame_unwind_got_constant (frame_info_ptr frame, int regnum,
+frame_unwind_got_constant (frame_info *frame, int regnum,
 			   ULONGEST val)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
@@ -310,7 +310,7 @@ frame_unwind_got_constant (frame_info_ptr frame, int regnum,
 }
 
 struct value *
-frame_unwind_got_bytes (frame_info_ptr frame, int regnum, const gdb_byte *buf)
+frame_unwind_got_bytes (frame_info *frame, int regnum, const gdb_byte *buf)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct value *reg_val;
@@ -326,7 +326,7 @@ frame_unwind_got_bytes (frame_info_ptr frame, int regnum, const gdb_byte *buf)
    CORE_ADDR to a target address if necessary.  */
 
 struct value *
-frame_unwind_got_address (frame_info_ptr frame, int regnum,
+frame_unwind_got_address (frame_info *frame, int regnum,
 			  CORE_ADDR addr)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (frame);
diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h
index 84c90fdd143b..fac4a8063222 100644
--- a/gdb/frame-unwind.h
+++ b/gdb/frame-unwind.h
@@ -50,37 +50,37 @@ struct value;
    to set *THIS_PROLOGUE_CACHE to NULL.  */
 
 typedef int (frame_sniffer_ftype) (const struct frame_unwind *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   void **this_prologue_cache);
 
 typedef enum unwind_stop_reason (frame_unwind_stop_reason_ftype)
-  (frame_info_ptr this_frame, void **this_prologue_cache);
+  (frame_info *this_frame, void **this_prologue_cache);
 
 /* A default frame sniffer which always accepts the frame.  Used by
    fallback prologue unwinders.  */
 
 int default_frame_sniffer (const struct frame_unwind *self,
-			   frame_info_ptr this_frame,
+			   frame_info *this_frame,
 			   void **this_prologue_cache);
 
 /* A default stop_reason callback which always claims the frame is
    unwindable.  */
 
 enum unwind_stop_reason
-  default_frame_unwind_stop_reason (frame_info_ptr this_frame,
+  default_frame_unwind_stop_reason (frame_info *this_frame,
 				    void **this_cache);
 
 /* A default unwind_pc callback that simply unwinds the register identified
    by GDBARCH_PC_REGNUM.  */
 
 extern CORE_ADDR default_unwind_pc (struct gdbarch *gdbarch,
-				    frame_info_ptr next_frame);
+				    frame_info *next_frame);
 
 /* A default unwind_sp callback that simply unwinds the register identified
    by GDBARCH_SP_REGNUM.  */
 
 extern CORE_ADDR default_unwind_sp (struct gdbarch *gdbarch,
-				    frame_info_ptr next_frame);
+				    frame_info *next_frame);
 
 /* Assuming the frame chain: (outer) prev <-> this <-> next (inner);
    use THIS frame, and through it the NEXT frame's register unwind
@@ -105,7 +105,7 @@ extern CORE_ADDR default_unwind_sp (struct gdbarch *gdbarch,
    with the other unwind methods.  Memory for that cache should be
    allocated using FRAME_OBSTACK_ZALLOC().  */
 
-typedef void (frame_this_id_ftype) (frame_info_ptr this_frame,
+typedef void (frame_this_id_ftype) (frame_info *this_frame,
 				    void **this_prologue_cache,
 				    struct frame_id *this_id);
 
@@ -141,7 +141,7 @@ typedef void (frame_this_id_ftype) (frame_info_ptr this_frame,
    allocated using FRAME_OBSTACK_ZALLOC().  */
 
 typedef struct value * (frame_prev_register_ftype)
-  (frame_info_ptr this_frame, void **this_prologue_cache,
+  (frame_info *this_frame, void **this_prologue_cache,
    int regnum);
 
 /* Deallocate extra memory associated with the frame cache if any.  */
@@ -153,7 +153,7 @@ typedef void (frame_dealloc_cache_ftype) (frame_info *self,
    use THIS frame, and implicitly the NEXT frame's register unwind
    method, return PREV frame's architecture.  */
 
-typedef struct gdbarch *(frame_prev_arch_ftype) (frame_info_ptr this_frame,
+typedef struct gdbarch *(frame_prev_arch_ftype) (frame_info *this_frame,
 						 void **this_prologue_cache);
 
 struct frame_unwind
@@ -193,7 +193,7 @@ extern void frame_unwind_append_unwinder (struct gdbarch *gdbarch,
    unwinder implementation.  THIS_FRAME->UNWIND must be NULL, it will get set
    by this function.  Possibly initialize THIS_CACHE.  */
 
-extern void frame_unwind_find_by_frame (frame_info_ptr this_frame,
+extern void frame_unwind_find_by_frame (frame_info *this_frame,
 					void **this_cache);
 
 /* Helper functions for value-based register unwinding.  These return
@@ -201,39 +201,39 @@ extern void frame_unwind_find_by_frame (frame_info_ptr this_frame,
 
 /* Return a value which indicates that FRAME did not save REGNUM.  */
 
-struct value *frame_unwind_got_optimized (frame_info_ptr frame,
+struct value *frame_unwind_got_optimized (frame_info *frame,
 					  int regnum);
 
 /* Return a value which indicates that FRAME copied REGNUM into
    register NEW_REGNUM.  */
 
-struct value *frame_unwind_got_register (frame_info_ptr frame, int regnum,
+struct value *frame_unwind_got_register (frame_info *frame, int regnum,
 					 int new_regnum);
 
 /* Return a value which indicates that FRAME saved REGNUM in memory at
    ADDR.  */
 
-struct value *frame_unwind_got_memory (frame_info_ptr frame, int regnum,
+struct value *frame_unwind_got_memory (frame_info *frame, int regnum,
 				       CORE_ADDR addr);
 
 /* Return a value which indicates that FRAME's saved version of
    REGNUM has a known constant (computed) value of VAL.  */
 
-struct value *frame_unwind_got_constant (frame_info_ptr frame, int regnum,
+struct value *frame_unwind_got_constant (frame_info *frame, int regnum,
 					 ULONGEST val);
 
 /* Return a value which indicates that FRAME's saved version of
    REGNUM has a known constant (computed) value which is stored
    inside BUF.  */
 
-struct value *frame_unwind_got_bytes (frame_info_ptr frame, int regnum,
+struct value *frame_unwind_got_bytes (frame_info *frame, int regnum,
 				      const gdb_byte *buf);
 
 /* Return a value which indicates that FRAME's saved version of REGNUM
    has a known constant (computed) value of ADDR.  Convert the
    CORE_ADDR to a target address if necessary.  */
 
-struct value *frame_unwind_got_address (frame_info_ptr frame, int regnum,
+struct value *frame_unwind_got_address (frame_info *frame, int regnum,
 					CORE_ADDR addr);
 
 #endif
diff --git a/gdb/frame.c b/gdb/frame.c
index e6e58a76668f..e8bfd5c2ec1a 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -68,7 +68,7 @@ get_frame_cache_generation ()
 /* The values behind the global "set backtrace ..." settings.  */
 set_backtrace_options user_set_backtrace_options;
 
-static frame_info_ptr get_prev_frame_raw (frame_info_ptr this_frame);
+static frame_info *get_prev_frame_raw (frame_info *this_frame);
 static const char *frame_stop_reason_symbol_string (enum unwind_stop_reason reason);
 
 /* Status of some values cached in the frame_info object.  */
@@ -197,7 +197,7 @@ struct frame_info
 /* See frame.h.  */
 
 void
-set_frame_previous_pc_masked (frame_info_ptr frame)
+set_frame_previous_pc_masked (frame_info *frame)
 {
   frame->prev_pc.masked = true;
 }
@@ -562,7 +562,7 @@ skip_tailcall_frames (frame_info_ptr frame)
    frame.  */
 
 static void
-compute_frame_id (frame_info_ptr fi)
+compute_frame_id (frame_info *fi)
 {
   FRAME_SCOPED_DEBUG_ENTER_EXIT;
 
@@ -608,7 +608,7 @@ compute_frame_id (frame_info_ptr fi)
    frame.  */
 
 struct frame_id
-get_frame_id (frame_info_ptr fi)
+get_frame_id (frame_info *fi)
 {
   if (fi == NULL)
     return null_frame_id;
@@ -631,7 +631,7 @@ get_frame_id (frame_info_ptr fi)
 
       /* Since this is the first frame in the chain, this should
 	 always succeed.  */
-      bool stashed = frame_stash_add (fi.get ());
+      bool stashed = frame_stash_add (fi);
       gdb_assert (stashed);
     }
 
@@ -921,7 +921,7 @@ frame_find_by_id (struct frame_id id)
 }
 
 static CORE_ADDR
-frame_unwind_pc (frame_info_ptr this_frame)
+frame_unwind_pc (frame_info *this_frame)
 {
   if (this_frame->prev_pc.status == CC_UNKNOWN)
     {
@@ -1004,11 +1004,11 @@ frame_unwind_caller_pc (frame_info_ptr this_frame)
      in this case.  */
   gdb_assert (this_frame != NULL);
 
-  return frame_unwind_pc (this_frame);
+  return frame_unwind_pc (this_frame.get ());
 }
 
 bool
-get_frame_func_if_available (frame_info_ptr this_frame, CORE_ADDR *pc)
+get_frame_func_if_available (frame_info *this_frame, CORE_ADDR *pc)
 {
   frame_info *next_frame = this_frame->next;
 
@@ -1051,7 +1051,7 @@ get_frame_func_if_available (frame_info_ptr this_frame, CORE_ADDR *pc)
 }
 
 CORE_ADDR
-get_frame_func (frame_info_ptr this_frame)
+get_frame_func (frame_info *this_frame)
 {
   CORE_ADDR pc;
 
@@ -1066,7 +1066,7 @@ frame_save_as_regcache (frame_info_ptr this_frame)
 {
   auto cooked_read = [this_frame] (int regnum, gdb_byte *buf)
     {
-      if (!deprecated_frame_register_read (this_frame, regnum, buf))
+      if (!deprecated_frame_register_read (this_frame.get (), regnum, buf))
 	return REG_UNAVAILABLE;
       else
 	return REG_VALID;
@@ -1128,7 +1128,7 @@ frame_pop (frame_info_ptr this_frame)
 }
 
 void
-frame_register_unwind (frame_info_ptr next_frame, int regnum,
+frame_register_unwind (frame_info *next_frame, int regnum,
 		       int *optimizedp, int *unavailablep,
 		       enum lval_type *lvalp, CORE_ADDR *addrp,
 		       int *realnump, gdb_byte *bufferp)
@@ -1176,7 +1176,7 @@ frame_register_unwind (frame_info_ptr next_frame, int regnum,
    VALUEP is NULL, the registers value is not fetched/computed.  */
 
 static void
-frame_register (frame_info_ptr frame, int regnum,
+frame_register (frame_info *frame, int regnum,
 		int *optimizedp, int *unavailablep, enum lval_type *lvalp,
 		CORE_ADDR *addrp, int *realnump, gdb_byte *bufferp)
 {
@@ -1191,12 +1191,12 @@ frame_register (frame_info_ptr frame, int regnum,
   /* Obtain the register value by unwinding the register from the next
      (more inner frame).  */
   gdb_assert (frame != NULL && frame->next != NULL);
-  frame_register_unwind (frame_info_ptr (frame->next), regnum, optimizedp,
+  frame_register_unwind (frame->next, regnum, optimizedp,
 			 unavailablep, lvalp, addrp, realnump, bufferp);
 }
 
 void
-frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
+frame_unwind_register (frame_info *next_frame, int regnum, gdb_byte *buf)
 {
   int optimized;
   int unavailable;
@@ -1216,14 +1216,13 @@ frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
 }
 
 void
-get_frame_register (frame_info_ptr frame,
-		    int regnum, gdb_byte *buf)
+get_frame_register (frame_info *frame, int regnum, gdb_byte *buf)
 {
-  frame_unwind_register (frame_info_ptr (frame->next), regnum, buf);
+  frame_unwind_register (frame->next, regnum, buf);
 }
 
 struct value *
-frame_unwind_register_value (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_value (frame_info *next_frame, int regnum)
 {
   FRAME_SCOPED_DEBUG_ENTER_EXIT;
 
@@ -1286,13 +1285,13 @@ frame_unwind_register_value (frame_info_ptr next_frame, int regnum)
 }
 
 struct value *
-get_frame_register_value (frame_info_ptr frame, int regnum)
+get_frame_register_value (frame_info *frame, int regnum)
 {
-  return frame_unwind_register_value (frame_info_ptr (frame->next), regnum);
+  return frame_unwind_register_value (frame->next, regnum);
 }
 
 LONGEST
-frame_unwind_register_signed (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_signed (frame_info *next_frame, int regnum)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1318,13 +1317,13 @@ frame_unwind_register_signed (frame_info_ptr next_frame, int regnum)
 }
 
 LONGEST
-get_frame_register_signed (frame_info_ptr frame, int regnum)
+get_frame_register_signed (frame_info *frame, int regnum)
 {
-  return frame_unwind_register_signed (frame_info_ptr (frame->next), regnum);
+  return frame_unwind_register_signed (frame->next, regnum);
 }
 
 ULONGEST
-frame_unwind_register_unsigned (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_unsigned (frame_info *next_frame, int regnum)
 {
   struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1352,9 +1351,9 @@ frame_unwind_register_unsigned (frame_info_ptr next_frame, int regnum)
 }
 
 ULONGEST
-get_frame_register_unsigned (frame_info_ptr frame, int regnum)
+get_frame_register_unsigned (frame_info *frame, int regnum)
 {
-  return frame_unwind_register_unsigned (frame_info_ptr (frame->next), regnum);
+  return frame_unwind_register_unsigned (frame->next, regnum);
 }
 
 bool
@@ -1389,7 +1388,7 @@ put_frame_register (frame_info_ptr frame, int regnum,
   enum lval_type lval;
   CORE_ADDR addr;
 
-  frame_register (frame, regnum, &optim, &unavail,
+  frame_register (frame.get (), regnum, &optim, &unavail,
 		  &lval, &addr, &realnum, NULL);
   if (optim)
     error (_("Attempt to assign to a register that was not saved."));
@@ -1417,7 +1416,7 @@ put_frame_register (frame_info_ptr frame, int regnum,
    Returns 0 if the register value could not be found.  */
 
 bool
-deprecated_frame_register_read (frame_info_ptr frame, int regnum,
+deprecated_frame_register_read (frame_info *frame, int regnum,
 				gdb_byte *myaddr)
 {
   int optimized;
@@ -1433,7 +1432,7 @@ deprecated_frame_register_read (frame_info_ptr frame, int regnum,
 }
 
 bool
-get_frame_register_bytes (frame_info_ptr frame, int regnum,
+get_frame_register_bytes (frame_info *frame, int regnum,
 			  CORE_ADDR offset,
 			  gdb::array_view<gdb_byte> buffer,
 			  int *optimizedp, int *unavailablep)
@@ -1492,8 +1491,7 @@ get_frame_register_bytes (frame_info_ptr frame, int regnum,
       else
 	{
 	  struct value *value
-	    = frame_unwind_register_value (frame_info_ptr (frame->next),
-					   regnum);
+	    = frame_unwind_register_value (frame->next, regnum);
 	  gdb_assert (value != NULL);
 	  *optimizedp = value_optimized_out (value);
 	  *unavailablep = !value_entirely_available (value);
@@ -1552,8 +1550,7 @@ put_frame_register_bytes (frame_info_ptr frame, int regnum,
       else
 	{
 	  struct value *value
-	    = frame_unwind_register_value (frame_info_ptr (frame->next),
-					   regnum);
+	    = frame_unwind_register_value (frame->next, regnum);
 	  gdb_assert (value != NULL);
 
 	  memcpy ((char *) value_contents_writeable (value).data () + offset,
@@ -1613,13 +1610,11 @@ frame_obstack_zalloc (unsigned long size)
   return data;
 }
 
-static frame_info_ptr get_prev_frame_always_1 (frame_info_ptr this_frame);
+static frame_info *get_prev_frame_always_1 (frame_info *this_frame);
 
 frame_info_ptr
 get_current_frame (void)
 {
-  frame_info_ptr current_frame;
-
   /* First check, and report, the lack of registers.  Having GDB
      report "No stack!" or "No memory" when the target doesn't even
      have registers is very confusing.  Besides, "printcmd.exp"
@@ -1650,10 +1645,10 @@ get_current_frame (void)
      want to leave with the current frame created and linked in --
      we should never end up with the sentinel frame as outermost
      frame.  */
-  current_frame = get_prev_frame_always_1 (frame_info_ptr (sentinel_frame));
+  frame_info *current_frame = get_prev_frame_always_1 (sentinel_frame);
   gdb_assert (current_frame != NULL);
 
-  return current_frame;
+  return frame_info_ptr (current_frame);
 }
 
 /* The "selected" stack frame is used by default for local and arg
@@ -1968,7 +1963,7 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
 
   /* Select/initialize both the unwind function and the frame's type
      based on the PC.  */
-  frame_unwind_find_by_frame (frame_info_ptr (fi), &fi->prologue_cache);
+  frame_unwind_find_by_frame (fi, &fi->prologue_cache);
 
   fi->this_id.p = frame_id_status::COMPUTED;
   fi->this_id.value = frame_id_build (addr, pc);
@@ -1978,15 +1973,13 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
   return frame_info_ptr (fi);
 }
 
-/* Return the frame that THIS_FRAME calls (NULL if THIS_FRAME is the
-   innermost frame).  Be careful to not fall off the bottom of the
-   frame chain and onto the sentinel frame.  */
+/* See frame.h.  */
 
-frame_info_ptr
-get_next_frame (frame_info_ptr this_frame)
+frame_info *
+get_next_frame (frame_info *this_frame)
 {
   if (this_frame->level > 0)
-    return frame_info_ptr (this_frame->next);
+    return this_frame->next;
   else
     return NULL;
 }
@@ -1995,8 +1988,8 @@ get_next_frame (frame_info_ptr this_frame)
    innermost (i.e. current) frame, return the sentinel frame.  Thus,
    unlike get_next_frame(), NULL will never be returned.  */
 
-frame_info_ptr
-get_next_frame_sentinel_okay (frame_info_ptr this_frame)
+frame_info *
+get_next_frame_sentinel_okay_raw (frame_info *this_frame)
 {
   gdb_assert (this_frame != NULL);
 
@@ -2007,7 +2000,7 @@ get_next_frame_sentinel_okay (frame_info_ptr this_frame)
      is likely a coding error.  */
   gdb_assert (this_frame != sentinel_frame);
 
-  return frame_info_ptr (this_frame->next);
+  return this_frame->next;
 }
 
 /* Observer for the target_changed event.  */
@@ -2056,7 +2049,7 @@ reinit_frame_cache (void)
    relative to this particular frame.  */
 
 static void
-frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
+frame_register_unwind_location (frame_info *this_frame, int regnum,
 				int *optimizedp, enum lval_type *lvalp,
 				CORE_ADDR *addrp, int *realnump)
 {
@@ -2099,10 +2092,10 @@ frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
    then the frame_id of the inline frame, calculated based off the frame_id
    of the previous frame, should also be a duplicate.  */
 
-static frame_info_ptr
-get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
+static frame_info *
+get_prev_frame_maybe_check_cycle (frame_info *this_frame)
 {
-  frame_info_ptr prev_frame = get_prev_frame_raw (this_frame);
+  frame_info *prev_frame = get_prev_frame_raw (this_frame);
 
   /* Don't compute the frame id of the current frame yet.  Unwinding
      the sentinel frame can fail (e.g., if the thread is gone and we
@@ -2156,7 +2149,7 @@ get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
 	 PREV_FRAME into the cache; if PREV_FRAME is unique then we do want
 	 it in the cache, but if it is a duplicate and CYCLE_DETECTION_P is
 	 false, then we don't want to unlink it.  */
-      if (!frame_stash_add (prev_frame.get ()) && cycle_detection_p)
+      if (!frame_stash_add (prev_frame) && cycle_detection_p)
 	{
 	  /* Another frame with the same id was already in the stash.  We just
 	     detected a cycle.  */
@@ -2187,8 +2180,8 @@ get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
    TRY_CATCH block.  Return the frame that called THIS_FRAME or NULL if
    there is no such frame.  This may throw an exception.  */
 
-static frame_info_ptr
-get_prev_frame_always_1 (frame_info_ptr this_frame)
+static frame_info *
+get_prev_frame_always_1 (frame_info *this_frame)
 {
   FRAME_SCOPED_DEBUG_ENTER_EXIT;
 
@@ -2214,7 +2207,7 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
 	frame_debug_printf
 	  ("  -> nullptr // %s // cached",
 	   frame_stop_reason_symbol_string (this_frame->stop_reason));
-      return frame_info_ptr (this_frame->prev);
+      return this_frame->prev;
     }
 
   /* If the frame unwinder hasn't been selected yet, we must do so
@@ -2272,9 +2265,9 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
      See the comment at frame_id_inner for details.  */
   if (get_frame_type (this_frame) == NORMAL_FRAME
       && this_frame->next->unwind->type == NORMAL_FRAME
-      && frame_id_inner (get_frame_arch (frame_info_ptr (this_frame->next)),
+      && frame_id_inner (get_frame_arch (this_frame->next),
 			 get_frame_id (this_frame),
-			 get_frame_id (frame_info_ptr (this_frame->next))))
+			 get_frame_id (this_frame->next)))
     {
       CORE_ADDR this_pc_in_block;
       struct minimal_symbol *morestack_msym;
@@ -2310,8 +2303,8 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
   if (this_frame->level > 0
       && gdbarch_pc_regnum (gdbarch) >= 0
       && get_frame_type (this_frame) == NORMAL_FRAME
-      && (get_frame_type (frame_info_ptr (this_frame->next)) == NORMAL_FRAME
-	  || get_frame_type (frame_info_ptr (this_frame->next)) == INLINE_FRAME))
+      && (get_frame_type (this_frame->next) == NORMAL_FRAME
+	  || get_frame_type (this_frame->next) == INLINE_FRAME))
     {
       int optimized, realnum, nrealnum;
       enum lval_type lval, nlval;
@@ -2343,10 +2336,10 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
    Unlike get_prev_frame, this function always tries to unwind the
    frame.  */
 
-frame_info_ptr
-get_prev_frame_always (frame_info_ptr this_frame)
+frame_info *
+get_prev_frame_always_raw (frame_info *this_frame)
 {
-  frame_info_ptr prev_frame = NULL;
+  frame_info *prev_frame = nullptr;
 
   try
     {
@@ -2383,8 +2376,8 @@ get_prev_frame_always (frame_info_ptr this_frame)
 /* Construct a new "struct frame_info" and link it previous to
    this_frame.  */
 
-static frame_info_ptr
-get_prev_frame_raw (frame_info_ptr this_frame)
+static frame_info *
+get_prev_frame_raw (frame_info *this_frame)
 {
   frame_info *prev_frame;
 
@@ -2427,17 +2420,17 @@ get_prev_frame_raw (frame_info_ptr this_frame)
 
   /* Link it in.  */
   this_frame->prev = prev_frame;
-  prev_frame->next = this_frame.get ();
+  prev_frame->next = this_frame;
 
   frame_debug_printf ("  -> %s", prev_frame->to_string ().c_str ());
 
-  return frame_info_ptr (prev_frame);
+  return prev_frame;
 }
 
 /* Debug routine to print a NULL frame being returned.  */
 
 static void
-frame_debug_got_null_frame (frame_info_ptr this_frame,
+frame_debug_got_null_frame (frame_info *this_frame,
 			    const char *reason)
 {
   if (frame_debug)
@@ -2452,7 +2445,7 @@ frame_debug_got_null_frame (frame_info_ptr this_frame,
 /* Is this (non-sentinel) frame in the "main"() function?  */
 
 static bool
-inside_main_func (frame_info_ptr this_frame)
+inside_main_func (frame_info *this_frame)
 {
   if (current_program_space->symfile_object_file == nullptr)
     return false;
@@ -2489,7 +2482,7 @@ inside_main_func (frame_info_ptr this_frame)
 /* Test whether THIS_FRAME is inside the process entry point function.  */
 
 static bool
-inside_entry_func (frame_info_ptr this_frame)
+inside_entry_func (frame_info *this_frame)
 {
   CORE_ADDR entry_point;
 
@@ -2509,7 +2502,7 @@ inside_entry_func (frame_info_ptr this_frame)
    checking whether the program-counter is zero.  */
 
 frame_info_ptr
-get_prev_frame (frame_info_ptr this_frame)
+get_prev_frame (frame_info *this_frame)
 {
   FRAME_SCOPED_DEBUG_ENTER_EXIT;
 
@@ -2607,21 +2600,21 @@ get_prev_frame (frame_info_ptr this_frame)
 }
 
 CORE_ADDR
-get_frame_pc (frame_info_ptr frame)
+get_frame_pc (frame_info *frame)
 {
   gdb_assert (frame->next != NULL);
-  return frame_unwind_pc (frame_info_ptr (frame->next));
+  return frame_unwind_pc (frame->next);
 }
 
 bool
-get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc)
+get_frame_pc_if_available (frame_info *frame, CORE_ADDR *pc)
 {
 
   gdb_assert (frame->next != NULL);
 
   try
     {
-      *pc = frame_unwind_pc (frame_info_ptr (frame->next));
+      *pc = frame_unwind_pc (frame->next);
     }
   catch (const gdb_exception_error &ex)
     {
@@ -2637,12 +2630,12 @@ get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc)
 /* Return an address that falls within THIS_FRAME's code block.  */
 
 CORE_ADDR
-get_frame_address_in_block (frame_info_ptr this_frame)
+get_frame_address_in_block (frame_info *this_frame)
 {
   /* A draft address.  */
   CORE_ADDR pc = get_frame_pc (this_frame);
 
-  frame_info_ptr next_frame (this_frame->next);
+  frame_info *next_frame = this_frame->next;
 
   /* Calling get_frame_pc returns the resume address for THIS_FRAME.
      Normally the resume address is inside the body of the function
@@ -2684,7 +2677,7 @@ get_frame_address_in_block (frame_info_ptr this_frame)
      "calling" normal function should not be adjusted either.  */
 
   while (get_frame_type (next_frame) == INLINE_FRAME)
-    next_frame = frame_info_ptr (next_frame->next);
+    next_frame = next_frame->next;
 
   if ((get_frame_type (next_frame) == NORMAL_FRAME
        || get_frame_type (next_frame) == TAILCALL_FRAME)
@@ -2697,7 +2690,7 @@ get_frame_address_in_block (frame_info_ptr this_frame)
 }
 
 bool
-get_frame_address_in_block_if_available (frame_info_ptr this_frame,
+get_frame_address_in_block_if_available (frame_info *this_frame,
 					 CORE_ADDR *pc)
 {
 
@@ -2722,7 +2715,7 @@ find_frame_sal (frame_info_ptr frame)
   int notcurrent;
   CORE_ADDR pc;
 
-  if (frame_inlined_callees (frame) > 0)
+  if (frame_inlined_callees (frame.get ()) > 0)
     {
       struct symbol *sym;
 
@@ -2774,7 +2767,7 @@ find_frame_sal (frame_info_ptr frame)
 /* Per "frame.h", return the ``address'' of the frame.  Code should
    really be using get_frame_id().  */
 CORE_ADDR
-get_frame_base (frame_info_ptr fi)
+get_frame_base (frame_info *fi)
 {
   return get_frame_id (fi).stack_addr;
 }
@@ -2782,7 +2775,7 @@ get_frame_base (frame_info_ptr fi)
 /* High-level offsets into the frame.  Used by the debug info.  */
 
 CORE_ADDR
-get_frame_base_address (frame_info_ptr fi)
+get_frame_base_address (frame_info *fi)
 {
   if (get_frame_type (fi) != NORMAL_FRAME)
     return 0;
@@ -2802,12 +2795,12 @@ get_frame_locals_address (frame_info_ptr fi)
     return 0;
   /* If there isn't a frame address method, find it.  */
   if (fi->base == NULL)
-    fi->base = frame_base_find_by_frame (fi);
+    fi->base = frame_base_find_by_frame (fi.get ());
   /* Sneaky: If the low-level unwind and high-level base code share a
      common unwinder, let them share the prologue cache.  */
   if (fi->base->unwind == fi->unwind)
-    return fi->base->this_locals (fi, &fi->prologue_cache);
-  return fi->base->this_locals (fi, &fi->base_cache);
+    return fi->base->this_locals (fi.get (), &fi->prologue_cache);
+  return fi->base->this_locals (fi.get (), &fi->base_cache);
 }
 
 CORE_ADDR
@@ -2817,19 +2810,19 @@ get_frame_args_address (frame_info_ptr fi)
     return 0;
   /* If there isn't a frame address method, find it.  */
   if (fi->base == NULL)
-    fi->base = frame_base_find_by_frame (fi);
+    fi->base = frame_base_find_by_frame (fi.get ());
   /* Sneaky: If the low-level unwind and high-level base code share a
      common unwinder, let them share the prologue cache.  */
   if (fi->base->unwind == fi->unwind)
-    return fi->base->this_args (fi, &fi->prologue_cache);
-  return fi->base->this_args (fi, &fi->base_cache);
+    return fi->base->this_args (fi.get (), &fi->prologue_cache);
+  return fi->base->this_args (fi.get (), &fi->base_cache);
 }
 
 /* Return true if the frame unwinder for frame FI is UNWINDER; false
    otherwise.  */
 
 bool
-frame_unwinder_is (frame_info_ptr fi, const frame_unwind *unwinder)
+frame_unwinder_is (frame_info *fi, const frame_unwind *unwinder)
 {
   if (fi->unwind == nullptr)
     frame_unwind_find_by_frame (fi, &fi->prologue_cache);
@@ -2841,7 +2834,7 @@ frame_unwinder_is (frame_info_ptr fi, const frame_unwind *unwinder)
    or -1 for a NULL frame.  */
 
 int
-frame_relative_level (frame_info_ptr fi)
+frame_relative_level (frame_info *fi)
 {
   if (fi == NULL)
     return -1;
@@ -2850,7 +2843,7 @@ frame_relative_level (frame_info_ptr fi)
 }
 
 enum frame_type
-get_frame_type (frame_info_ptr frame)
+get_frame_type (frame_info *frame)
 {
   if (frame->unwind == NULL)
     /* Initialize the frame's unwinder because that's what
@@ -2900,7 +2893,7 @@ get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
 }
 
 LONGEST
-get_frame_memory_signed (frame_info_ptr this_frame, CORE_ADDR addr,
+get_frame_memory_signed (frame_info *this_frame, CORE_ADDR addr,
 			 int len)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2910,7 +2903,7 @@ get_frame_memory_signed (frame_info_ptr this_frame, CORE_ADDR addr,
 }
 
 ULONGEST
-get_frame_memory_unsigned (frame_info_ptr this_frame, CORE_ADDR addr,
+get_frame_memory_unsigned (frame_info *this_frame, CORE_ADDR addr,
 			   int len)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2920,7 +2913,7 @@ get_frame_memory_unsigned (frame_info_ptr this_frame, CORE_ADDR addr,
 }
 
 bool
-safe_frame_unwind_memory (frame_info_ptr this_frame,
+safe_frame_unwind_memory (frame_info *this_frame,
 			  CORE_ADDR addr, gdb::array_view<gdb_byte> buffer)
 {
   /* NOTE: target_read_memory returns zero on success!  */
@@ -2930,13 +2923,13 @@ safe_frame_unwind_memory (frame_info_ptr this_frame,
 /* Architecture methods.  */
 
 struct gdbarch *
-get_frame_arch (frame_info_ptr this_frame)
+get_frame_arch (frame_info *this_frame)
 {
-  return frame_unwind_arch (frame_info_ptr (this_frame->next));
+  return frame_unwind_arch (this_frame->next);
 }
 
 struct gdbarch *
-frame_unwind_arch (frame_info_ptr next_frame)
+frame_unwind_arch (frame_info *next_frame)
 {
   if (!next_frame->prev_arch.p)
     {
@@ -3018,19 +3011,19 @@ get_frame_language (frame_info_ptr frame)
 /* Stack pointer methods.  */
 
 CORE_ADDR
-get_frame_sp (frame_info_ptr this_frame)
+get_frame_sp (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
 
   /* NOTE drow/2008-06-28: gdbarch_unwind_sp could be converted to
      operate on THIS_FRAME now.  */
-  return gdbarch_unwind_sp (gdbarch, frame_info_ptr (this_frame->next));
+  return gdbarch_unwind_sp (gdbarch, this_frame->next);
 }
 
 /* Return the reason why we can't unwind past FRAME.  */
 
 enum unwind_stop_reason
-get_frame_unwind_stop_reason (frame_info_ptr frame)
+get_frame_unwind_stop_reason (frame_info *frame)
 {
   /* Fill-in STOP_REASON.  */
   get_prev_frame_always (frame);
@@ -3092,7 +3085,7 @@ frame_stop_reason_symbol_string (enum unwind_stop_reason reason)
    FRAME.  */
 
 void
-frame_cleanup_after_sniffer (frame_info_ptr frame)
+frame_cleanup_after_sniffer (frame_info *frame)
 {
   /* The sniffer should not allocate a prologue cache if it did not
      match this frame.  */
@@ -3122,7 +3115,7 @@ frame_cleanup_after_sniffer (frame_info_ptr frame)
    frame_cleanup_after_sniffer.  */
 
 void
-frame_prepare_for_sniffer (frame_info_ptr frame,
+frame_prepare_for_sniffer (frame_info *frame,
 			   const struct frame_unwind *unwind)
 {
   gdb_assert (frame->unwind == NULL);
diff --git a/gdb/frame.h b/gdb/frame.h
index 12cb27573f4e..2182ca7d4665 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -265,19 +265,72 @@ extern void restore_selected_frame (frame_id frame_id, int frame_level)
 
 /* Given a FRAME, return the next (more inner, younger) or previous
    (more outer, older) frame.  */
-extern frame_info_ptr get_prev_frame (frame_info_ptr);
-extern frame_info_ptr get_next_frame (frame_info_ptr);
+extern frame_info_ptr get_prev_frame (frame_info *frame);
 
-/* Like get_next_frame(), but allows return of the sentinel frame.  NULL
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_info_ptr
+get_prev_frame (frame_info_ptr frame)
+{
+  return get_prev_frame (frame.get ());
+}
+
+/* Return the frame that FRAME calls (nullptr if FRAME is the
+   innermost frame), as raw frame_info pointer.
+
+   This is meant to be used by the context of some unwinders, where the next
+   frame's id may not be computed yet (and therefore can't be wrapped in a
+   frame_info_ptr).  Most callers should use get_next_frame.  */
+
+extern frame_info *get_next_frame (frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_info_ptr
+get_next_frame (frame_info_ptr frame)
+{
+  return frame_info_ptr (get_next_frame (frame.get ()));
+};
+
+/* Like get_next_frame_raw(), but allows return of the sentinel frame.  NULL
    is never returned.  */
-extern frame_info_ptr get_next_frame_sentinel_okay (frame_info_ptr);
+
+extern frame_info *get_next_frame_sentinel_okay_raw (frame_info *this_frame);
+
+static inline frame_info_ptr
+get_next_frame_sentinel_okay (frame_info *this_frame)
+{
+  return frame_info_ptr (get_next_frame_sentinel_okay_raw (this_frame));
+}
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_info_ptr
+get_next_frame_sentinel_okay (frame_info_ptr this_frame)
+{
+  return get_next_frame_sentinel_okay (this_frame.get ());
+}
 
 /* Return a "struct frame_info" corresponding to the frame that called
    THIS_FRAME.  Returns NULL if there is no such frame.
 
    Unlike get_prev_frame, this function always tries to unwind the
    frame.  */
-extern frame_info_ptr get_prev_frame_always (frame_info_ptr);
+extern frame_info *get_prev_frame_always_raw (frame_info *this_frame);
+
+static inline frame_info_ptr
+get_prev_frame_always (frame_info *this_frame)
+{
+  return frame_info_ptr (get_prev_frame_always_raw (this_frame));
+}
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_info_ptr
+get_prev_frame_always (frame_info_ptr this_frame)
+{
+  return get_prev_frame_always (this_frame.get ());
+}
 
 /* Given a frame's ID, relocate the frame.  Returns NULL if the frame
    is not found.  */
@@ -289,12 +342,28 @@ extern frame_info_ptr frame_find_by_id (frame_id id);
    this frame.
 
    This replaced: frame->pc; */
-extern CORE_ADDR get_frame_pc (frame_info_ptr);
+extern CORE_ADDR get_frame_pc (frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline CORE_ADDR
+get_frame_pc (frame_info_ptr frame)
+{
+  return get_frame_pc (frame.get ());
+}
 
 /* Same as get_frame_pc, but return a boolean indication of whether
    the PC is actually available, instead of throwing an error.  */
 
-extern bool get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc);
+extern bool get_frame_pc_if_available (frame_info *frame, CORE_ADDR *pc);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline bool
+get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc)
+{
+  return get_frame_pc_if_available (frame.get (), pc);
+}
 
 /* An address (not necessarily aligned to an instruction boundary)
    that falls within THIS frame's code block.
@@ -309,32 +378,65 @@ extern bool get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc);
    function returns the frame's PC-1 which "should" be an address in
    the frame's block.  */
 
-extern CORE_ADDR get_frame_address_in_block (frame_info_ptr this_frame);
+extern CORE_ADDR get_frame_address_in_block (frame_info *this_frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline CORE_ADDR
+get_frame_address_in_block (frame_info_ptr this_frame)
+{
+  return get_frame_address_in_block (this_frame.get ());
+}
 
 /* Same as get_frame_address_in_block, but returns a boolean
    indication of whether the frame address is determinable (when the
    PC is unavailable, it will not be), instead of possibly throwing an
    error trying to read an unavailable PC.  */
 
-extern bool get_frame_address_in_block_if_available (frame_info_ptr this_frame,
+extern bool get_frame_address_in_block_if_available (frame_info *this_frame,
 						     CORE_ADDR *pc);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline bool
+get_frame_address_in_block_if_available (frame_info_ptr this_frame,
+					 CORE_ADDR *pc)
+{
+  return get_frame_address_in_block_if_available (this_frame.get (), pc);
+}
+
 /* The frame's inner-most bound.  AKA the stack-pointer.  Confusingly
    known as top-of-stack.  */
 
-extern CORE_ADDR get_frame_sp (frame_info_ptr);
+extern CORE_ADDR get_frame_sp (frame_info *this_frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline CORE_ADDR
+get_frame_sp (frame_info_ptr this_frame)
+{
+  return get_frame_sp (this_frame.get ());
+}
 
 /* Following on from the `resume' address.  Return the entry point
    address of the function containing that resume address, or zero if
    that function isn't known.  */
-extern CORE_ADDR get_frame_func (frame_info_ptr fi);
+extern CORE_ADDR get_frame_func (frame_info *fi);
 
 /* Same as get_frame_func, but returns a boolean indication of whether
    the frame function is determinable (when the PC is unavailable, it
    will not be), instead of possibly throwing an error trying to read
    an unavailable PC.  */
 
-extern bool get_frame_func_if_available (frame_info_ptr fi, CORE_ADDR *);
+extern bool get_frame_func_if_available (frame_info *fi, CORE_ADDR *pc);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline bool
+get_frame_func_if_available (frame_info_ptr fi, CORE_ADDR *pc)
+{
+  return get_frame_func_if_available (fi.get (), pc);
+}
 
 /* Closely related to the resume address, various symbol table
    attributes that are determined by the PC.  Note that for a normal
@@ -383,19 +485,44 @@ void set_current_sal_from_frame (frame_info_ptr);
 
    This replaced: frame->frame; */
 
-extern CORE_ADDR get_frame_base (frame_info_ptr);
+extern CORE_ADDR get_frame_base (frame_info *fi);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline CORE_ADDR
+get_frame_base (frame_info_ptr fi)
+{
+  return get_frame_base (fi.get ());
+}
 
 /* Return the per-frame unique identifer.  Can be used to relocate a
    frame after a frame cache flush (and other similar operations).  If
    FI is NULL, return the null_frame_id.  */
-extern struct frame_id get_frame_id (frame_info_ptr fi);
+extern struct frame_id get_frame_id (frame_info *fi);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_id
+get_frame_id (frame_info_ptr fi)
+{
+  return get_frame_id (fi.get ());
+}
+
 extern struct frame_id get_stack_frame_id (frame_info_ptr fi);
 extern struct frame_id frame_unwind_caller_id (frame_info_ptr next_frame);
 
 /* Assuming that a frame is `normal', return its base-address, or 0 if
    the information isn't available.  NOTE: This address is really only
    meaningful to the frame's high-level debug info.  */
-extern CORE_ADDR get_frame_base_address (frame_info_ptr);
+extern CORE_ADDR get_frame_base_address (frame_info *fi);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline CORE_ADDR
+get_frame_base_address (frame_info_ptr fi)
+{
+  return get_frame_base_address (fi.get ());
+}
 
 /* Assuming that a frame is `normal', return the base-address of the
    local variables, or 0 if the information isn't available.  NOTE:
@@ -413,11 +540,26 @@ extern CORE_ADDR get_frame_args_address (frame_info_ptr);
 
 /* The frame's level: 0 for innermost, 1 for its caller, ...; or -1
    for an invalid frame).  */
-extern int frame_relative_level (frame_info_ptr fi);
+extern int frame_relative_level (frame_info *fi);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline int frame_relative_level (frame_info_ptr fi)
+{
+  return frame_relative_level (fi.get ());
+}
 
 /* Return the frame's type.  */
 
-extern enum frame_type get_frame_type (frame_info_ptr);
+extern enum frame_type get_frame_type (frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline frame_type
+get_frame_type (frame_info_ptr frame)
+{
+  return get_frame_type (frame.get ());
+}
 
 /* Return whether FRAME is user created.  */
 
@@ -452,7 +594,15 @@ enum unwind_stop_reason
 
 /* Return the reason why we can't unwind past this frame.  */
 
-enum unwind_stop_reason get_frame_unwind_stop_reason (frame_info_ptr);
+enum unwind_stop_reason get_frame_unwind_stop_reason (frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline unwind_stop_reason
+get_frame_unwind_stop_reason (frame_info_ptr frame)
+{
+  return get_frame_unwind_stop_reason (frame.get ());
+}
 
 /* Translate a reason code to an informative string.  This converts the
    generic stop reason codes into a generic string describing the code.
@@ -475,37 +625,99 @@ const char *frame_stop_reason_string (frame_info_ptr);
    (up, older) frame is returned.  If VALUEP is NULL, don't
    fetch/compute the value.  Instead just return the location of the
    value.  */
-extern void frame_register_unwind (frame_info_ptr frame, int regnum,
+extern void frame_register_unwind (frame_info *frame, int regnum,
 				   int *optimizedp, int *unavailablep,
 				   enum lval_type *lvalp,
 				   CORE_ADDR *addrp, int *realnump,
 				   gdb_byte *valuep);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline void
+frame_register_unwind (frame_info_ptr frame, int regnum, int *optimizedp,
+		       int *unavailablep, enum lval_type *lvalp,
+		       CORE_ADDR *addrp, int *realnump, gdb_byte *valuep)
+{
+  return frame_register_unwind (frame.get (), regnum, optimizedp, unavailablep,
+				lvalp, addrp, realnump, valuep);
+}
+
 /* Fetch a register from this, or unwind a register from the next
    frame.  Note that the get_frame methods are wrappers to
    frame->next->unwind.  They all [potentially] throw an error if the
    fetch fails.  The value methods never return NULL, but usually
    do return a lazy value.  */
 
-extern void frame_unwind_register (frame_info_ptr next_frame,
+extern void frame_unwind_register (frame_info *next_frame,
 				   int regnum, gdb_byte *buf);
-extern void get_frame_register (frame_info_ptr frame,
-				int regnum, gdb_byte *buf);
 
-struct value *frame_unwind_register_value (frame_info_ptr next_frame,
+extern void get_frame_register (frame_info *frame, int regnum, gdb_byte *buf);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline void
+get_frame_register (frame_info_ptr frame, int regnum, gdb_byte *buf)
+{
+  return get_frame_register (frame.get (), regnum, buf);
+}
+
+struct value *frame_unwind_register_value (frame_info *next_frame,
 					   int regnum);
-struct value *get_frame_register_value (frame_info_ptr frame,
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline value *
+frame_unwind_register_value (frame_info_ptr next_frame, int regnum)
+{
+  return frame_unwind_register_value (next_frame.get (), regnum);
+}
+
+struct value *get_frame_register_value (frame_info *frame,
 					int regnum);
 
-extern LONGEST frame_unwind_register_signed (frame_info_ptr next_frame,
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline value *
+get_frame_register_value (frame_info_ptr frame, int regnum)
+{
+  return get_frame_register_value (frame.get (), regnum);
+}
+
+extern LONGEST frame_unwind_register_signed (frame_info *next_frame,
 					     int regnum);
-extern LONGEST get_frame_register_signed (frame_info_ptr frame,
-					  int regnum);
-extern ULONGEST frame_unwind_register_unsigned (frame_info_ptr frame,
+
+extern LONGEST get_frame_register_signed (frame_info *frame, int regnum);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline ULONGEST
+get_frame_register_signed (frame_info_ptr frame, int regnum)
+{
+  return get_frame_register_signed (frame.get (), regnum);
+}
+
+extern ULONGEST frame_unwind_register_unsigned (frame_info *frame,
 						int regnum);
-extern ULONGEST get_frame_register_unsigned (frame_info_ptr frame,
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline ULONGEST
+frame_unwind_register_unsigned (frame_info_ptr frame, int regnum)
+{
+  return frame_unwind_register_unsigned (frame.get (), regnum);
+}
+
+extern ULONGEST get_frame_register_unsigned (frame_info *frame,
 					     int regnum);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline ULONGEST
+get_frame_register_unsigned (frame_info_ptr frame, int regnum)
+{
+  return get_frame_register_unsigned (frame.get (), regnum);
+}
+
 /* Read a register from this, or unwind a register from the next
    frame.  Note that the read_frame methods are wrappers to
    get_frame_register_value, that do not throw if the result is
@@ -524,11 +736,22 @@ extern void put_frame_register (frame_info_ptr frame, int regnum,
    in frame FRAME, starting at OFFSET, into BUF.  If the register
    contents are optimized out or unavailable, set *OPTIMIZEDP,
    *UNAVAILABLEP accordingly.  */
-extern bool get_frame_register_bytes (frame_info_ptr frame, int regnum,
+extern bool get_frame_register_bytes (frame_info *frame, int regnum,
 				      CORE_ADDR offset,
 				      gdb::array_view<gdb_byte> buffer,
 				      int *optimizedp, int *unavailablep);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline bool
+get_frame_register_bytes (frame_info_ptr frame, int regnum, CORE_ADDR offset,
+			  gdb::array_view<gdb_byte> buffer, int *optimizedp,
+			  int *unavailablep)
+{
+  return get_frame_register_bytes (frame.get (), regnum, offset, buffer,
+				   optimizedp, unavailablep);
+}
+
 /* Write bytes from BUFFER to one or multiple registers starting with REGNUM
    in frame FRAME, starting at OFFSET.  */
 extern void put_frame_register_bytes (frame_info_ptr frame, int regnum,
@@ -560,21 +783,45 @@ extern void frame_pop (frame_info_ptr frame);
 
 extern void get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
 			      gdb::array_view<gdb_byte> buffer);
-extern LONGEST get_frame_memory_signed (frame_info_ptr this_frame,
+extern LONGEST get_frame_memory_signed (frame_info *this_frame,
 					CORE_ADDR memaddr, int len);
-extern ULONGEST get_frame_memory_unsigned (frame_info_ptr this_frame,
+extern ULONGEST get_frame_memory_unsigned (frame_info *this_frame,
 					   CORE_ADDR memaddr, int len);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline ULONGEST
+get_frame_memory_unsigned (frame_info_ptr this_frame, CORE_ADDR memaddr, int len)
+{
+  return get_frame_memory_unsigned (this_frame.get (), memaddr, len);
+}
+
 /* Same as above, but return true zero when the entire memory read
    succeeds, false otherwise.  */
-extern bool safe_frame_unwind_memory (frame_info_ptr this_frame, CORE_ADDR addr,
+extern bool safe_frame_unwind_memory (frame_info *this_frame, CORE_ADDR addr,
 				      gdb::array_view<gdb_byte> buffer);
 
 /* Return this frame's architecture.  */
-extern struct gdbarch *get_frame_arch (frame_info_ptr this_frame);
+extern struct gdbarch *get_frame_arch (frame_info *this_frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline gdbarch *
+get_frame_arch (frame_info_ptr this_frame)
+{
+  return get_frame_arch (this_frame.get ());
+}
 
 /* Return the previous frame's architecture.  */
-extern struct gdbarch *frame_unwind_arch (frame_info_ptr next_frame);
+extern struct gdbarch *frame_unwind_arch (frame_info *next_frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline gdbarch *
+frame_unwind_arch (frame_info_ptr next_frame)
+{
+  return frame_unwind_arch (next_frame.get ());
+}
 
 /* Return the previous frame's architecture, skipping inline functions.  */
 extern struct gdbarch *frame_unwind_caller_arch (frame_info_ptr frame);
@@ -619,9 +866,17 @@ class readonly_detached_regcache;
 std::unique_ptr<readonly_detached_regcache> frame_save_as_regcache
     (frame_info_ptr this_frame);
 
-extern const struct block *get_frame_block (frame_info_ptr,
+extern const struct block *get_frame_block (frame_info *this_frame,
 					    CORE_ADDR *addr_in_block);
 
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline const struct block *
+get_frame_block (frame_info_ptr this_frame, CORE_ADDR *addr_in_block)
+{
+  return get_frame_block (this_frame.get (), addr_in_block);
+}
+
 /* Return the `struct block' that belongs to the selected thread's
    selected frame.  If the inferior has no state, return NULL.
 
@@ -650,7 +905,15 @@ extern const struct block *get_frame_block (frame_info_ptr,
 
 extern const struct block *get_selected_block (CORE_ADDR *addr_in_block);
 
-extern struct symbol *get_frame_function (frame_info_ptr);
+extern struct symbol *get_frame_function (frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline symbol *
+get_frame_function (frame_info_ptr frame)
+{
+  return get_frame_function (frame.get ());
+}
 
 extern CORE_ADDR get_pc_function_start (CORE_ADDR);
 
@@ -675,7 +938,7 @@ extern void print_frame_info (const frame_print_options &fp_opts,
 
 extern frame_info_ptr block_innermost_frame (const struct block *);
 
-extern bool deprecated_frame_register_read (frame_info_ptr frame, int regnum,
+extern bool deprecated_frame_register_read (frame_info *frame, int regnum,
 					    gdb_byte *buf);
 
 /* From stack.c.  */
@@ -763,13 +1026,13 @@ extern void return_command (const char *, int);
    If sniffing fails, the caller should be sure to call
    frame_cleanup_after_sniffer.  */
 
-extern void frame_prepare_for_sniffer (frame_info_ptr frame,
+extern void frame_prepare_for_sniffer (frame_info *frame,
 				       const struct frame_unwind *unwind);
 
 /* Clean up after a failed (wrong unwinder) attempt to unwind past
    FRAME.  */
 
-extern void frame_cleanup_after_sniffer (frame_info_ptr frame);
+extern void frame_cleanup_after_sniffer (frame_info *frame);
 
 /* Notes (cagney/2002-11-27, drow/2003-09-06):
 
@@ -810,7 +1073,7 @@ extern frame_info_ptr create_new_frame (CORE_ADDR base, CORE_ADDR pc);
 /* Return true if the frame unwinder for frame FI is UNWINDER; false
    otherwise.  */
 
-extern bool frame_unwinder_is (frame_info_ptr fi, const frame_unwind *unwinder);
+extern bool frame_unwinder_is (frame_info *fi, const frame_unwind *unwinder);
 
 /* Return the language of FRAME.  */
 
@@ -857,7 +1120,7 @@ unsigned int get_frame_cache_generation ();
 
 /* Mark that the PC value is masked for the previous frame.  */
 
-extern void set_frame_previous_pc_masked (frame_info_ptr frame);
+extern void set_frame_previous_pc_masked (frame_info *frame);
 
 /* Get whether the PC value is masked for the given frame.  */
 
diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
index 41344c82370a..2784cbefa0c0 100644
--- a/gdb/frv-linux-tdep.c
+++ b/gdb/frv-linux-tdep.c
@@ -168,7 +168,7 @@ frv_linux_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc,
       } __attribute__((aligned(8)));  */
 
 static LONGEST
-frv_linux_sigcontext_reg_addr (frame_info_ptr this_frame, int regno,
+frv_linux_sigcontext_reg_addr (frame_info *this_frame, int regno,
 			       CORE_ADDR *sc_addr_cache_ptr)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -258,7 +258,7 @@ frv_linux_sigcontext_reg_addr (frame_info_ptr this_frame, int regno,
 /* Signal trampolines.  */
 
 static struct trad_frame_cache *
-frv_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
+frv_linux_sigtramp_frame_cache (frame_info *this_frame,
 				void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -297,7 +297,7 @@ frv_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-frv_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
+frv_linux_sigtramp_frame_this_id (frame_info *this_frame,
 				  void **this_cache,
 				  struct frame_id *this_id)
 {
@@ -307,7 +307,7 @@ frv_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-frv_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+frv_linux_sigtramp_frame_prev_register (frame_info *this_frame,
 					void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -318,7 +318,7 @@ frv_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 frv_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				  frame_info_ptr this_frame,
+				  frame_info *this_frame,
 				  void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
index 056aad3f17e7..383aca4594cc 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -504,7 +504,7 @@ is_argument_reg (int reg)
    prologue analysis.  */
 static CORE_ADDR
 frv_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc,
-		      frame_info_ptr this_frame,
+		      frame_info *this_frame,
 		      struct frv_unwind_cache *info)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1078,7 +1078,7 @@ frv_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
 
 static struct frv_unwind_cache *
-frv_frame_unwind_cache (frame_info_ptr this_frame,
+frv_frame_unwind_cache (frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1361,7 +1361,7 @@ frv_return_value (struct gdbarch *gdbarch, struct value *function,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-frv_frame_this_id (frame_info_ptr this_frame,
+frv_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache, struct frame_id *this_id)
 {
   struct frv_unwind_cache *info
@@ -1391,7 +1391,7 @@ frv_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-frv_frame_prev_register (frame_info_ptr this_frame,
+frv_frame_prev_register (frame_info *this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   struct frv_unwind_cache *info
@@ -1410,7 +1410,7 @@ static const struct frame_unwind frv_frame_unwind = {
 };
 
 static CORE_ADDR
-frv_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+frv_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct frv_unwind_cache *info
     = frv_frame_unwind_cache (this_frame, this_cache);
diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c
index 8da3dbae5928..e831fbb6f28b 100644
--- a/gdb/ft32-tdep.c
+++ b/gdb/ft32-tdep.c
@@ -449,7 +449,7 @@ ft32_alloc_frame_cache (void)
 /* Populate a ft32_frame_cache object for this_frame.  */
 
 static struct ft32_frame_cache *
-ft32_frame_cache (frame_info_ptr this_frame, void **this_cache)
+ft32_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct ft32_frame_cache *cache;
   CORE_ADDR current_pc;
@@ -489,7 +489,7 @@ ft32_frame_cache (frame_info_ptr this_frame, void **this_cache)
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-ft32_frame_this_id (frame_info_ptr this_frame,
+ft32_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache, struct frame_id *this_id)
 {
   struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
@@ -505,7 +505,7 @@ ft32_frame_this_id (frame_info_ptr this_frame,
 /* Get the value of register regnum in the previous stack frame.  */
 
 static struct value *
-ft32_frame_prev_register (frame_info_ptr this_frame,
+ft32_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
@@ -537,7 +537,7 @@ static const struct frame_unwind ft32_frame_unwind =
 /* Return the base address of this_frame.  */
 
 static CORE_ADDR
-ft32_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+ft32_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
 						     this_cache);
diff --git a/gdb/gdbarch-components.py b/gdb/gdbarch-components.py
index e7230949aad5..ff07f6f5bd8b 100644
--- a/gdb/gdbarch-components.py
+++ b/gdb/gdbarch-components.py
@@ -613,7 +613,7 @@ frame.
 """,
     type="struct frame_id",
     name="dummy_id",
-    params=[("frame_info_ptr", "this_frame")],
+    params=[("frame_info *", "this_frame")],
     predefault="default_dummy_id",
     invalid=False,
 )
@@ -778,7 +778,7 @@ Function(
     type="int",
     name="register_to_value",
     params=[
-        ("frame_info_ptr", "frame"),
+        ("frame_info *", "frame"),
         ("int", "regnum"),
         ("struct type *", "type"),
         ("gdb_byte *", "buf"),
@@ -1080,7 +1080,7 @@ Value(
 Method(
     type="CORE_ADDR",
     name="unwind_pc",
-    params=[("frame_info_ptr", "next_frame")],
+    params=[("frame_info *", "next_frame")],
     predefault="default_unwind_pc",
     invalid=False,
 )
@@ -1088,7 +1088,7 @@ Method(
 Method(
     type="CORE_ADDR",
     name="unwind_sp",
-    params=[("frame_info_ptr", "next_frame")],
+    params=[("frame_info *", "next_frame")],
     predefault="default_unwind_sp",
     invalid=False,
 )
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index a663316df166..d796125fcb23 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -315,8 +315,8 @@ extern void set_gdbarch_register_type (struct gdbarch *gdbarch, gdbarch_register
    should match the address at which the breakpoint was set in the dummy
    frame. */
 
-typedef struct frame_id (gdbarch_dummy_id_ftype) (struct gdbarch *gdbarch, frame_info_ptr this_frame);
-extern struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame);
+typedef struct frame_id (gdbarch_dummy_id_ftype) (struct gdbarch *gdbarch, frame_info *this_frame);
+extern struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame);
 extern void set_gdbarch_dummy_id (struct gdbarch *gdbarch, gdbarch_dummy_id_ftype *dummy_id);
 
 /* Implement DUMMY_ID and PUSH_DUMMY_CALL, then delete
@@ -393,8 +393,8 @@ typedef int (gdbarch_convert_register_p_ftype) (struct gdbarch *gdbarch, int reg
 extern int gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type);
 extern void set_gdbarch_convert_register_p (struct gdbarch *gdbarch, gdbarch_convert_register_p_ftype *convert_register_p);
 
-typedef int (gdbarch_register_to_value_ftype) (frame_info_ptr frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep);
-extern int gdbarch_register_to_value (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep);
+typedef int (gdbarch_register_to_value_ftype) (frame_info *frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep);
+extern int gdbarch_register_to_value (struct gdbarch *gdbarch, frame_info *frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep);
 extern void set_gdbarch_register_to_value (struct gdbarch *gdbarch, gdbarch_register_to_value_ftype *register_to_value);
 
 typedef void (gdbarch_value_to_register_ftype) (frame_info_ptr frame, int regnum, struct type *type, const gdb_byte *buf);
@@ -578,12 +578,12 @@ extern void set_gdbarch_get_thread_local_address (struct gdbarch *gdbarch, gdbar
 extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch);
 extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip);
 
-typedef CORE_ADDR (gdbarch_unwind_pc_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame);
-extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame);
+typedef CORE_ADDR (gdbarch_unwind_pc_ftype) (struct gdbarch *gdbarch, frame_info *next_frame);
+extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame);
 extern void set_gdbarch_unwind_pc (struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype *unwind_pc);
 
-typedef CORE_ADDR (gdbarch_unwind_sp_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame);
-extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame);
+typedef CORE_ADDR (gdbarch_unwind_sp_ftype) (struct gdbarch *gdbarch, frame_info *next_frame);
+extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame);
 extern void set_gdbarch_unwind_sp (struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype *unwind_sp);
 
 /* DEPRECATED_FRAME_LOCALS_ADDRESS as been replaced by the per-frame
diff --git a/gdb/gdbarch-selftests.c b/gdb/gdbarch-selftests.c
index 75d18111c0d5..d02e7c253b3f 100644
--- a/gdb/gdbarch-selftests.c
+++ b/gdb/gdbarch-selftests.c
@@ -107,8 +107,9 @@ register_to_value_test (struct gdbarch *gdbarch)
 	      /* Set the fingerprint in the last two bytes.  */
 	      buf [type->length ()]= 'w';
 	      buf [type->length () + 1]= 'l';
-	      ok = gdbarch_register_to_value (gdbarch, frame, regnum, type,
-					      buf.data (), &optim, &unavail);
+	      ok = gdbarch_register_to_value (gdbarch, frame.get (), regnum,
+					      type, buf.data (), &optim,
+					      &unavail);
 
 	      SELF_CHECK (ok);
 	      SELF_CHECK (!optim);
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index ddb8dec1c72d..43f4002f5d3d 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -2177,7 +2177,7 @@ set_gdbarch_register_type (struct gdbarch *gdbarch,
 }
 
 struct frame_id
-gdbarch_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+gdbarch_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->dummy_id != NULL);
@@ -2460,7 +2460,7 @@ set_gdbarch_convert_register_p (struct gdbarch *gdbarch,
 }
 
 int
-gdbarch_register_to_value (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep)
+gdbarch_register_to_value (struct gdbarch *gdbarch, frame_info *frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->register_to_value != NULL);
@@ -2951,7 +2951,7 @@ set_gdbarch_frame_args_skip (struct gdbarch *gdbarch,
 }
 
 CORE_ADDR
-gdbarch_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+gdbarch_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->unwind_pc != NULL);
@@ -2968,7 +2968,7 @@ set_gdbarch_unwind_pc (struct gdbarch *gdbarch,
 }
 
 CORE_ADDR
-gdbarch_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+gdbarch_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_assert (gdbarch != NULL);
   gdb_assert (gdbarch->unwind_sp != NULL);
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
index 38e7135601ec..2d5a69f05645 100644
--- a/gdb/h8300-tdep.c
+++ b/gdb/h8300-tdep.c
@@ -404,7 +404,7 @@ h8300_analyze_prologue (struct gdbarch *gdbarch,
 }
 
 static struct h8300_frame_cache *
-h8300_frame_cache (frame_info_ptr this_frame, void **this_cache)
+h8300_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct h8300_frame_cache *cache;
@@ -466,7 +466,7 @@ h8300_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-h8300_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+h8300_frame_this_id (frame_info *this_frame, void **this_cache,
 		     struct frame_id *this_id)
 {
   struct h8300_frame_cache *cache =
@@ -480,7 +480,7 @@ h8300_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-h8300_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+h8300_frame_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -511,7 +511,7 @@ static const struct frame_unwind h8300_frame_unwind = {
 };
 
 static CORE_ADDR
-h8300_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+h8300_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct h8300_frame_cache *cache = h8300_frame_cache (this_frame, this_cache);
   return cache->base;
diff --git a/gdb/hppa-bsd-tdep.c b/gdb/hppa-bsd-tdep.c
index 458c22085d75..40534a6a2c7d 100644
--- a/gdb/hppa-bsd-tdep.c
+++ b/gdb/hppa-bsd-tdep.c
@@ -107,7 +107,7 @@ hppabsd_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
 static void
 hppabsd_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       frame_info_ptr this_frame)
+			       frame_info *this_frame)
 {
   if (regnum == HPPA_PCOQ_HEAD_REGNUM)
     reg->how = DWARF2_FRAME_REG_RA;
diff --git a/gdb/hppa-linux-tdep.c b/gdb/hppa-linux-tdep.c
index 2a1aa6c24b34..4b67e63d76cd 100644
--- a/gdb/hppa-linux-tdep.c
+++ b/gdb/hppa-linux-tdep.c
@@ -193,7 +193,7 @@ struct hppa_linux_sigtramp_unwind_cache
 };
 
 static struct hppa_linux_sigtramp_unwind_cache *
-hppa_linux_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
+hppa_linux_sigtramp_frame_unwind_cache (frame_info *this_frame,
 					void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -268,7 +268,7 @@ hppa_linux_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
 }
 
 static void
-hppa_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
+hppa_linux_sigtramp_frame_this_id (frame_info *this_frame,
 				   void **this_prologue_cache,
 				   struct frame_id *this_id)
 {
@@ -278,7 +278,7 @@ hppa_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-hppa_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+hppa_linux_sigtramp_frame_prev_register (frame_info *this_frame,
 					 void **this_prologue_cache,
 					 int regnum)
 {
@@ -296,7 +296,7 @@ hppa_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
    we can find the beginning of the struct rt_sigframe.  */
 static int
 hppa_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
diff --git a/gdb/hppa-netbsd-tdep.c b/gdb/hppa-netbsd-tdep.c
index 7be06a4d1a62..96ff692d5b78 100644
--- a/gdb/hppa-netbsd-tdep.c
+++ b/gdb/hppa-netbsd-tdep.c
@@ -64,7 +64,7 @@ static int hppanbsd_mc_reg_offset[] =
 };
 
 static void hppanbsd_sigtramp_cache_init (const struct tramp_frame *,
-					 frame_info_ptr,
+					 frame_info *,
 					 struct trad_frame_cache *,
 					 CORE_ADDR);
 
@@ -99,7 +99,7 @@ static const struct tramp_frame hppanbsd_sigtramp_si4 =
 
 static void
 hppanbsd_sigtramp_cache_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index fb4c4b42eab2..d0c26aa7e02e 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1830,7 +1830,7 @@ hppa_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 /* Return an unwind entry that falls within the frame's code block.  */
 
 static struct unwind_table_entry *
-hppa_find_unwind_entry_in_block (frame_info_ptr this_frame)
+hppa_find_unwind_entry_in_block (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
 
@@ -1851,7 +1851,7 @@ struct hppa_frame_cache
 };
 
 static struct hppa_frame_cache *
-hppa_frame_cache (frame_info_ptr this_frame, void **this_cache)
+hppa_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2252,7 +2252,7 @@ hppa_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-hppa_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+hppa_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct hppa_frame_cache *info;
@@ -2265,7 +2265,7 @@ hppa_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-hppa_frame_prev_register (frame_info_ptr this_frame,
+hppa_frame_prev_register (frame_info *this_frame,
 			  void **this_cache, int regnum)
 {
   struct hppa_frame_cache *info = hppa_frame_cache (this_frame, this_cache);
@@ -2276,7 +2276,7 @@ hppa_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 hppa_frame_unwind_sniffer (const struct frame_unwind *self,
-			   frame_info_ptr this_frame, void **this_cache)
+			   frame_info *this_frame, void **this_cache)
 {
   if (hppa_find_unwind_entry_in_block (this_frame))
     return 1;
@@ -2304,7 +2304,7 @@ static const struct frame_unwind hppa_frame_unwind =
    identify the stack and pc for the frame.  */
 
 static struct hppa_frame_cache *
-hppa_fallback_frame_cache (frame_info_ptr this_frame, void **this_cache)
+hppa_fallback_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2377,7 +2377,7 @@ hppa_fallback_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-hppa_fallback_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+hppa_fallback_frame_this_id (frame_info *this_frame, void **this_cache,
 			     struct frame_id *this_id)
 {
   struct hppa_frame_cache *info = 
@@ -2387,7 +2387,7 @@ hppa_fallback_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-hppa_fallback_frame_prev_register (frame_info_ptr this_frame,
+hppa_fallback_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   struct hppa_frame_cache *info
@@ -2416,7 +2416,7 @@ struct hppa_stub_unwind_cache
 };
 
 static struct hppa_stub_unwind_cache *
-hppa_stub_frame_unwind_cache (frame_info_ptr this_frame,
+hppa_stub_frame_unwind_cache (frame_info *this_frame,
 			      void **this_cache)
 {
   struct hppa_stub_unwind_cache *info;
@@ -2437,7 +2437,7 @@ hppa_stub_frame_unwind_cache (frame_info_ptr this_frame,
 }
 
 static void
-hppa_stub_frame_this_id (frame_info_ptr this_frame,
+hppa_stub_frame_this_id (frame_info *this_frame,
 			 void **this_prologue_cache,
 			 struct frame_id *this_id)
 {
@@ -2449,7 +2449,7 @@ hppa_stub_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-hppa_stub_frame_prev_register (frame_info_ptr this_frame,
+hppa_stub_frame_prev_register (frame_info *this_frame,
 			       void **this_prologue_cache, int regnum)
 {
   struct hppa_stub_unwind_cache *info
@@ -2464,7 +2464,7 @@ hppa_stub_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 hppa_stub_unwind_sniffer (const struct frame_unwind *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  void **this_cache)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -2490,7 +2490,7 @@ static const struct frame_unwind hppa_stub_frame_unwind = {
 };
 
 CORE_ADDR
-hppa_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+hppa_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   ULONGEST ipsw;
   CORE_ADDR pc;
@@ -2707,7 +2707,7 @@ hppa_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
 }
 
 struct value *
-hppa_frame_prev_register_helper (frame_info_ptr this_frame,
+hppa_frame_prev_register_helper (frame_info *this_frame,
 				 trad_frame_saved_reg saved_regs[],
 				 int regnum)
 {
diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h
index 516d2ef8a8cd..396dc81217aa 100644
--- a/gdb/hppa-tdep.h
+++ b/gdb/hppa-tdep.h
@@ -109,7 +109,7 @@ struct hppa_gdbarch_tdep : gdbarch_tdep_base
      not interested in them.  If we detect that we are returning to a stub,
      adjust the pc to the real caller.  This improves the behavior of commands
      that traverse frames such as "up" and "finish".  */
-  void (*unwind_adjust_stub) (frame_info_ptr this_frame, CORE_ADDR base,
+  void (*unwind_adjust_stub) (frame_info *this_frame, CORE_ADDR base,
 			      trad_frame_saved_reg *saved_regs) = nullptr;
 
   /* These are solib-dependent methods.  They are really HPUX only, but
@@ -201,14 +201,14 @@ int hppa_extract_14 (unsigned);
 CORE_ADDR hppa_symbol_address(const char *sym);
 
 extern struct value *
-  hppa_frame_prev_register_helper (frame_info_ptr this_frame,
+  hppa_frame_prev_register_helper (frame_info *this_frame,
 				   trad_frame_saved_reg *saved_regs,
 				   int regnum);
 
 extern CORE_ADDR hppa_read_pc (struct regcache *regcache);
 extern void hppa_write_pc (struct regcache *regcache, CORE_ADDR pc);
 extern CORE_ADDR hppa_unwind_pc (struct gdbarch *gdbarch,
-				 frame_info_ptr next_frame);
+				 frame_info *next_frame);
 
 extern int hppa_in_solib_call_trampoline (struct gdbarch *gdbarch,
 					  CORE_ADDR pc);
diff --git a/gdb/i386-bsd-tdep.c b/gdb/i386-bsd-tdep.c
index dd91e3021289..a01b926bf21f 100644
--- a/gdb/i386-bsd-tdep.c
+++ b/gdb/i386-bsd-tdep.c
@@ -32,7 +32,7 @@
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-i386bsd_sigcontext_addr (frame_info_ptr this_frame)
+i386bsd_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/i386-darwin-tdep.c b/gdb/i386-darwin-tdep.c
index db2f47afc250..a23b45ba435c 100644
--- a/gdb/i386-darwin-tdep.c
+++ b/gdb/i386-darwin-tdep.c
@@ -66,7 +66,7 @@ const int i386_darwin_thread_state_num_regs =
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-i386_darwin_sigcontext_addr (frame_info_ptr this_frame)
+i386_darwin_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -99,7 +99,7 @@ i386_darwin_sigcontext_addr (frame_info_ptr this_frame)
 
 int
 darwin_dwarf_signal_frame_p (struct gdbarch *gdbarch,
-			     frame_info_ptr this_frame)
+			     frame_info *this_frame)
 {
   return i386_sigtramp_p (this_frame);
 }
diff --git a/gdb/i386-darwin-tdep.h b/gdb/i386-darwin-tdep.h
index 284a9b1b07a5..c6329fbd57c1 100644
--- a/gdb/i386-darwin-tdep.h
+++ b/gdb/i386-darwin-tdep.h
@@ -27,6 +27,6 @@
 extern int i386_darwin_thread_state_reg_offset[];
 extern const int i386_darwin_thread_state_num_regs;
 
-int darwin_dwarf_signal_frame_p (struct gdbarch *, frame_info_ptr);
+int darwin_dwarf_signal_frame_p (struct gdbarch *, frame_info *);
 
 #endif /* I386_DARWIN_TDEP_H */
diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
index eef124fca0ce..9aa514bd7974 100644
--- a/gdb/i386-fbsd-tdep.c
+++ b/gdb/i386-fbsd-tdep.c
@@ -156,7 +156,7 @@ const struct regset i386_fbsd_segbases_regset =
 
 static void
 i386_fbsd_sigframe_init (const struct tramp_frame *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 struct trad_frame_cache *this_cache,
 			 CORE_ADDR func)
 {
diff --git a/gdb/i386-gnu-tdep.c b/gdb/i386-gnu-tdep.c
index 1ce4a2137e9d..b535892bbc7b 100644
--- a/gdb/i386-gnu-tdep.c
+++ b/gdb/i386-gnu-tdep.c
@@ -56,7 +56,7 @@ static const gdb_byte gnu_sigtramp_code[] =
    start of the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-i386_gnu_sigtramp_start (frame_info_ptr this_frame)
+i386_gnu_sigtramp_start (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   gdb_byte buf[GNU_SIGTRAMP_LEN];
@@ -76,7 +76,7 @@ i386_gnu_sigtramp_start (frame_info_ptr this_frame)
    routine.  */
 
 static int
-i386_gnu_sigtramp_p (frame_info_ptr this_frame)
+i386_gnu_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -97,7 +97,7 @@ i386_gnu_sigtramp_p (frame_info_ptr this_frame)
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-i386_gnu_sigcontext_addr (frame_info_ptr this_frame)
+i386_gnu_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 5c2fed39868c..de7c67ca798d 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -122,7 +122,7 @@ static const gdb_byte linux_sigtramp_code[] =
    start of the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-i386_linux_sigtramp_start (frame_info_ptr this_frame)
+i386_linux_sigtramp_start (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   gdb_byte buf[LINUX_SIGTRAMP_LEN];
@@ -190,7 +190,7 @@ static const gdb_byte linux_rt_sigtramp_code[] =
    start of the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-i386_linux_rt_sigtramp_start (frame_info_ptr this_frame)
+i386_linux_rt_sigtramp_start (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   gdb_byte buf[LINUX_RT_SIGTRAMP_LEN];
@@ -227,7 +227,7 @@ i386_linux_rt_sigtramp_start (frame_info_ptr this_frame)
    routine.  */
 
 static int
-i386_linux_sigtramp_p (frame_info_ptr this_frame)
+i386_linux_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -252,7 +252,7 @@ i386_linux_sigtramp_p (frame_info_ptr this_frame)
 
 static int
 i386_linux_dwarf_signal_frame_p (struct gdbarch *gdbarch,
-				 frame_info_ptr this_frame)
+				 frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -275,7 +275,7 @@ i386_linux_dwarf_signal_frame_p (struct gdbarch *gdbarch,
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-i386_linux_sigcontext_addr (frame_info_ptr this_frame)
+i386_linux_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/i386-netbsd-tdep.c b/gdb/i386-netbsd-tdep.c
index daeddb7a8f4e..d9b4d6ebd29c 100644
--- a/gdb/i386-netbsd-tdep.c
+++ b/gdb/i386-netbsd-tdep.c
@@ -97,7 +97,7 @@ static int i386nbsd_mc_reg_offset[] =
 };
 
 static void i386nbsd_sigtramp_cache_init (const struct tramp_frame *,
-					  frame_info_ptr,
+					  frame_info *,
 					  struct trad_frame_cache *,
 					  CORE_ADDR);
 
@@ -329,7 +329,7 @@ static const struct tramp_frame i386nbsd_sigtramp_si4 =
 
 static void
 i386nbsd_sigtramp_cache_init (const struct tramp_frame *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      struct trad_frame_cache *this_cache,
 			      CORE_ADDR func)
 {
diff --git a/gdb/i386-nto-tdep.c b/gdb/i386-nto-tdep.c
index 99e7b648e160..7da345697f06 100644
--- a/gdb/i386-nto-tdep.c
+++ b/gdb/i386-nto-tdep.c
@@ -270,7 +270,7 @@ i386nto_regset_fill (const struct regcache *regcache, int regset, char *data)
    routine.  */
 
 static int
-i386nto_sigtramp_p (frame_info_ptr this_frame)
+i386nto_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -283,7 +283,7 @@ i386nto_sigtramp_p (frame_info_ptr this_frame)
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-i386nto_sigcontext_addr (frame_info_ptr this_frame)
+i386nto_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/i386-obsd-tdep.c b/gdb/i386-obsd-tdep.c
index b1b0a83ed213..d0f70770e4ba 100644
--- a/gdb/i386-obsd-tdep.c
+++ b/gdb/i386-obsd-tdep.c
@@ -64,7 +64,7 @@ static const int i386obsd_sigreturn_offset[] = {
    routine.  */
 
 static int
-i386obsd_sigtramp_p (frame_info_ptr this_frame)
+i386obsd_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   CORE_ADDR start_pc = (pc & ~(i386obsd_page_size - 1));
@@ -303,7 +303,7 @@ static int i386obsd_tf_reg_offset[] =
 };
 
 static struct trad_frame_cache *
-i386obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
+i386obsd_trapframe_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -350,7 +350,7 @@ i386obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-i386obsd_trapframe_this_id (frame_info_ptr this_frame,
+i386obsd_trapframe_this_id (frame_info *this_frame,
 			    void **this_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *cache =
@@ -360,7 +360,7 @@ i386obsd_trapframe_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-i386obsd_trapframe_prev_register (frame_info_ptr this_frame,
+i386obsd_trapframe_prev_register (frame_info *this_frame,
 				  void **this_cache, int regnum)
 {
   struct trad_frame_cache *cache =
@@ -371,7 +371,7 @@ i386obsd_trapframe_prev_register (frame_info_ptr this_frame,
 
 static int
 i386obsd_trapframe_sniffer (const struct frame_unwind *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    void **this_prologue_cache)
 {
   ULONGEST cs;
diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c
index f9df0f3d5001..5b3c3a921ff9 100644
--- a/gdb/i386-sol2-tdep.c
+++ b/gdb/i386-sol2-tdep.c
@@ -50,7 +50,7 @@ static int i386_sol2_gregset_reg_offset[] =
    `mcontext_t' that contains the saved set of machine registers.  */
 
 static CORE_ADDR
-i386_sol2_mcontext_addr (frame_info_ptr this_frame)
+i386_sol2_mcontext_addr (frame_info *this_frame)
 {
   CORE_ADDR sp, ucontext_addr;
 
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index e027df2b9c5f..54c42c2649c3 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -1965,7 +1965,7 @@ i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 /* This function is 64-bit safe.  */
 
 static CORE_ADDR
-i386_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+i386_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[8];
 
@@ -1977,7 +1977,7 @@ i386_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Normal frames.  */
 
 static void
-i386_frame_cache_1 (frame_info_ptr this_frame,
+i386_frame_cache_1 (frame_info *this_frame,
 		    struct i386_frame_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2078,7 +2078,7 @@ i386_frame_cache_1 (frame_info_ptr this_frame,
 }
 
 static struct i386_frame_cache *
-i386_frame_cache (frame_info_ptr this_frame, void **this_cache)
+i386_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct i386_frame_cache *cache;
 
@@ -2102,7 +2102,7 @@ i386_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-i386_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+i386_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
@@ -2121,7 +2121,7 @@ i386_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static enum unwind_stop_reason
-i386_frame_unwind_stop_reason (frame_info_ptr this_frame,
+i386_frame_unwind_stop_reason (frame_info *this_frame,
 			       void **this_cache)
 {
   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
@@ -2137,7 +2137,7 @@ i386_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static struct value *
-i386_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+i386_frame_prev_register (frame_info *this_frame, void **this_cache,
 			  int regnum)
 {
   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
@@ -2236,7 +2236,7 @@ i386_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
 static int
 i386_epilogue_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -2247,7 +2247,7 @@ i386_epilogue_frame_sniffer (const struct frame_unwind *self,
 }
 
 static struct i386_frame_cache *
-i386_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
+i386_epilogue_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct i386_frame_cache *cache;
   CORE_ADDR sp;
@@ -2282,7 +2282,7 @@ i386_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static enum unwind_stop_reason
-i386_epilogue_frame_unwind_stop_reason (frame_info_ptr this_frame,
+i386_epilogue_frame_unwind_stop_reason (frame_info *this_frame,
 					void **this_cache)
 {
   struct i386_frame_cache *cache =
@@ -2295,7 +2295,7 @@ i386_epilogue_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-i386_epilogue_frame_this_id (frame_info_ptr this_frame,
+i386_epilogue_frame_this_id (frame_info *this_frame,
 			     void **this_cache,
 			     struct frame_id *this_id)
 {
@@ -2309,7 +2309,7 @@ i386_epilogue_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-i386_epilogue_frame_prev_register (frame_info_ptr this_frame,
+i386_epilogue_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -2391,7 +2391,7 @@ i386_in_stack_tramp_p (CORE_ADDR pc)
 
 static int
 i386_stack_tramp_frame_sniffer (const struct frame_unwind *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				void **this_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -2431,7 +2431,7 @@ i386_gen_return_address (struct gdbarch *gdbarch,
 /* Signal trampolines.  */
 
 static struct i386_frame_cache *
-i386_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
+i386_sigtramp_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -2480,7 +2480,7 @@ i386_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static enum unwind_stop_reason
-i386_sigtramp_frame_unwind_stop_reason (frame_info_ptr this_frame,
+i386_sigtramp_frame_unwind_stop_reason (frame_info *this_frame,
 					void **this_cache)
 {
   struct i386_frame_cache *cache =
@@ -2493,7 +2493,7 @@ i386_sigtramp_frame_unwind_stop_reason (frame_info_ptr this_frame,
 }
 
 static void
-i386_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+i386_sigtramp_frame_this_id (frame_info *this_frame, void **this_cache,
 			     struct frame_id *this_id)
 {
   struct i386_frame_cache *cache =
@@ -2509,7 +2509,7 @@ i386_sigtramp_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-i386_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+i386_sigtramp_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -2520,7 +2520,7 @@ i386_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 i386_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   gdbarch *arch = get_frame_arch (this_frame);
@@ -2562,7 +2562,7 @@ static const struct frame_unwind i386_sigtramp_frame_unwind =
 
 
 static CORE_ADDR
-i386_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+i386_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
 
@@ -2578,7 +2578,7 @@ static const struct frame_base i386_frame_base =
 };
 
 static struct frame_id
-i386_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+i386_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR fp;
 
@@ -3825,7 +3825,7 @@ i386_convert_register_p (struct gdbarch *gdbarch,
    return its contents in TO.  */
 
 static int
-i386_register_to_value (frame_info_ptr frame, int regnum,
+i386_register_to_value (frame_info *frame, int regnum,
 			struct type *type, gdb_byte *to,
 			int *optimizedp, int *unavailablep)
 {
@@ -4048,7 +4048,7 @@ i386_pe_skip_trampoline_code (frame_info_ptr frame,
    routine.  */
 
 int
-i386_sigtramp_p (frame_info_ptr this_frame)
+i386_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -4084,7 +4084,7 @@ i386_print_insn (bfd_vma pc, struct disassemble_info *info)
    routine.  */
 
 static int
-i386_svr4_sigtramp_p (frame_info_ptr this_frame)
+i386_svr4_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -4099,7 +4099,7 @@ i386_svr4_sigtramp_p (frame_info_ptr this_frame)
    address of the associated sigcontext (ucontext) structure.  */
 
 static CORE_ADDR
-i386_svr4_sigcontext_addr (frame_info_ptr this_frame)
+i386_svr4_sigcontext_addr (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index 0ae1ef62da7b..07d8bb45a0f4 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -223,10 +223,10 @@ struct i386_gdbarch_tdep : gdbarch_tdep_base
   CORE_ADDR sigtramp_end = 0;
 
   /* Detect sigtramp.  */
-  int (*sigtramp_p) (frame_info_ptr) = nullptr;
+  int (*sigtramp_p) (frame_info *) = nullptr;
 
   /* Get address of sigcontext for sigtramp.  */
-  CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
+  CORE_ADDR (*sigcontext_addr) (frame_info *) = nullptr;
 
   /* Offset of registers in `struct sigcontext'.  */
   int *sc_reg_offset = 0;
@@ -414,7 +414,7 @@ extern CORE_ADDR i386_thiscall_push_dummy_call (struct gdbarch *gdbarch,
 						bool thiscall);
 
 /* Return whether the THIS_FRAME corresponds to a sigtramp routine.  */
-extern int i386_sigtramp_p (frame_info_ptr this_frame);
+extern int i386_sigtramp_p (frame_info *this_frame);
 
 /* Return non-zero if REGNUM is a member of the specified group.  */
 extern int i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index 6b9baf5a10ec..6603792ed62b 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -345,7 +345,7 @@ i387_convert_register_p (struct gdbarch *gdbarch, int regnum,
    return its contents in TO.  */
 
 int
-i387_register_to_value (frame_info_ptr frame, int regnum,
+i387_register_to_value (frame_info *frame, int regnum,
 			struct type *type, gdb_byte *to,
 			int *optimizedp, int *unavailablep)
 {
diff --git a/gdb/i387-tdep.h b/gdb/i387-tdep.h
index 3b223067c5db..9a5eaecd8896 100644
--- a/gdb/i387-tdep.h
+++ b/gdb/i387-tdep.h
@@ -100,7 +100,7 @@ extern int i387_convert_register_p (struct gdbarch *gdbarch, int regnum,
 /* Read a value of type TYPE from register REGNUM in frame FRAME, and
    return its contents in TO.  */
 
-extern int i387_register_to_value (frame_info_ptr frame, int regnum,
+extern int i387_register_to_value (frame_info *frame, int regnum,
 				   struct type *type, gdb_byte *to,
 				   int *optimizedp, int *unavailablep);
 
diff --git a/gdb/ia64-libunwind-tdep.c b/gdb/ia64-libunwind-tdep.c
index 6fc75629631d..5cdde79211ff 100644
--- a/gdb/ia64-libunwind-tdep.c
+++ b/gdb/ia64-libunwind-tdep.c
@@ -153,7 +153,7 @@ libunwind_frame_set_descr (struct gdbarch *gdbarch,
 }
 
 static struct libunwind_frame_cache *
-libunwind_frame_cache (frame_info_ptr this_frame, void **this_cache)
+libunwind_frame_cache (frame_info *this_frame, void **this_cache)
 {
   unw_accessors_t *acc;
   unw_addr_space_t as;
@@ -228,7 +228,7 @@ libunwind_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 void
-libunwind_frame_dealloc_cache (frame_info_ptr self, void *this_cache)
+libunwind_frame_dealloc_cache (frame_info *self, void *this_cache)
 {
   struct libunwind_frame_cache *cache
     = (struct libunwind_frame_cache *) this_cache;
@@ -247,7 +247,7 @@ libunwind_find_dyn_list (unw_addr_space_t as, unw_dyn_info_t *di, void *arg)
    libunwind frame unwinding.  */
 int
 libunwind_frame_sniffer (const struct frame_unwind *self,
-			 frame_info_ptr this_frame, void **this_cache)
+			 frame_info *this_frame, void **this_cache)
 {
   unw_cursor_t cursor;
   unw_accessors_t *acc;
@@ -292,7 +292,7 @@ libunwind_frame_sniffer (const struct frame_unwind *self,
 }
 
 void
-libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+libunwind_frame_this_id (frame_info *this_frame, void **this_cache,
 			 struct frame_id *this_id)
 {
   struct libunwind_frame_cache *cache =
@@ -303,7 +303,7 @@ libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 struct value *
-libunwind_frame_prev_register (frame_info_ptr this_frame,
+libunwind_frame_prev_register (frame_info *this_frame,
 			       void **this_cache, int regnum)
 {
   struct libunwind_frame_cache *cache =
@@ -387,7 +387,7 @@ libunwind_search_unwind_table (void *as, long ip, void *di,
 /* Verify if we are in a sigtramp frame and we can use libunwind to unwind.  */
 int
 libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				  frame_info_ptr this_frame,
+				  frame_info *this_frame,
 				  void **this_cache)
 {
   unw_cursor_t cursor;
diff --git a/gdb/ia64-libunwind-tdep.h b/gdb/ia64-libunwind-tdep.h
index a4e20f6eb3d8..4f19394e6c88 100644
--- a/gdb/ia64-libunwind-tdep.h
+++ b/gdb/ia64-libunwind-tdep.h
@@ -22,7 +22,6 @@
 #ifndef IA64_LIBUNWIND_TDEP_H
 #define IA64_LIBUNWIND_TDEP_H 1
 
-class frame_info_ptr;
 struct frame_id;
 struct regcache;
 struct gdbarch;
@@ -48,21 +47,21 @@ struct libunwind_descr
 };
 
 int libunwind_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_cache);
 			  
 int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				      frame_info_ptr this_frame,
+				      frame_info *this_frame,
 				      void **this_cache);
 
 void libunwind_frame_set_descr (struct gdbarch *arch,
 				struct libunwind_descr *descr);
 
-void libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+void libunwind_frame_this_id (frame_info *this_frame, void **this_cache,
 			      struct frame_id *this_id);
-struct value *libunwind_frame_prev_register (frame_info_ptr this_frame,
+struct value *libunwind_frame_prev_register (frame_info *this_frame,
 					     void **this_cache, int regnum);
-void libunwind_frame_dealloc_cache (frame_info_ptr self, void *cache);
+void libunwind_frame_dealloc_cache (frame_info *self, void *cache);
 
 int libunwind_is_initialized (void);
 
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 519c956e1697..902e529f028b 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -1216,7 +1216,7 @@ ia64_convert_register_p (struct gdbarch *gdbarch, int regno, struct type *type)
 }
 
 static int
-ia64_register_to_value (frame_info_ptr frame, int regnum,
+ia64_register_to_value (frame_info *frame, int regnum,
 			struct type *valtype, gdb_byte *out,
 			int *optimizedp, int *unavailablep)
 {
@@ -1357,7 +1357,7 @@ ia64_alloc_frame_cache (void)
 
 static CORE_ADDR
 examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc,
-		  frame_info_ptr this_frame,
+		  frame_info *this_frame,
 		  struct ia64_frame_cache *cache)
 {
   CORE_ADDR next_pc;
@@ -1838,7 +1838,7 @@ ia64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 /* Normal frames.  */
 
 static struct ia64_frame_cache *
-ia64_frame_cache (frame_info_ptr this_frame, void **this_cache)
+ia64_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1883,7 +1883,7 @@ ia64_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-ia64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+ia64_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1900,11 +1900,11 @@ ia64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 		paddress (gdbarch, this_id->code_addr),
 		paddress (gdbarch, this_id->stack_addr),
 		paddress (gdbarch, cache->bsp),
-		host_address_to_string (this_frame.get ()));
+		host_address_to_string (this_frame));
 }
 
 static struct value *
-ia64_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+ia64_frame_prev_register (frame_info *this_frame, void **this_cache,
 			  int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2172,7 +2172,7 @@ static const struct frame_unwind ia64_frame_unwind =
 /* Signal trampolines.  */
 
 static void
-ia64_sigtramp_frame_init_saved_regs (frame_info_ptr this_frame,
+ia64_sigtramp_frame_init_saved_regs (frame_info *this_frame,
 				     struct ia64_frame_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2226,7 +2226,7 @@ ia64_sigtramp_frame_init_saved_regs (frame_info_ptr this_frame,
 }
 
 static struct ia64_frame_cache *
-ia64_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
+ia64_sigtramp_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2257,7 +2257,7 @@ ia64_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-ia64_sigtramp_frame_this_id (frame_info_ptr this_frame,
+ia64_sigtramp_frame_this_id (frame_info *this_frame,
 			     void **this_cache, struct frame_id *this_id)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2274,11 +2274,11 @@ ia64_sigtramp_frame_this_id (frame_info_ptr this_frame,
 		paddress (gdbarch, this_id->code_addr),
 		paddress (gdbarch, this_id->stack_addr),
 		paddress (gdbarch, cache->bsp),
-		host_address_to_string (this_frame.get ()));
+		host_address_to_string (this_frame));
 }
 
 static struct value *
-ia64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+ia64_sigtramp_frame_prev_register (frame_info *this_frame,
 				   void **this_cache, int regnum)
 {
   struct ia64_frame_cache *cache =
@@ -2331,7 +2331,7 @@ ia64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 ia64_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_cache)
 {
   gdbarch *arch = get_frame_arch (this_frame);
@@ -2361,7 +2361,7 @@ static const struct frame_unwind ia64_sigtramp_frame_unwind =
 
 
 static CORE_ADDR
-ia64_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+ia64_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct ia64_frame_cache *cache = ia64_frame_cache (this_frame, this_cache);
 
@@ -2890,7 +2890,7 @@ ia64_get_dyn_info_list (unw_addr_space_t as,
 /* Frame interface functions for libunwind.  */
 
 static void
-ia64_libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+ia64_libunwind_frame_this_id (frame_info *this_frame, void **this_cache,
 			      struct frame_id *this_id)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2924,7 +2924,7 @@ ia64_libunwind_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-ia64_libunwind_frame_prev_register (frame_info_ptr this_frame,
+ia64_libunwind_frame_prev_register (frame_info *this_frame,
 				    void **this_cache, int regnum)
 {
   int reg = regnum;
@@ -3020,7 +3020,7 @@ static const struct frame_unwind ia64_libunwind_frame_unwind =
 };
 
 static void
-ia64_libunwind_sigtramp_frame_this_id (frame_info_ptr this_frame,
+ia64_libunwind_sigtramp_frame_this_id (frame_info *this_frame,
 				       void **this_cache,
 				       struct frame_id *this_id)
 {
@@ -3056,7 +3056,7 @@ ia64_libunwind_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-ia64_libunwind_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+ia64_libunwind_sigtramp_frame_prev_register (frame_info *this_frame,
 					     void **this_cache, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3863,7 +3863,7 @@ static const struct ia64_infcall_ops ia64_infcall_ops =
 };
 
 static struct frame_id
-ia64_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+ia64_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[8];
@@ -3885,7 +3885,7 @@ ia64_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
 }
 
 static CORE_ADDR 
-ia64_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+ia64_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[8];
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 5f4ab66609ac..5f9dd34b9f43 100644
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -150,7 +150,7 @@ clear_inline_frame_state (thread_info *thread)
 }
 
 static void
-inline_frame_this_id (frame_info_ptr this_frame,
+inline_frame_this_id (frame_info *this_frame,
 		      void **this_cache,
 		      struct frame_id *this_id)
 {
@@ -186,7 +186,7 @@ inline_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-inline_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+inline_frame_prev_register (frame_info *this_frame, void **this_cache,
 			    int regnum)
 {
   /* Use get_frame_register_value instead of
@@ -208,13 +208,13 @@ inline_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
 
 static int
 inline_frame_sniffer (const struct frame_unwind *self,
-		      frame_info_ptr this_frame,
+		      frame_info *this_frame,
 		      void **this_cache)
 {
   CORE_ADDR this_pc;
   const struct block *frame_block, *cur_block;
   int depth;
-  frame_info_ptr next_frame;
+  frame_info *next_frame;
   struct inline_state *state = find_inline_frame_state (inferior_thread ());
 
   this_pc = get_frame_address_in_block (this_frame);
@@ -441,9 +441,9 @@ inline_skipped_symbol (thread_info *thread)
    skip_inline_frames).  */
 
 int
-frame_inlined_callees (frame_info_ptr this_frame)
+frame_inlined_callees (frame_info *this_frame)
 {
-  frame_info_ptr next_frame;
+  frame_info *next_frame;
   int inline_count = 0;
 
   /* First count how many inlined functions at this PC have frames
diff --git a/gdb/inline-frame.h b/gdb/inline-frame.h
index 211a9eca956f..9506f6f30fcc 100644
--- a/gdb/inline-frame.h
+++ b/gdb/inline-frame.h
@@ -20,7 +20,6 @@
 #if !defined (INLINE_FRAME_H)
 #define INLINE_FRAME_H 1
 
-class frame_info_ptr;
 struct frame_unwind;
 struct bpstat;
 struct process_stratum_target;
@@ -68,6 +67,6 @@ struct symbol *inline_skipped_symbol (thread_info *thread);
    the callees may not have associated frames (see
    skip_inline_frames).  */
 
-int frame_inlined_callees (frame_info_ptr this_frame);
+int frame_inlined_callees (frame_info *this_frame);
 
 #endif /* !defined (INLINE_FRAME_H) */
diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c
index 5861160243f7..10d0c3919bb8 100644
--- a/gdb/iq2000-tdep.c
+++ b/gdb/iq2000-tdep.c
@@ -198,7 +198,7 @@ static CORE_ADDR
 iq2000_scan_prologue (struct gdbarch *gdbarch,
 		      CORE_ADDR scan_start,
 		      CORE_ADDR scan_end,
-		      frame_info_ptr fi,
+		      frame_info *fi,
 		      struct iq2000_frame_cache *cache)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -358,7 +358,7 @@ iq2000_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 }
 
 static struct iq2000_frame_cache *
-iq2000_frame_cache (frame_info_ptr this_frame, void **this_cache)
+iq2000_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct iq2000_frame_cache *cache;
@@ -391,7 +391,7 @@ iq2000_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static struct value *
-iq2000_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+iq2000_frame_prev_register (frame_info *this_frame, void **this_cache,
 			    int regnum)
 {
   struct iq2000_frame_cache *cache = iq2000_frame_cache (this_frame,
@@ -411,7 +411,7 @@ iq2000_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
 }
 
 static void
-iq2000_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+iq2000_frame_this_id (frame_info *this_frame, void **this_cache,
 		      struct frame_id *this_id)
 {
   struct iq2000_frame_cache *cache = iq2000_frame_cache (this_frame,
@@ -435,7 +435,7 @@ static const struct frame_unwind iq2000_frame_unwind = {
 };
 
 static CORE_ADDR
-iq2000_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+iq2000_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct iq2000_frame_cache *cache = iq2000_frame_cache (this_frame,
 							 this_cache);
diff --git a/gdb/jit.c b/gdb/jit.c
index f383e105b0eb..971232f31a1d 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -930,7 +930,7 @@ struct jit_unwind_private
   std::unique_ptr<detached_regcache> regcache;
 
   /* The frame being unwound.  */
-  frame_info_ptr this_frame;
+  frame_info *this_frame;
 };
 
 /* Sets the value of a particular register in this frame.  */
@@ -1007,7 +1007,7 @@ jit_dealloc_cache (frame_info *this_frame, void *cache)
 
 static int
 jit_frame_sniffer (const struct frame_unwind *self,
-		   frame_info_ptr this_frame, void **cache)
+		   frame_info *this_frame, void **cache)
 {
   struct jit_unwind_private *priv_data;
   struct gdb_unwind_callbacks callbacks;
@@ -1042,7 +1042,7 @@ jit_frame_sniffer (const struct frame_unwind *self,
 
   jit_debug_printf ("Could not unwind frame using JIT reader.");
 
-  jit_dealloc_cache (this_frame.get (), *cache);
+  jit_dealloc_cache (this_frame, *cache);
   *cache = NULL;
 
   return 0;
@@ -1053,7 +1053,7 @@ jit_frame_sniffer (const struct frame_unwind *self,
    the loaded plugin.  */
 
 static void
-jit_frame_this_id (frame_info_ptr this_frame, void **cache,
+jit_frame_this_id (frame_info *this_frame, void **cache,
 		   struct frame_id *this_id)
 {
   struct jit_unwind_private priv;
@@ -1082,7 +1082,7 @@ jit_frame_this_id (frame_info_ptr this_frame, void **cache,
    the register from the cache.  */
 
 static struct value *
-jit_frame_prev_register (frame_info_ptr this_frame, void **cache, int reg)
+jit_frame_prev_register (frame_info *this_frame, void **cache, int reg)
 {
   struct jit_unwind_private *priv = (struct jit_unwind_private *) *cache;
   struct gdbarch *gdbarch;
diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
index dd601320c3a3..101466a0edb3 100644
--- a/gdb/lm32-tdep.c
+++ b/gdb/lm32-tdep.c
@@ -375,7 +375,7 @@ lm32_return_value (struct gdbarch *gdbarch, struct value *function,
    for it IS the sp for the next frame.  */
 
 static struct lm32_frame_cache *
-lm32_frame_cache (frame_info_ptr this_frame, void **this_prologue_cache)
+lm32_frame_cache (frame_info *this_frame, void **this_prologue_cache)
 {
   CORE_ADDR current_pc;
   ULONGEST prev_sp;
@@ -421,7 +421,7 @@ lm32_frame_cache (frame_info_ptr this_frame, void **this_prologue_cache)
 }
 
 static void
-lm32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+lm32_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct lm32_frame_cache *cache = lm32_frame_cache (this_frame, this_cache);
@@ -434,7 +434,7 @@ lm32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-lm32_frame_prev_register (frame_info_ptr this_frame,
+lm32_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct lm32_frame_cache *info;
@@ -454,7 +454,7 @@ static const struct frame_unwind lm32_frame_unwind = {
 };
 
 static CORE_ADDR
-lm32_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+lm32_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct lm32_frame_cache *info = lm32_frame_cache (this_frame, this_cache);
 
diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c
index f4559b65b33e..e424708c3d13 100644
--- a/gdb/loongarch-linux-tdep.c
+++ b/gdb/loongarch-linux-tdep.c
@@ -222,7 +222,7 @@ const struct regset loongarch_fpregset =
 
 static void
 loongarch_linux_rt_sigframe_init (const struct tramp_frame *self,
-				  frame_info_ptr this_frame,
+				  frame_info *this_frame,
 				  struct trad_frame_cache *this_cache,
 				  CORE_ADDR func)
 {
diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c
index d727bc85062d..aa6ce80018eb 100644
--- a/gdb/loongarch-tdep.c
+++ b/gdb/loongarch-tdep.c
@@ -397,7 +397,7 @@ loongarch_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 /* Generate, or return the cached frame cache for frame unwinder.  */
 
 static struct trad_frame_cache *
-loongarch_frame_cache (frame_info_ptr this_frame, void **this_cache)
+loongarch_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct trad_frame_cache *cache;
   CORE_ADDR pc;
@@ -419,7 +419,7 @@ loongarch_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the this_id callback for frame unwinder.  */
 
 static void
-loongarch_frame_this_id (frame_info_ptr this_frame, void **prologue_cache,
+loongarch_frame_this_id (frame_info *this_frame, void **prologue_cache,
 			 struct frame_id *this_id)
 {
   struct trad_frame_cache *info;
@@ -431,7 +431,7 @@ loongarch_frame_this_id (frame_info_ptr this_frame, void **prologue_cache,
 /* Implement the prev_register callback for frame unwinder.  */
 
 static struct value *
-loongarch_frame_prev_register (frame_info_ptr this_frame,
+loongarch_frame_prev_register (frame_info *this_frame,
 			       void **prologue_cache, int regnum)
 {
   struct trad_frame_cache *info;
diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
index f5101635aedd..5708e12c4a22 100644
--- a/gdb/m32c-tdep.c
+++ b/gdb/m32c-tdep.c
@@ -1851,7 +1851,7 @@ m32c_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip)
 /* Stack unwinding.  */
 
 static struct m32c_prologue *
-m32c_analyze_frame_prologue (frame_info_ptr this_frame,
+m32c_analyze_frame_prologue (frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   if (! *this_prologue_cache)
@@ -1875,7 +1875,7 @@ m32c_analyze_frame_prologue (frame_info_ptr this_frame,
 
 
 static CORE_ADDR
-m32c_frame_base (frame_info_ptr this_frame,
+m32c_frame_base (frame_info *this_frame,
 		void **this_prologue_cache)
 {
   struct m32c_prologue *p
@@ -1915,7 +1915,7 @@ m32c_frame_base (frame_info_ptr this_frame,
 
 
 static void
-m32c_this_id (frame_info_ptr this_frame,
+m32c_this_id (frame_info *this_frame,
 	      void **this_prologue_cache,
 	      struct frame_id *this_id)
 {
@@ -1928,7 +1928,7 @@ m32c_this_id (frame_info_ptr this_frame,
 
 
 static struct value *
-m32c_prev_register (frame_info_ptr this_frame,
+m32c_prev_register (frame_info *this_frame,
 		    void **this_prologue_cache, int regnum)
 {
   gdbarch *arch = get_frame_arch (this_frame);
diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c
index 7174a10b021c..e4290f3ce5dd 100644
--- a/gdb/m32r-linux-tdep.c
+++ b/gdb/m32r-linux-tdep.c
@@ -85,7 +85,7 @@ static const gdb_byte linux_sigtramp_code[] = {
    the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-m32r_linux_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame)
+m32r_linux_sigtramp_start (CORE_ADDR pc, frame_info *this_frame)
 {
   gdb_byte buf[4];
 
@@ -133,7 +133,7 @@ static const gdb_byte linux_rt_sigtramp_code[] = {
    of the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-m32r_linux_rt_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame)
+m32r_linux_rt_sigtramp_start (CORE_ADDR pc, frame_info *this_frame)
 {
   gdb_byte buf[4];
 
@@ -173,7 +173,7 @@ m32r_linux_rt_sigtramp_start (CORE_ADDR pc, frame_info_ptr this_frame)
 
 static int
 m32r_linux_pc_in_sigtramp (CORE_ADDR pc, const char *name,
-			   frame_info_ptr this_frame)
+			   frame_info *this_frame)
 {
   /* If we have NAME, we can optimize the search.  The trampolines are
      named __restore and __restore_rt.  However, they aren't dynamically
@@ -223,7 +223,7 @@ struct m32r_frame_cache
 };
 
 static struct m32r_frame_cache *
-m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
+m32r_linux_sigtramp_frame_cache (frame_info *this_frame,
 				 void **this_cache)
 {
   struct m32r_frame_cache *cache;
@@ -266,7 +266,7 @@ m32r_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-m32r_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
+m32r_linux_sigtramp_frame_this_id (frame_info *this_frame,
 				   void **this_cache,
 				   struct frame_id *this_id)
 {
@@ -277,7 +277,7 @@ m32r_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-m32r_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+m32r_linux_sigtramp_frame_prev_register (frame_info *this_frame,
 					 void **this_cache, int regnum)
 {
   struct m32r_frame_cache *cache =
@@ -288,7 +288,7 @@ m32r_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 m32r_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index fc304757a606..e290c05df5cf 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -516,7 +516,7 @@ struct m32r_unwind_cache
    for it IS the sp for the next frame.  */
 
 static struct m32r_unwind_cache *
-m32r_frame_unwind_cache (frame_info_ptr this_frame,
+m32r_frame_unwind_cache (frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   CORE_ADDR pc, scan_limit;
@@ -793,7 +793,7 @@ m32r_return_value (struct gdbarch *gdbarch, struct value *function,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-m32r_frame_this_id (frame_info_ptr this_frame,
+m32r_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache, struct frame_id *this_id)
 {
   struct m32r_unwind_cache *info
@@ -823,7 +823,7 @@ m32r_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-m32r_frame_prev_register (frame_info_ptr this_frame,
+m32r_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct m32r_unwind_cache *info
@@ -842,7 +842,7 @@ static const struct frame_unwind m32r_frame_unwind = {
 };
 
 static CORE_ADDR
-m32r_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+m32r_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct m32r_unwind_cache *info
     = m32r_frame_unwind_cache (this_frame, this_cache);
diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c
index c48fe4424b64..4ae9a97f7e57 100644
--- a/gdb/m68hc11-tdep.c
+++ b/gdb/m68hc11-tdep.c
@@ -777,7 +777,7 @@ m68hc11_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    for it IS the sp for the next frame.  */
 
 static struct m68hc11_unwind_cache *
-m68hc11_frame_unwind_cache (frame_info_ptr this_frame,
+m68hc11_frame_unwind_cache (frame_info *this_frame,
 			    void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -874,7 +874,7 @@ m68hc11_frame_unwind_cache (frame_info_ptr this_frame,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-m68hc11_frame_this_id (frame_info_ptr this_frame,
+m68hc11_frame_this_id (frame_info *this_frame,
 		       void **this_prologue_cache,
 		       struct frame_id *this_id)
 {
@@ -899,7 +899,7 @@ m68hc11_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-m68hc11_frame_prev_register (frame_info_ptr this_frame,
+m68hc11_frame_prev_register (frame_info *this_frame,
 			     void **this_prologue_cache, int regnum)
 {
   struct value *value;
@@ -947,7 +947,7 @@ static const struct frame_unwind m68hc11_frame_unwind = {
 };
 
 static CORE_ADDR
-m68hc11_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+m68hc11_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct m68hc11_unwind_cache *info
     = m68hc11_frame_unwind_cache (this_frame, this_cache);
@@ -956,7 +956,7 @@ m68hc11_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 }
 
 static CORE_ADDR
-m68hc11_frame_args_address (frame_info_ptr this_frame, void **this_cache)
+m68hc11_frame_args_address (frame_info *this_frame, void **this_cache)
 {
   CORE_ADDR addr;
   struct m68hc11_unwind_cache *info
@@ -983,7 +983,7 @@ static const struct frame_base m68hc11_frame_base = {
    save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint.  */
 
 static struct frame_id
-m68hc11_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+m68hc11_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   ULONGEST tos;
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/m68k-linux-tdep.c b/gdb/m68k-linux-tdep.c
index 9c6a41609edb..2b2950b75fb3 100644
--- a/gdb/m68k-linux-tdep.c
+++ b/gdb/m68k-linux-tdep.c
@@ -61,7 +61,7 @@
    non-RT and RT signal trampolines.  */
 
 static int
-m68k_linux_pc_in_sigtramp (frame_info_ptr this_frame)
+m68k_linux_pc_in_sigtramp (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -219,7 +219,7 @@ m68k_linux_inferior_created (inferior *inf)
 }
 
 static struct m68k_linux_sigtramp_info
-m68k_linux_get_sigtramp_info (frame_info_ptr this_frame)
+m68k_linux_get_sigtramp_info (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -248,7 +248,7 @@ m68k_linux_get_sigtramp_info (frame_info_ptr this_frame)
 /* Signal trampolines.  */
 
 static struct trad_frame_cache *
-m68k_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
+m68k_linux_sigtramp_frame_cache (frame_info *this_frame,
 				 void **this_cache)
 {
   struct frame_id this_id;
@@ -286,7 +286,7 @@ m68k_linux_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-m68k_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
+m68k_linux_sigtramp_frame_this_id (frame_info *this_frame,
 				   void **this_cache,
 				   struct frame_id *this_id)
 {
@@ -296,7 +296,7 @@ m68k_linux_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-m68k_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+m68k_linux_sigtramp_frame_prev_register (frame_info *this_frame,
 					 void **this_cache,
 					 int regnum)
 {
@@ -308,7 +308,7 @@ m68k_linux_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 m68k_linux_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   void **this_prologue_cache)
 {
   return m68k_linux_pc_in_sigtramp (this_frame);
diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index c0a331188147..6901fd2ca1b5 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -202,7 +202,7 @@ m68k_convert_register_p (struct gdbarch *gdbarch,
    return its contents in TO.  */
 
 static int
-m68k_register_to_value (frame_info_ptr frame, int regnum,
+m68k_register_to_value (frame_info *frame, int regnum,
 			struct type *type, gdb_byte *to,
 			int *optimizedp, int *unavailablep)
 {
@@ -896,7 +896,7 @@ m68k_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 }
 
 static CORE_ADDR
-m68k_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+m68k_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[8];
 
@@ -907,7 +907,7 @@ m68k_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Normal frames.  */
 
 static struct m68k_frame_cache *
-m68k_frame_cache (frame_info_ptr this_frame, void **this_cache)
+m68k_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -972,7 +972,7 @@ m68k_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-m68k_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+m68k_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
@@ -986,7 +986,7 @@ m68k_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-m68k_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+m68k_frame_prev_register (frame_info *this_frame, void **this_cache,
 			  int regnum)
 {
   struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
@@ -1015,7 +1015,7 @@ static const struct frame_unwind m68k_frame_unwind =
 };
 
 static CORE_ADDR
-m68k_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+m68k_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
 
@@ -1031,7 +1031,7 @@ static const struct frame_base m68k_frame_base =
 };
 
 static struct frame_id
-m68k_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+m68k_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR fp;
 
diff --git a/gdb/m68k-tdep.h b/gdb/m68k-tdep.h
index e22d624adaa8..bbe925c4577b 100644
--- a/gdb/m68k-tdep.h
+++ b/gdb/m68k-tdep.h
@@ -22,8 +22,6 @@
 
 #include "gdbarch.h"
 
-class frame_info_ptr;
-
 /* Register numbers of various important registers.  */
 
 enum m68k_regnum
diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
index a6416085fe4f..86f98803ba98 100644
--- a/gdb/mep-tdep.c
+++ b/gdb/mep-tdep.c
@@ -1910,7 +1910,7 @@ typedef BP_MANIPULATION (mep_break_insn) mep_breakpoint;
 
 
 static struct mep_prologue *
-mep_analyze_frame_prologue (frame_info_ptr this_frame,
+mep_analyze_frame_prologue (frame_info *this_frame,
 			    void **this_prologue_cache)
 {
   if (! *this_prologue_cache)
@@ -1940,7 +1940,7 @@ mep_analyze_frame_prologue (frame_info_ptr this_frame,
 /* Given the next frame and a prologue cache, return this frame's
    base.  */
 static CORE_ADDR
-mep_frame_base (frame_info_ptr this_frame,
+mep_frame_base (frame_info *this_frame,
 		void **this_prologue_cache)
 {
   struct mep_prologue *p
@@ -1968,7 +1968,7 @@ mep_frame_base (frame_info_ptr this_frame,
 
 
 static void
-mep_frame_this_id (frame_info_ptr this_frame,
+mep_frame_this_id (frame_info *this_frame,
 		   void **this_prologue_cache,
 		   struct frame_id *this_id)
 {
@@ -1978,7 +1978,7 @@ mep_frame_this_id (frame_info_ptr this_frame,
 
 
 static struct value *
-mep_frame_prev_register (frame_info_ptr this_frame,
+mep_frame_prev_register (frame_info *this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   struct mep_prologue *p
diff --git a/gdb/microblaze-linux-tdep.c b/gdb/microblaze-linux-tdep.c
index 768889a74805..7ed79f13db86 100644
--- a/gdb/microblaze-linux-tdep.c
+++ b/gdb/microblaze-linux-tdep.c
@@ -62,7 +62,7 @@ microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
 }
 
 static void
-microblaze_linux_sigtramp_cache (frame_info_ptr next_frame,
+microblaze_linux_sigtramp_cache (frame_info *next_frame,
 				 struct trad_frame_cache *this_cache,
 				 CORE_ADDR func, LONGEST offset,
 				 int bias)
@@ -90,7 +90,7 @@ microblaze_linux_sigtramp_cache (frame_info_ptr next_frame,
 
 static void
 microblaze_linux_sighandler_cache_init (const struct tramp_frame *self,
-					frame_info_ptr next_frame,
+					frame_info *next_frame,
 					struct trad_frame_cache *this_cache,
 					CORE_ADDR func)
 {
diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
index efa1daaa7fcd..8de2ae9ef069 100644
--- a/gdb/microblaze-tdep.c
+++ b/gdb/microblaze-tdep.c
@@ -368,7 +368,7 @@ microblaze_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc,
 }
 
 static CORE_ADDR
-microblaze_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+microblaze_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[4];
   CORE_ADDR pc;
@@ -417,7 +417,7 @@ microblaze_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 /* Normal frames.  */
 
 static struct microblaze_frame_cache *
-microblaze_frame_cache (frame_info_ptr next_frame, void **this_cache)
+microblaze_frame_cache (frame_info *next_frame, void **this_cache)
 {
   struct microblaze_frame_cache *cache;
   struct gdbarch *gdbarch = get_frame_arch (next_frame);
@@ -443,7 +443,7 @@ microblaze_frame_cache (frame_info_ptr next_frame, void **this_cache)
 }
 
 static void
-microblaze_frame_this_id (frame_info_ptr next_frame, void **this_cache,
+microblaze_frame_this_id (frame_info *next_frame, void **this_cache,
 		       struct frame_id *this_id)
 {
   struct microblaze_frame_cache *cache =
@@ -457,7 +457,7 @@ microblaze_frame_this_id (frame_info_ptr next_frame, void **this_cache,
 }
 
 static struct value *
-microblaze_frame_prev_register (frame_info_ptr this_frame,
+microblaze_frame_prev_register (frame_info *this_frame,
 				 void **this_cache, int regnum)
 {
   struct microblaze_frame_cache *cache =
@@ -490,7 +490,7 @@ static const struct frame_unwind microblaze_frame_unwind =
 };
 
 static CORE_ADDR
-microblaze_frame_base_address (frame_info_ptr next_frame,
+microblaze_frame_base_address (frame_info *next_frame,
 			       void **this_cache)
 {
   struct microblaze_frame_cache *cache =
diff --git a/gdb/mips-fbsd-tdep.c b/gdb/mips-fbsd-tdep.c
index 0de1007d74fc..2ad39eb7380a 100644
--- a/gdb/mips-fbsd-tdep.c
+++ b/gdb/mips-fbsd-tdep.c
@@ -275,7 +275,7 @@ mips_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 mips_fbsd_sigframe_init (const struct tramp_frame *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 struct trad_frame_cache *cache,
 			 CORE_ADDR func)
 {
@@ -367,7 +367,7 @@ static const struct tramp_frame mips_fbsd_sigframe =
 
 static void
 mips64_fbsd_sigframe_init (const struct tramp_frame *self,
-			   frame_info_ptr this_frame,
+			   frame_info *this_frame,
 			   struct trad_frame_cache *cache,
 			   CORE_ADDR func)
 {
diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c
index 1b3b5f88edbc..926966dc6e7f 100644
--- a/gdb/mips-linux-tdep.c
+++ b/gdb/mips-linux-tdep.c
@@ -713,21 +713,21 @@ mips_linux_skip_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
    efficient way, but simplest.  First, declare all the unwinders.  */
 
 static void mips_linux_o32_sigframe_init (const struct tramp_frame *self,
-					  frame_info_ptr this_frame,
+					  frame_info *this_frame,
 					  struct trad_frame_cache *this_cache,
 					  CORE_ADDR func);
 
 static void mips_linux_n32n64_sigframe_init (const struct tramp_frame *self,
-					     frame_info_ptr this_frame,
+					     frame_info *this_frame,
 					     struct trad_frame_cache *this_cache,
 					     CORE_ADDR func);
 
 static int mips_linux_sigframe_validate (const struct tramp_frame *self,
-					 frame_info_ptr this_frame,
+					 frame_info *this_frame,
 					 CORE_ADDR *pc);
 
 static int micromips_linux_sigframe_validate (const struct tramp_frame *self,
-					      frame_info_ptr this_frame,
+					      frame_info *this_frame,
 					      CORE_ADDR *pc);
 
 #define MIPS_NR_LINUX 4000
@@ -958,7 +958,7 @@ static const struct tramp_frame micromips_linux_n64_rt_sigframe = {
 
 static void
 mips_linux_o32_sigframe_init (const struct tramp_frame *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      struct trad_frame_cache *this_cache,
 			      CORE_ADDR func)
 {
@@ -1153,7 +1153,7 @@ mips_linux_o32_sigframe_init (const struct tramp_frame *self,
 
 static void
 mips_linux_n32n64_sigframe_init (const struct tramp_frame *self,
-				 frame_info_ptr this_frame,
+				 frame_info *this_frame,
 				 struct trad_frame_cache *this_cache,
 				 CORE_ADDR func)
 {
@@ -1238,7 +1238,7 @@ mips_linux_n32n64_sigframe_init (const struct tramp_frame *self,
 
 static int
 mips_linux_sigframe_validate (const struct tramp_frame *self,
-			      frame_info_ptr this_frame,
+			      frame_info *this_frame,
 			      CORE_ADDR *pc)
 {
   return mips_pc_is_mips (*pc);
@@ -1248,7 +1248,7 @@ mips_linux_sigframe_validate (const struct tramp_frame *self,
 
 static int
 micromips_linux_sigframe_validate (const struct tramp_frame *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   CORE_ADDR *pc)
 {
   if (mips_pc_is_micromips (get_frame_arch (this_frame), *pc))
diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
index 7d69effd704c..b0ca429c543c 100644
--- a/gdb/mips-sde-tdep.c
+++ b/gdb/mips-sde-tdep.c
@@ -34,7 +34,7 @@
    in the SDE frame unwinder.  */
 
 static struct trad_frame_cache *
-mips_sde_frame_cache (frame_info_ptr this_frame, void **this_cache)
+mips_sde_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   const struct mips_regnum *regs = mips_regnum (gdbarch);
@@ -122,7 +122,7 @@ mips_sde_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the this_id function for the SDE frame unwinder.  */
 
 static void
-mips_sde_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+mips_sde_frame_this_id (frame_info *this_frame, void **this_cache,
 			struct frame_id *this_id)
 {
   struct trad_frame_cache *this_trad_cache
@@ -134,7 +134,7 @@ mips_sde_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement the prev_register function for the SDE frame unwinder.  */
 
 static struct value *
-mips_sde_frame_prev_register (frame_info_ptr this_frame,
+mips_sde_frame_prev_register (frame_info *this_frame,
 			      void **this_cache,
 			      int prev_regnum)
 {
@@ -148,7 +148,7 @@ mips_sde_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 mips_sde_frame_sniffer (const struct frame_unwind *self,
-			frame_info_ptr this_frame,
+			frame_info *this_frame,
 			void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -177,7 +177,7 @@ static const struct frame_unwind mips_sde_frame_unwind =
    for the normal unwinder.  */
 
 static CORE_ADDR
-mips_sde_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+mips_sde_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct trad_frame_cache *this_trad_cache
     = mips_sde_frame_cache (this_frame, this_cache);
@@ -194,7 +194,7 @@ static const struct frame_base mips_sde_frame_base =
 };
 
 static const struct frame_base *
-mips_sde_frame_base_sniffer (frame_info_ptr this_frame)
+mips_sde_frame_base_sniffer (frame_info *this_frame)
 {
   if (mips_sde_frame_sniffer (&mips_sde_frame_unwind, this_frame, NULL))
     return &mips_sde_frame_base;
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 8c1643585f4c..bb7362efaa00 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -940,7 +940,7 @@ mips_convert_register_p (struct gdbarch *gdbarch,
 }
 
 static int
-mips_register_to_value (frame_info_ptr frame, int regnum,
+mips_register_to_value (frame_info *frame, int regnum,
 			struct type *type, gdb_byte *to,
 			int *optimizedp, int *unavailablep)
 {
@@ -1402,7 +1402,7 @@ mips_read_pc (readable_regcache *regcache)
 }
 
 static CORE_ADDR
-mips_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+mips_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   CORE_ADDR pc;
 
@@ -1424,7 +1424,7 @@ mips_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 }
 
 static CORE_ADDR
-mips_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+mips_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   return frame_unwind_register_signed
 	   (next_frame, gdbarch_num_regs (gdbarch) + MIPS_SP_REGNUM);
@@ -1436,7 +1436,7 @@ mips_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
    breakpoint.  */
 
 static struct frame_id
-mips_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+mips_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   return frame_id_build
 	   (get_frame_register_signed (this_frame,
@@ -2519,7 +2519,7 @@ mips16_get_imm (unsigned short prev_inst,	/* previous instruction */
 static CORE_ADDR
 mips16_scan_prologue (struct gdbarch *gdbarch,
 		      CORE_ADDR start_pc, CORE_ADDR limit_pc,
-		      frame_info_ptr this_frame,
+		      frame_info *this_frame,
 		      struct mips_frame_cache *this_cache)
 {
   int prev_non_prologue_insn = 0;
@@ -2855,7 +2855,7 @@ mips16_scan_prologue (struct gdbarch *gdbarch,
    mips_insn32 unwinder.  */
 
 static struct mips_frame_cache *
-mips_insn16_frame_cache (frame_info_ptr this_frame, void **this_cache)
+mips_insn16_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct mips_frame_cache *cache;
@@ -2891,7 +2891,7 @@ mips_insn16_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-mips_insn16_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+mips_insn16_frame_this_id (frame_info *this_frame, void **this_cache,
 			   struct frame_id *this_id)
 {
   struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2903,7 +2903,7 @@ mips_insn16_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-mips_insn16_frame_prev_register (frame_info_ptr this_frame,
+mips_insn16_frame_prev_register (frame_info *this_frame,
 				 void **this_cache, int regnum)
 {
   struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2913,7 +2913,7 @@ mips_insn16_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 mips_insn16_frame_sniffer (const struct frame_unwind *self,
-			   frame_info_ptr this_frame, void **this_cache)
+			   frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2934,7 +2934,7 @@ static const struct frame_unwind mips_insn16_frame_unwind =
 };
 
 static CORE_ADDR
-mips_insn16_frame_base_address (frame_info_ptr this_frame,
+mips_insn16_frame_base_address (frame_info *this_frame,
 				void **this_cache)
 {
   struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2951,7 +2951,7 @@ static const struct frame_base mips_insn16_frame_base =
 };
 
 static const struct frame_base *
-mips_insn16_frame_base_sniffer (frame_info_ptr this_frame)
+mips_insn16_frame_base_sniffer (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2980,7 +2980,7 @@ micromips_decode_imm9 (int imm)
 static CORE_ADDR
 micromips_scan_prologue (struct gdbarch *gdbarch,
 			 CORE_ADDR start_pc, CORE_ADDR limit_pc,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 struct mips_frame_cache *this_cache)
 {
   CORE_ADDR end_prologue_addr;
@@ -3289,7 +3289,7 @@ micromips_scan_prologue (struct gdbarch *gdbarch,
    mips_insn32 unwinder.  Likewise MIPS16 and the mips_insn16 unwinder. */
 
 static struct mips_frame_cache *
-mips_micro_frame_cache (frame_info_ptr this_frame, void **this_cache)
+mips_micro_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct mips_frame_cache *cache;
@@ -3326,7 +3326,7 @@ mips_micro_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-mips_micro_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+mips_micro_frame_this_id (frame_info *this_frame, void **this_cache,
 			  struct frame_id *this_id)
 {
   struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3338,7 +3338,7 @@ mips_micro_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-mips_micro_frame_prev_register (frame_info_ptr this_frame,
+mips_micro_frame_prev_register (frame_info *this_frame,
 				void **this_cache, int regnum)
 {
   struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3348,7 +3348,7 @@ mips_micro_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 mips_micro_frame_sniffer (const struct frame_unwind *self,
-			  frame_info_ptr this_frame, void **this_cache)
+			  frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -3370,7 +3370,7 @@ static const struct frame_unwind mips_micro_frame_unwind =
 };
 
 static CORE_ADDR
-mips_micro_frame_base_address (frame_info_ptr this_frame,
+mips_micro_frame_base_address (frame_info *this_frame,
 			       void **this_cache)
 {
   struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3387,7 +3387,7 @@ static const struct frame_base mips_micro_frame_base =
 };
 
 static const struct frame_base *
-mips_micro_frame_base_sniffer (frame_info_ptr this_frame)
+mips_micro_frame_base_sniffer (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -3425,7 +3425,7 @@ reset_saved_regs (struct gdbarch *gdbarch, struct mips_frame_cache *this_cache)
 static CORE_ADDR
 mips32_scan_prologue (struct gdbarch *gdbarch,
 		      CORE_ADDR start_pc, CORE_ADDR limit_pc,
-		      frame_info_ptr this_frame,
+		      frame_info *this_frame,
 		      struct mips_frame_cache *this_cache)
 {
   int prev_non_prologue_insn;
@@ -3670,7 +3670,7 @@ mips32_scan_prologue (struct gdbarch *gdbarch,
    unwinder.  Likewise microMIPS and the mips_micro unwinder. */
 
 static struct mips_frame_cache *
-mips_insn32_frame_cache (frame_info_ptr this_frame, void **this_cache)
+mips_insn32_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct mips_frame_cache *cache;
@@ -3707,7 +3707,7 @@ mips_insn32_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-mips_insn32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+mips_insn32_frame_this_id (frame_info *this_frame, void **this_cache,
 			   struct frame_id *this_id)
 {
   struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3719,7 +3719,7 @@ mips_insn32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-mips_insn32_frame_prev_register (frame_info_ptr this_frame,
+mips_insn32_frame_prev_register (frame_info *this_frame,
 				 void **this_cache, int regnum)
 {
   struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3729,7 +3729,7 @@ mips_insn32_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 mips_insn32_frame_sniffer (const struct frame_unwind *self,
-			   frame_info_ptr this_frame, void **this_cache)
+			   frame_info *this_frame, void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   if (mips_pc_is_mips (pc))
@@ -3749,7 +3749,7 @@ static const struct frame_unwind mips_insn32_frame_unwind =
 };
 
 static CORE_ADDR
-mips_insn32_frame_base_address (frame_info_ptr this_frame,
+mips_insn32_frame_base_address (frame_info *this_frame,
 				void **this_cache)
 {
   struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3766,7 +3766,7 @@ static const struct frame_base mips_insn32_frame_base =
 };
 
 static const struct frame_base *
-mips_insn32_frame_base_sniffer (frame_info_ptr this_frame)
+mips_insn32_frame_base_sniffer (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   if (mips_pc_is_mips (pc))
@@ -3776,7 +3776,7 @@ mips_insn32_frame_base_sniffer (frame_info_ptr this_frame)
 }
 
 static struct trad_frame_cache *
-mips_stub_frame_cache (frame_info_ptr this_frame, void **this_cache)
+mips_stub_frame_cache (frame_info *this_frame, void **this_cache)
 {
   CORE_ADDR pc;
   CORE_ADDR start_addr;
@@ -3811,7 +3811,7 @@ mips_stub_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-mips_stub_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+mips_stub_frame_this_id (frame_info *this_frame, void **this_cache,
 			 struct frame_id *this_id)
 {
   struct trad_frame_cache *this_trad_cache
@@ -3820,7 +3820,7 @@ mips_stub_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-mips_stub_frame_prev_register (frame_info_ptr this_frame,
+mips_stub_frame_prev_register (frame_info *this_frame,
 			       void **this_cache, int regnum)
 {
   struct trad_frame_cache *this_trad_cache
@@ -3830,7 +3830,7 @@ mips_stub_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 mips_stub_frame_sniffer (const struct frame_unwind *self,
-			 frame_info_ptr this_frame, void **this_cache)
+			 frame_info *this_frame, void **this_cache)
 {
   gdb_byte dummy[4];
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -3866,7 +3866,7 @@ static const struct frame_unwind mips_stub_frame_unwind =
 };
 
 static CORE_ADDR
-mips_stub_frame_base_address (frame_info_ptr this_frame,
+mips_stub_frame_base_address (frame_info *this_frame,
 			      void **this_cache)
 {
   struct trad_frame_cache *this_trad_cache
@@ -3883,7 +3883,7 @@ static const struct frame_base mips_stub_frame_base =
 };
 
 static const struct frame_base *
-mips_stub_frame_base_sniffer (frame_info_ptr this_frame)
+mips_stub_frame_base_sniffer (frame_info *this_frame)
 {
   if (mips_stub_frame_sniffer (&mips_stub_frame_unwind, this_frame, NULL))
     return &mips_stub_frame_base;
@@ -6256,7 +6256,7 @@ mips_read_fp_register_single (frame_info_ptr frame, int regno,
   int raw_size = register_size (gdbarch, regno);
   gdb_byte *raw_buffer = (gdb_byte *) alloca (raw_size);
 
-  if (!deprecated_frame_register_read (frame, regno, raw_buffer))
+  if (!deprecated_frame_register_read (frame.get (), regno, raw_buffer))
     error (_("can't read register %d (%s)"),
 	   regno, gdbarch_register_name (gdbarch, regno));
   if (raw_size == 8)
@@ -6293,7 +6293,7 @@ mips_read_fp_register_double (frame_info_ptr frame, int regno,
     {
       /* We have a 64-bit value for this register, and we should use
 	 all 64 bits.  */
-      if (!deprecated_frame_register_read (frame, regno, rare_buffer))
+      if (!deprecated_frame_register_read (frame.get (), regno, rare_buffer))
 	error (_("can't read register %d (%s)"),
 	       regno, gdbarch_register_name (gdbarch, regno));
     }
@@ -8066,7 +8066,7 @@ mips_register_g_packet_guesses (struct gdbarch *gdbarch)
 }
 
 static struct value *
-value_of_mips_user_reg (frame_info_ptr frame, const void *baton)
+value_of_mips_user_reg (frame_info *frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
   return value_of_register (*reg_p, frame);
diff --git a/gdb/mips64-obsd-tdep.c b/gdb/mips64-obsd-tdep.c
index 450e302f0043..3dec72c4f2d7 100644
--- a/gdb/mips64-obsd-tdep.c
+++ b/gdb/mips64-obsd-tdep.c
@@ -77,7 +77,7 @@ mips64obsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 mips64obsd_sigframe_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *cache,
 			  CORE_ADDR func)
 {
diff --git a/gdb/mn10300-linux-tdep.c b/gdb/mn10300-linux-tdep.c
index b6111d431b7c..0fadcb489f40 100644
--- a/gdb/mn10300-linux-tdep.c
+++ b/gdb/mn10300-linux-tdep.c
@@ -464,7 +464,7 @@ am33_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 am33_linux_sigframe_cache_init (const struct tramp_frame *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				struct trad_frame_cache *this_cache,
 				CORE_ADDR func);
 
@@ -607,7 +607,7 @@ struct sigcontext {
 
 static void
 am33_linux_sigframe_cache_init (const struct tramp_frame *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				struct trad_frame_cache *this_cache,
 				CORE_ADDR func)
 {
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index 815949c67ae4..d8a412f7b5dc 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
@@ -1042,7 +1042,7 @@ mn10300_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    use the current frame PC as the limit, then
    invoke mn10300_analyze_prologue and return its result.  */
 static struct mn10300_prologue *
-mn10300_analyze_frame_prologue (frame_info_ptr this_frame,
+mn10300_analyze_frame_prologue (frame_info *this_frame,
 			   void **this_prologue_cache)
 {
   if (!*this_prologue_cache)
@@ -1071,7 +1071,7 @@ mn10300_analyze_frame_prologue (frame_info_ptr this_frame,
 /* Given the next frame and a prologue cache, return this frame's
    base.  */
 static CORE_ADDR
-mn10300_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
+mn10300_frame_base (frame_info *this_frame, void **this_prologue_cache)
 {
   struct mn10300_prologue *p
     = mn10300_analyze_frame_prologue (this_frame, this_prologue_cache);
@@ -1095,7 +1095,7 @@ mn10300_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
 }
 
 static void
-mn10300_frame_this_id (frame_info_ptr this_frame,
+mn10300_frame_this_id (frame_info *this_frame,
 		       void **this_prologue_cache,
 		       struct frame_id *this_id)
 {
@@ -1106,7 +1106,7 @@ mn10300_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-mn10300_frame_prev_register (frame_info_ptr this_frame,
+mn10300_frame_prev_register (frame_info *this_frame,
 			     void **this_prologue_cache, int regnum)
 {
   struct mn10300_prologue *p
@@ -1275,7 +1275,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch,
   {
     CORE_ADDR func_addr = find_function_addr (target_func, NULL);
     CORE_ADDR unwound_sp 
-      = gdbarch_unwind_sp (gdbarch, create_new_frame (sp, func_addr));
+      = gdbarch_unwind_sp (gdbarch, create_new_frame (sp, func_addr).get ());
     if (sp != unwound_sp)
       regcache_cooked_write_unsigned (regcache, E_SP_REGNUM,
 				      sp - (unwound_sp - sp));
diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c
index f1841e4e57e3..befa796fe2e2 100644
--- a/gdb/moxie-tdep.c
+++ b/gdb/moxie-tdep.c
@@ -513,7 +513,7 @@ moxie_alloc_frame_cache (void)
 /* Populate a moxie_frame_cache object for this_frame.  */
 
 static struct moxie_frame_cache *
-moxie_frame_cache (frame_info_ptr this_frame, void **this_cache)
+moxie_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct moxie_frame_cache *cache;
   CORE_ADDR current_pc;
@@ -550,7 +550,7 @@ moxie_frame_cache (frame_info_ptr this_frame, void **this_cache)
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-moxie_frame_this_id (frame_info_ptr this_frame,
+moxie_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache, struct frame_id *this_id)
 {
   struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
@@ -566,7 +566,7 @@ moxie_frame_this_id (frame_info_ptr this_frame,
 /* Get the value of register regnum in the previous stack frame.  */
 
 static struct value *
-moxie_frame_prev_register (frame_info_ptr this_frame,
+moxie_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
@@ -597,7 +597,7 @@ static const struct frame_unwind moxie_frame_unwind = {
 /* Return the base address of this_frame.  */
 
 static CORE_ADDR
-moxie_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+moxie_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
 						       this_cache);
diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c
index 545542472305..d470fb095d7f 100644
--- a/gdb/msp430-tdep.c
+++ b/gdb/msp430-tdep.c
@@ -457,7 +457,7 @@ msp430_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    return that struct as the value of this function.  */
 
 static struct msp430_prologue *
-msp430_analyze_frame_prologue (frame_info_ptr this_frame,
+msp430_analyze_frame_prologue (frame_info *this_frame,
 			       void **this_prologue_cache)
 {
   if (!*this_prologue_cache)
@@ -485,7 +485,7 @@ msp430_analyze_frame_prologue (frame_info_ptr this_frame,
 /* Given a frame and a prologue cache, return this frame's base.  */
 
 static CORE_ADDR
-msp430_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
+msp430_frame_base (frame_info *this_frame, void **this_prologue_cache)
 {
   struct msp430_prologue *p
     = msp430_analyze_frame_prologue (this_frame, this_prologue_cache);
@@ -497,7 +497,7 @@ msp430_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
 /* Implement the "frame_this_id" method for unwinding frames.  */
 
 static void
-msp430_this_id (frame_info_ptr this_frame,
+msp430_this_id (frame_info *this_frame,
 		void **this_prologue_cache, struct frame_id *this_id)
 {
   *this_id = frame_id_build (msp430_frame_base (this_frame,
@@ -508,7 +508,7 @@ msp430_this_id (frame_info_ptr this_frame,
 /* Implement the "frame_prev_register" method for unwinding frames.  */
 
 static struct value *
-msp430_prev_register (frame_info_ptr this_frame,
+msp430_prev_register (frame_info *this_frame,
 		      void **this_prologue_cache, int regnum)
 {
   struct msp430_prologue *p
diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c
index 4ab91e67f064..ac703e3b5728 100644
--- a/gdb/nds32-tdep.c
+++ b/gdb/nds32-tdep.c
@@ -265,7 +265,7 @@ static const struct
    register.  */
 
 static struct value *
-value_of_nds32_reg (frame_info_ptr frame, const void *baton)
+value_of_nds32_reg (frame_info *frame, const void *baton)
 {
   return value_of_register ((int) (intptr_t) baton, frame);
 }
@@ -898,7 +898,7 @@ nds32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    a pointer to the current nds32_frame_cache in *THIS_CACHE.  */
 
 static struct nds32_frame_cache *
-nds32_frame_cache (frame_info_ptr this_frame, void **this_cache)
+nds32_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct nds32_frame_cache *cache;
@@ -949,7 +949,7 @@ nds32_frame_cache (frame_info_ptr this_frame, void **this_cache)
    PC and the caller's SP when we were called.  */
 
 static void
-nds32_frame_this_id (frame_info_ptr this_frame,
+nds32_frame_this_id (frame_info *this_frame,
 		     void **this_cache, struct frame_id *this_id)
 {
   struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
@@ -964,7 +964,7 @@ nds32_frame_this_id (frame_info_ptr this_frame,
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-nds32_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+nds32_frame_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
@@ -998,7 +998,7 @@ static const struct frame_unwind nds32_frame_unwind =
 /* Return the frame base address of *THIS_FRAME.  */
 
 static CORE_ADDR
-nds32_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+nds32_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
 
@@ -1284,7 +1284,7 @@ nds32_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR addr)
 
 static int
 nds32_epilogue_frame_sniffer (const struct frame_unwind *self,
-			      frame_info_ptr this_frame, void **this_cache)
+			      frame_info *this_frame, void **this_cache)
 {
   if (frame_relative_level (this_frame) == 0)
     return nds32_stack_frame_destroyed_p (get_frame_arch (this_frame),
@@ -1299,7 +1299,7 @@ nds32_epilogue_frame_sniffer (const struct frame_unwind *self,
    *THIS_CACHE.  */
 
 static struct nds32_frame_cache *
-nds32_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
+nds32_epilogue_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct nds32_frame_cache *cache;
@@ -1331,7 +1331,7 @@ nds32_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the "this_id" frame_unwind method.  */
 
 static void
-nds32_epilogue_frame_this_id (frame_info_ptr this_frame,
+nds32_epilogue_frame_this_id (frame_info *this_frame,
 			      void **this_cache, struct frame_id *this_id)
 {
   struct nds32_frame_cache *cache
@@ -1347,7 +1347,7 @@ nds32_epilogue_frame_this_id (frame_info_ptr this_frame,
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-nds32_epilogue_frame_prev_register (frame_info_ptr this_frame,
+nds32_epilogue_frame_prev_register (frame_info *this_frame,
 				    void **this_cache, int regnum)
 {
   struct nds32_frame_cache *cache
diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c
index 5a03cbc17737..d8e0e61396d2 100644
--- a/gdb/nios2-linux-tdep.c
+++ b/gdb/nios2-linux-tdep.c
@@ -134,7 +134,7 @@ nios2_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 nios2_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			       frame_info_ptr next_frame,
+			       frame_info *next_frame,
 			       struct trad_frame_cache *this_cache,
 			       CORE_ADDR func)
 {
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index effa10bf97e4..bf6f52c47a23 100644
--- a/gdb/nios2-tdep.c
+++ b/gdb/nios2-tdep.c
@@ -1189,7 +1189,7 @@ static CORE_ADDR
 nios2_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR start_pc,
 			const CORE_ADDR current_pc,
 			struct nios2_unwind_cache *cache,
-			frame_info_ptr this_frame)
+			frame_info *this_frame)
 {
   /* Maximum number of possibly-prologue instructions to check.
      Note that this number should not be too large, else we can
@@ -1880,7 +1880,7 @@ nios2_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 /* Implement the unwind_pc gdbarch method.  */
 
 static CORE_ADDR
-nios2_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+nios2_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[4];
 
@@ -1893,7 +1893,7 @@ nios2_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
    *THIS_PROLOGUE_CACHE first.  */
 
 static struct nios2_unwind_cache *
-nios2_frame_unwind_cache (frame_info_ptr this_frame,
+nios2_frame_unwind_cache (frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1920,7 +1920,7 @@ nios2_frame_unwind_cache (frame_info_ptr this_frame,
 /* Implement the this_id function for the normal unwinder.  */
 
 static void
-nios2_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+nios2_frame_this_id (frame_info *this_frame, void **this_cache,
 		     struct frame_id *this_id)
 {
   struct nios2_unwind_cache *cache =
@@ -1936,7 +1936,7 @@ nios2_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement the prev_register function for the normal unwinder.  */
 
 static struct value *
-nios2_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+nios2_frame_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   struct nios2_unwind_cache *cache =
@@ -1966,7 +1966,7 @@ nios2_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
    for the normal unwinder.  */
 
 static CORE_ADDR
-nios2_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+nios2_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct nios2_unwind_cache *info
     = nios2_frame_unwind_cache (this_frame, this_cache);
@@ -2000,7 +2000,7 @@ static const struct frame_base nios2_frame_base =
    in the stub unwinder.  */
 
 static struct trad_frame_cache *
-nios2_stub_frame_cache (frame_info_ptr this_frame, void **this_cache)
+nios2_stub_frame_cache (frame_info *this_frame, void **this_cache)
 {
   CORE_ADDR pc;
   CORE_ADDR start_addr;
@@ -2033,7 +2033,7 @@ nios2_stub_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the this_id function for the stub unwinder.  */
 
 static void
-nios2_stub_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+nios2_stub_frame_this_id (frame_info *this_frame, void **this_cache,
 			  struct frame_id *this_id)
 {
   struct trad_frame_cache *this_trad_cache
@@ -2045,7 +2045,7 @@ nios2_stub_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement the prev_register function for the stub unwinder.  */
 
 static struct value *
-nios2_stub_frame_prev_register (frame_info_ptr this_frame,
+nios2_stub_frame_prev_register (frame_info *this_frame,
 				void **this_cache, int regnum)
 {
   struct trad_frame_cache *this_trad_cache
@@ -2061,7 +2061,7 @@ nios2_stub_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 nios2_stub_frame_sniffer (const struct frame_unwind *self,
-			  frame_info_ptr this_frame, void **cache)
+			  frame_info *this_frame, void **cache)
 {
   gdb_byte dummy[4];
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -2188,7 +2188,7 @@ nios2_get_next_pc (struct regcache *regcache, CORE_ADDR pc)
       /* If ra is in the reglist, we have to use the value saved in the
 	 stack frame rather than the current value.  */
       if (uimm & (1 << NIOS2_RA_REGNUM))
-	pc = nios2_unwind_pc (gdbarch, get_current_frame ());
+	pc = nios2_unwind_pc (gdbarch, get_current_frame ().get ());
       else
 	pc = regcache_raw_get_unsigned (regcache, NIOS2_RA_REGNUM);
     }
diff --git a/gdb/observable.h b/gdb/observable.h
index 1103c5c98a6b..e6258eb587e8 100644
--- a/gdb/observable.h
+++ b/gdb/observable.h
@@ -30,6 +30,7 @@ struct inferior;
 struct process_stratum_target;
 struct target_ops;
 struct trace_state_variable;
+class frame_info_ptr;
 
 namespace gdb
 {
diff --git a/gdb/or1k-linux-tdep.c b/gdb/or1k-linux-tdep.c
index 750b3d842889..6e655710c135 100644
--- a/gdb/or1k-linux-tdep.c
+++ b/gdb/or1k-linux-tdep.c
@@ -62,9 +62,9 @@ or1k_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
 /* Signal trampoline support.  */
 
 static void or1k_linux_sigframe_init (const struct tramp_frame *self,
-				       frame_info_ptr this_frame,
-				       struct trad_frame_cache *this_cache,
-				       CORE_ADDR func);
+				      frame_info *this_frame,
+				      struct trad_frame_cache *this_cache,
+				      CORE_ADDR func);
 
 #define OR1K_RT_SIGRETURN		139
 
@@ -116,7 +116,7 @@ static const struct tramp_frame or1k_linux_sigframe = {
 
 static void
 or1k_linux_sigframe_init (const struct tramp_frame *self,
-			   frame_info_ptr this_frame,
+			   frame_info *this_frame,
 			   struct trad_frame_cache *this_cache,
 			   CORE_ADDR func)
 {
diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
index efaf8745482a..ad949157592f 100644
--- a/gdb/or1k-tdep.c
+++ b/gdb/or1k-tdep.c
@@ -559,7 +559,7 @@ or1k_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 /* Implement the unwind_pc gdbarch method.  */
 
 static CORE_ADDR
-or1k_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+or1k_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   CORE_ADDR pc;
 
@@ -579,7 +579,7 @@ or1k_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Implement the unwind_sp gdbarch method.  */
 
 static CORE_ADDR
-or1k_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+or1k_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   CORE_ADDR sp;
 
@@ -890,7 +890,7 @@ or1k_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
    Reportedly, this is only valid for frames less than 0x7fff in size.  */
 
 static struct trad_frame_cache *
-or1k_frame_cache (frame_info_ptr this_frame, void **prologue_cache)
+or1k_frame_cache (frame_info *this_frame, void **prologue_cache)
 {
   struct gdbarch *gdbarch;
   struct trad_frame_cache *info;
@@ -1103,7 +1103,7 @@ or1k_frame_cache (frame_info_ptr this_frame, void **prologue_cache)
 /* Implement the this_id function for the stub unwinder.  */
 
 static void
-or1k_frame_this_id (frame_info_ptr this_frame,
+or1k_frame_this_id (frame_info *this_frame,
 		    void **prologue_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *info = or1k_frame_cache (this_frame,
@@ -1115,7 +1115,7 @@ or1k_frame_this_id (frame_info_ptr this_frame,
 /* Implement the prev_register function for the stub unwinder.  */
 
 static struct value *
-or1k_frame_prev_register (frame_info_ptr this_frame,
+or1k_frame_prev_register (frame_info *this_frame,
 			  void **prologue_cache, int regnum)
 {
   struct trad_frame_cache *info = or1k_frame_cache (this_frame,
diff --git a/gdb/ppc-fbsd-tdep.c b/gdb/ppc-fbsd-tdep.c
index 497d82810a70..bf21db637212 100644
--- a/gdb/ppc-fbsd-tdep.c
+++ b/gdb/ppc-fbsd-tdep.c
@@ -150,7 +150,7 @@ static const int ppcfbsd_sigreturn_offset[] = {
 
 static int
 ppcfbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -197,7 +197,7 @@ ppcfbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
 }
 
 static struct trad_frame_cache *
-ppcfbsd_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
+ppcfbsd_sigtramp_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -243,7 +243,7 @@ ppcfbsd_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-ppcfbsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
+ppcfbsd_sigtramp_frame_this_id (frame_info *this_frame,
 				void **this_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *cache =
@@ -253,7 +253,7 @@ ppcfbsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-ppcfbsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+ppcfbsd_sigtramp_frame_prev_register (frame_info *this_frame,
 				      void **this_cache, int regnum)
 {
   struct trad_frame_cache *cache =
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index 39d692b2764c..e87a52c3431c 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -1159,7 +1159,7 @@ ppc_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
 }
 
 static void
-ppc_linux_sigtramp_cache (frame_info_ptr this_frame,
+ppc_linux_sigtramp_cache (frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func, LONGEST offset,
 			  int bias)
@@ -1231,7 +1231,7 @@ ppc_linux_sigtramp_cache (frame_info_ptr this_frame,
 
 static void
 ppc32_linux_sigaction_cache_init (const struct tramp_frame *self,
-				  frame_info_ptr this_frame,
+				  frame_info *this_frame,
 				  struct trad_frame_cache *this_cache,
 				  CORE_ADDR func)
 {
@@ -1243,7 +1243,7 @@ ppc32_linux_sigaction_cache_init (const struct tramp_frame *self,
 
 static void
 ppc64_linux_sigaction_cache_init (const struct tramp_frame *self,
-				  frame_info_ptr this_frame,
+				  frame_info *this_frame,
 				  struct trad_frame_cache *this_cache,
 				  CORE_ADDR func)
 {
@@ -1255,7 +1255,7 @@ ppc64_linux_sigaction_cache_init (const struct tramp_frame *self,
 
 static void
 ppc32_linux_sighandler_cache_init (const struct tramp_frame *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   struct trad_frame_cache *this_cache,
 				   CORE_ADDR func)
 {
@@ -1267,7 +1267,7 @@ ppc32_linux_sighandler_cache_init (const struct tramp_frame *self,
 
 static void
 ppc64_linux_sighandler_cache_init (const struct tramp_frame *self,
-				   frame_info_ptr this_frame,
+				   frame_info *this_frame,
 				   struct trad_frame_cache *this_cache,
 				   CORE_ADDR func)
 {
diff --git a/gdb/ppc-netbsd-tdep.c b/gdb/ppc-netbsd-tdep.c
index 03ffa5c5292f..4616921fd9cd 100644
--- a/gdb/ppc-netbsd-tdep.c
+++ b/gdb/ppc-netbsd-tdep.c
@@ -97,7 +97,7 @@ extern const struct tramp_frame ppcnbsd2_sigtramp;
 
 static void
 ppcnbsd_sigtramp_cache_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/ppc-obsd-tdep.c b/gdb/ppc-obsd-tdep.c
index 7436532d846d..7eaaa3958c31 100644
--- a/gdb/ppc-obsd-tdep.c
+++ b/gdb/ppc-obsd-tdep.c
@@ -117,7 +117,7 @@ static const int ppcobsd_sigreturn_offset[] = {
 
 static int
 ppcobsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				frame_info_ptr this_frame,
+				frame_info *this_frame,
 				void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -158,7 +158,7 @@ ppcobsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
 }
 
 static struct trad_frame_cache *
-ppcobsd_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
+ppcobsd_sigtramp_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -212,7 +212,7 @@ ppcobsd_sigtramp_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-ppcobsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
+ppcobsd_sigtramp_frame_this_id (frame_info *this_frame,
 				void **this_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *cache =
@@ -222,7 +222,7 @@ ppcobsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-ppcobsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+ppcobsd_sigtramp_frame_prev_register (frame_info *this_frame,
 				      void **this_cache, int regnum)
 {
   struct trad_frame_cache *cache =
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index 20b0ab460ccb..53b4c49e143d 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -57,7 +57,7 @@ struct pending_frame_object
   PyObject_HEAD
 
   /* Frame we are unwinding.  */
-  frame_info_ptr frame_info;
+  struct frame_info *frame_info;
 
   /* Its architecture, passed by the sniffer caller.  */
   struct gdbarch *gdbarch;
@@ -339,7 +339,7 @@ unwind_infopy_dealloc (PyObject *self)
 static PyObject *
 pending_framepy_str (PyObject *self)
 {
-  frame_info_ptr frame = ((pending_frame_object *) self)->frame_info;
+  frame_info *frame = ((pending_frame_object *) self)->frame_info;
   const char *sp_str = NULL;
   const char *pc_str = NULL;
 
@@ -475,7 +475,7 @@ pending_framepy_level (PyObject *self, PyObject *args)
 /* frame_unwind.this_id method.  */
 
 static void
-pyuw_this_id (frame_info_ptr this_frame, void **cache_ptr,
+pyuw_this_id (frame_info *this_frame, void **cache_ptr,
 	      struct frame_id *this_id)
 {
   *this_id = ((cached_frame_info *) *cache_ptr)->frame_id;
@@ -485,7 +485,7 @@ pyuw_this_id (frame_info_ptr this_frame, void **cache_ptr,
 /* frame_unwind.prev_register.  */
 
 static struct value *
-pyuw_prev_register (frame_info_ptr this_frame, void **cache_ptr,
+pyuw_prev_register (frame_info *this_frame, void **cache_ptr,
 		    int regnum)
 {
   PYUW_SCOPED_DEBUG_ENTER_EXIT;
@@ -508,7 +508,7 @@ pyuw_prev_register (frame_info_ptr this_frame, void **cache_ptr,
 /* Frame sniffer dispatch.  */
 
 static int
-pyuw_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame,
+pyuw_sniffer (const struct frame_unwind *self, frame_info *this_frame,
 	      void **cache_ptr)
 {
   PYUW_SCOPED_DEBUG_ENTER_EXIT;
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 5cf978b932ca..afa0f7963173 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -1642,13 +1642,13 @@ bfcache_eq (const void *arg1, const void *arg2)
 /* Create a new btrace frame cache.  */
 
 static struct btrace_frame_cache *
-bfcache_new (frame_info_ptr frame)
+bfcache_new (frame_info *frame)
 {
   struct btrace_frame_cache *cache;
   void **slot;
 
   cache = FRAME_OBSTACK_ZALLOC (struct btrace_frame_cache);
-  cache->frame = frame.get ();
+  cache->frame = frame;
 
   slot = htab_find_slot (bfcache, cache, INSERT);
   gdb_assert (*slot == NULL);
@@ -1660,13 +1660,13 @@ bfcache_new (frame_info_ptr frame)
 /* Extract the branch trace function from a branch trace frame.  */
 
 static const struct btrace_function *
-btrace_get_frame_function (frame_info_ptr frame)
+btrace_get_frame_function (frame_info *frame)
 {
   const struct btrace_frame_cache *cache;
   struct btrace_frame_cache pattern;
   void **slot;
 
-  pattern.frame = frame.get ();
+  pattern.frame = frame;
 
   slot = htab_find_slot (bfcache, &pattern, NO_INSERT);
   if (slot == NULL)
@@ -1679,7 +1679,7 @@ btrace_get_frame_function (frame_info_ptr frame)
 /* Implement stop_reason method for record_btrace_frame_unwind.  */
 
 static enum unwind_stop_reason
-record_btrace_frame_unwind_stop_reason (frame_info_ptr this_frame,
+record_btrace_frame_unwind_stop_reason (frame_info *this_frame,
 					void **this_cache)
 {
   const struct btrace_frame_cache *cache;
@@ -1698,7 +1698,7 @@ record_btrace_frame_unwind_stop_reason (frame_info_ptr this_frame,
 /* Implement this_id method for record_btrace_frame_unwind.  */
 
 static void
-record_btrace_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+record_btrace_frame_this_id (frame_info *this_frame, void **this_cache,
 			     struct frame_id *this_id)
 {
   const struct btrace_frame_cache *cache;
@@ -1728,7 +1728,7 @@ record_btrace_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement prev_register method for record_btrace_frame_unwind.  */
 
 static struct value *
-record_btrace_frame_prev_register (frame_info_ptr this_frame,
+record_btrace_frame_prev_register (frame_info *this_frame,
 				   void **this_cache,
 				   int regnum)
 {
@@ -1774,19 +1774,18 @@ record_btrace_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 record_btrace_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_cache)
 {
   const struct btrace_function *bfun;
   struct btrace_frame_cache *cache;
   struct thread_info *tp;
-  frame_info_ptr next;
 
   /* THIS_FRAME does not contain a reference to its thread.  */
   tp = inferior_thread ();
 
   bfun = NULL;
-  next = get_next_frame (this_frame);
+  frame_info *next = get_next_frame (this_frame);
   if (next == NULL)
     {
       const struct btrace_insn_iterator *replay;
@@ -1829,16 +1828,15 @@ record_btrace_frame_sniffer (const struct frame_unwind *self,
 
 static int
 record_btrace_tailcall_frame_sniffer (const struct frame_unwind *self,
-				      frame_info_ptr this_frame,
+				      frame_info *this_frame,
 				      void **this_cache)
 {
   const struct btrace_function *bfun, *callee;
   struct btrace_frame_cache *cache;
   struct btrace_call_iterator it;
-  frame_info_ptr next;
   struct thread_info *tinfo;
 
-  next = get_next_frame (this_frame);
+  frame_info *next = get_next_frame (this_frame);
   if (next == NULL)
     return 0;
 
diff --git a/gdb/riscv-fbsd-tdep.c b/gdb/riscv-fbsd-tdep.c
index 5b66a9c582ec..f36535e8219f 100644
--- a/gdb/riscv-fbsd-tdep.c
+++ b/gdb/riscv-fbsd-tdep.c
@@ -108,7 +108,7 @@ riscv_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
 
 static void
 riscv_fbsd_sigframe_init (const struct tramp_frame *self,
-			  frame_info_ptr this_frame,
+			  frame_info *this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
diff --git a/gdb/riscv-linux-tdep.c b/gdb/riscv-linux-tdep.c
index e736e3b9b267..71b122a79b61 100644
--- a/gdb/riscv-linux-tdep.c
+++ b/gdb/riscv-linux-tdep.c
@@ -86,7 +86,7 @@ riscv_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
 /* Signal trampoline support.  */
 
 static void riscv_linux_sigframe_init (const struct tramp_frame *self,
-				       frame_info_ptr this_frame,
+				       frame_info *this_frame,
 				       struct trad_frame_cache *this_cache,
 				       CORE_ADDR func);
 
@@ -125,7 +125,7 @@ static const struct tramp_frame riscv_linux_sigframe = {
 
 static void
 riscv_linux_sigframe_init (const struct tramp_frame *self,
-			   frame_info_ptr this_frame,
+			   frame_info *this_frame,
 			   struct trad_frame_cache *this_cache,
 			   CORE_ADDR func)
 {
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index 0a050b272fff..47d4933737cf 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -134,7 +134,7 @@ static const reggroup *csr_reggroup = nullptr;
 /* Callback function for user_reg_add.  */
 
 static struct value *
-value_of_riscv_user_reg (frame_info_ptr frame, const void *baton)
+value_of_riscv_user_reg (frame_info *frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
   return value_of_register (*reg_p, frame);
@@ -3434,7 +3434,7 @@ riscv_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
    unwinder.  */
 
 static struct riscv_unwind_cache *
-riscv_frame_cache (frame_info_ptr this_frame, void **this_cache)
+riscv_frame_cache (frame_info *this_frame, void **this_cache)
 {
   CORE_ADDR pc, start_addr;
   struct riscv_unwind_cache *cache;
@@ -3495,7 +3495,7 @@ riscv_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Implement the this_id callback for RiscV frame unwinder.  */
 
 static void
-riscv_frame_this_id (frame_info_ptr this_frame,
+riscv_frame_this_id (frame_info *this_frame,
 		     void **prologue_cache,
 		     struct frame_id *this_id)
 {
@@ -3516,7 +3516,7 @@ riscv_frame_this_id (frame_info_ptr this_frame,
 /* Implement the prev_register callback for RiscV frame unwinder.  */
 
 static struct value *
-riscv_frame_prev_register (frame_info_ptr this_frame,
+riscv_frame_prev_register (frame_info *this_frame,
 			   void **prologue_cache,
 			   int regnum)
 {
diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c
index 206b9e2794f8..c110524c1948 100644
--- a/gdb/rl78-tdep.c
+++ b/gdb/rl78-tdep.c
@@ -1077,7 +1077,7 @@ rl78_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 /* Implement the "unwind_pc" gdbarch method.  */
 
 static CORE_ADDR
-rl78_unwind_pc (struct gdbarch *arch, frame_info_ptr next_frame)
+rl78_unwind_pc (struct gdbarch *arch, frame_info *next_frame)
 {
   return rl78_addr_bits_remove
 	   (arch, frame_unwind_register_unsigned (next_frame,
@@ -1090,7 +1090,7 @@ rl78_unwind_pc (struct gdbarch *arch, frame_info_ptr next_frame)
    return that struct as the value of this function.  */
 
 static struct rl78_prologue *
-rl78_analyze_frame_prologue (frame_info_ptr this_frame,
+rl78_analyze_frame_prologue (frame_info *this_frame,
 			   void **this_prologue_cache)
 {
   if (!*this_prologue_cache)
@@ -1117,7 +1117,7 @@ rl78_analyze_frame_prologue (frame_info_ptr this_frame,
 /* Given a frame and a prologue cache, return this frame's base.  */
 
 static CORE_ADDR
-rl78_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
+rl78_frame_base (frame_info *this_frame, void **this_prologue_cache)
 {
   struct rl78_prologue *p
     = rl78_analyze_frame_prologue (this_frame, this_prologue_cache);
@@ -1129,7 +1129,7 @@ rl78_frame_base (frame_info_ptr this_frame, void **this_prologue_cache)
 /* Implement the "frame_this_id" method for unwinding frames.  */
 
 static void
-rl78_this_id (frame_info_ptr this_frame,
+rl78_this_id (frame_info *this_frame,
 	      void **this_prologue_cache, struct frame_id *this_id)
 {
   *this_id = frame_id_build (rl78_frame_base (this_frame,
@@ -1140,7 +1140,7 @@ rl78_this_id (frame_info_ptr this_frame,
 /* Implement the "frame_prev_register" method for unwinding frames.  */
 
 static struct value *
-rl78_prev_register (frame_info_ptr this_frame,
+rl78_prev_register (frame_info *this_frame,
 		    void **this_prologue_cache, int regnum)
 {
   struct rl78_prologue *p
@@ -1314,7 +1314,7 @@ rl78_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
 /* Implement the "dummy_id" gdbarch method.  */
 
 static struct frame_id
-rl78_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+rl78_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   return
     frame_id_build (rl78_make_data_address
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
index 3efafbd10abf..42eb46262e8a 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -69,7 +69,7 @@
 #define AIX_TEXT_SEGMENT_BASE 0x10000000
 
 static struct trad_frame_cache *
-aix_sighandle_frame_cache (frame_info_ptr this_frame,
+aix_sighandle_frame_cache (frame_info *this_frame,
 			   void **this_cache)
 {
   LONGEST backchain;
@@ -125,7 +125,7 @@ aix_sighandle_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-aix_sighandle_frame_this_id (frame_info_ptr this_frame,
+aix_sighandle_frame_this_id (frame_info *this_frame,
 			     void **this_prologue_cache,
 			     struct frame_id *this_id)
 {
@@ -135,7 +135,7 @@ aix_sighandle_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-aix_sighandle_frame_prev_register (frame_info_ptr this_frame,
+aix_sighandle_frame_prev_register (frame_info *this_frame,
 				   void **this_prologue_cache, int regnum)
 {
   struct trad_frame_cache *this_trad_cache
@@ -145,7 +145,7 @@ aix_sighandle_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 aix_sighandle_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index cbd845147957..731ddfccb8bc 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -743,7 +743,7 @@ insn_changes_sp_or_jumps (unsigned long insn)
 	   limit for the size of an epilogue.  */
 
 static int
-rs6000_in_function_epilogue_frame_p (frame_info_ptr curfrm,
+rs6000_in_function_epilogue_frame_p (frame_info *curfrm,
 				     struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -810,7 +810,7 @@ rs6000_in_function_epilogue_frame_p (frame_info_ptr curfrm,
 static int
 rs6000_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  return rs6000_in_function_epilogue_frame_p (get_current_frame (),
+  return rs6000_in_function_epilogue_frame_p (get_current_frame ().get (),
 					      gdbarch, pc);
 }
 
@@ -2669,7 +2669,7 @@ rs6000_convert_register_p (struct gdbarch *gdbarch, int regnum,
 }
 
 static int
-rs6000_register_to_value (frame_info_ptr frame,
+rs6000_register_to_value (frame_info *frame,
 			  int regnum,
 			  struct type *type,
 			  gdb_byte *to,
@@ -3553,7 +3553,7 @@ struct rs6000_frame_cache
 };
 
 static struct rs6000_frame_cache *
-rs6000_frame_cache (frame_info_ptr this_frame, void **this_cache)
+rs6000_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct rs6000_frame_cache *cache;
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3746,7 +3746,7 @@ rs6000_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-rs6000_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+rs6000_frame_this_id (frame_info *this_frame, void **this_cache,
 		      struct frame_id *this_id)
 {
   struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
@@ -3766,7 +3766,7 @@ rs6000_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-rs6000_frame_prev_register (frame_info_ptr this_frame,
+rs6000_frame_prev_register (frame_info *this_frame,
 			    void **this_cache, int regnum)
 {
   struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
@@ -3789,7 +3789,7 @@ static const struct frame_unwind rs6000_frame_unwind =
    SP is restored and prev-PC is stored in LR.  */
 
 static struct rs6000_frame_cache *
-rs6000_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
+rs6000_epilogue_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct rs6000_frame_cache *cache;
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3829,7 +3829,7 @@ rs6000_epilogue_frame_cache (frame_info_ptr this_frame, void **this_cache)
    Return the frame ID of an epilogue frame.  */
 
 static void
-rs6000_epilogue_frame_this_id (frame_info_ptr this_frame,
+rs6000_epilogue_frame_this_id (frame_info *this_frame,
 			       void **this_cache, struct frame_id *this_id)
 {
   CORE_ADDR pc;
@@ -3847,7 +3847,7 @@ rs6000_epilogue_frame_this_id (frame_info_ptr this_frame,
    Return the register value of REGNUM in previous frame.  */
 
 static struct value *
-rs6000_epilogue_frame_prev_register (frame_info_ptr this_frame,
+rs6000_epilogue_frame_prev_register (frame_info *this_frame,
 				     void **this_cache, int regnum)
 {
   struct rs6000_frame_cache *info =
@@ -3860,7 +3860,7 @@ rs6000_epilogue_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 rs6000_epilogue_frame_sniffer (const struct frame_unwind *self,
-			       frame_info_ptr this_frame,
+			       frame_info *this_frame,
 			       void **this_prologue_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -3886,7 +3886,7 @@ static const struct frame_unwind rs6000_epilogue_frame_unwind =
 
 
 static CORE_ADDR
-rs6000_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+rs6000_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
 							this_cache);
@@ -3901,7 +3901,7 @@ static const struct frame_base rs6000_frame_base = {
 };
 
 static const struct frame_base *
-rs6000_frame_base_sniffer (frame_info_ptr this_frame)
+rs6000_frame_base_sniffer (frame_info *this_frame)
 {
   return &rs6000_frame_base;
 }
@@ -3912,7 +3912,7 @@ rs6000_frame_base_sniffer (frame_info_ptr this_frame)
 static void
 ppc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			    struct dwarf2_frame_state_reg *reg,
-			    frame_info_ptr this_frame)
+			    frame_info *this_frame)
 {
   ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c
index d1c294b9ef0a..69664993d1ad 100644
--- a/gdb/rx-tdep.c
+++ b/gdb/rx-tdep.c
@@ -382,7 +382,7 @@ rx_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
    return that struct as the value of this function.  */
 
 static struct rx_prologue *
-rx_analyze_frame_prologue (frame_info_ptr this_frame,
+rx_analyze_frame_prologue (frame_info *this_frame,
 			   enum rx_frame_type frame_type,
 			   void **this_prologue_cache)
 {
@@ -411,7 +411,7 @@ rx_analyze_frame_prologue (frame_info_ptr this_frame,
    instruction.  */
 
 static enum rx_frame_type
-rx_frame_type (frame_info_ptr this_frame, void **this_cache)
+rx_frame_type (frame_info *this_frame, void **this_cache)
 {
   const char *name;
   CORE_ADDR pc, start_pc, lim_pc;
@@ -465,7 +465,7 @@ rx_frame_type (frame_info_ptr this_frame, void **this_cache)
    base.  */
 
 static CORE_ADDR
-rx_frame_base (frame_info_ptr this_frame, void **this_cache)
+rx_frame_base (frame_info *this_frame, void **this_cache)
 {
   enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
   struct rx_prologue *p
@@ -492,7 +492,7 @@ rx_frame_base (frame_info_ptr this_frame, void **this_cache)
 /* Implement the "frame_this_id" method for unwinding frames.  */
 
 static void
-rx_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+rx_frame_this_id (frame_info *this_frame, void **this_cache,
 		  struct frame_id *this_id)
 {
   *this_id = frame_id_build (rx_frame_base (this_frame, this_cache),
@@ -502,7 +502,7 @@ rx_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 /* Implement the "frame_prev_register" method for unwinding frames.  */
 
 static struct value *
-rx_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+rx_frame_prev_register (frame_info *this_frame, void **this_cache,
 			int regnum)
 {
   enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
@@ -576,7 +576,7 @@ exception_frame_p (enum rx_frame_type frame_type)
 
 static int
 rx_frame_sniffer_common (const struct frame_unwind *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 void **this_cache,
 			 int (*sniff_p)(enum rx_frame_type) )
 {
@@ -609,7 +609,7 @@ rx_frame_sniffer_common (const struct frame_unwind *self,
 
 static int
 rx_frame_sniffer (const struct frame_unwind *self,
-		  frame_info_ptr this_frame,
+		  frame_info *this_frame,
 		  void **this_cache)
 {
   return rx_frame_sniffer_common (self, this_frame, this_cache,
@@ -620,7 +620,7 @@ rx_frame_sniffer (const struct frame_unwind *self,
 
 static int
 rx_exception_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_cache)
 {
   return rx_frame_sniffer_common (self, this_frame, this_cache,
diff --git a/gdb/s12z-tdep.c b/gdb/s12z-tdep.c
index ccc47c998041..66da0c063ead 100644
--- a/gdb/s12z-tdep.c
+++ b/gdb/s12z-tdep.c
@@ -241,7 +241,7 @@ push_pull_get_stack_adjustment (int n_operands,
 /* Initialize a prologue cache.  */
 
 static struct trad_frame_cache *
-s12z_frame_cache (frame_info_ptr this_frame, void **prologue_cache)
+s12z_frame_cache (frame_info *this_frame, void **prologue_cache)
 {
   struct trad_frame_cache *info;
 
@@ -420,7 +420,7 @@ s12z_frame_cache (frame_info_ptr this_frame, void **prologue_cache)
 
 /* Implement the this_id function for the stub unwinder.  */
 static void
-s12z_frame_this_id (frame_info_ptr this_frame,
+s12z_frame_this_id (frame_info *this_frame,
 		    void **prologue_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *info = s12z_frame_cache (this_frame,
@@ -432,7 +432,7 @@ s12z_frame_this_id (frame_info_ptr this_frame,
 
 /* Implement the prev_register function for the stub unwinder.  */
 static struct value *
-s12z_frame_prev_register (frame_info_ptr this_frame,
+s12z_frame_prev_register (frame_info *this_frame,
 			  void **prologue_cache, int regnum)
 {
   struct trad_frame_cache *info = s12z_frame_cache (this_frame,
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index 14d71134e0cd..6ae946c5b394 100644
--- a/gdb/s390-linux-tdep.c
+++ b/gdb/s390-linux-tdep.c
@@ -387,7 +387,7 @@ struct s390_sigtramp_unwind_cache {
    s390_sigtramp_frame_unwind.  */
 
 static struct s390_sigtramp_unwind_cache *
-s390_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
+s390_sigtramp_frame_unwind_cache (frame_info *this_frame,
 				  void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -497,7 +497,7 @@ s390_sigtramp_frame_unwind_cache (frame_info_ptr this_frame,
 /* Implement this_id frame_unwind method for s390_sigtramp_frame_unwind.  */
 
 static void
-s390_sigtramp_frame_this_id (frame_info_ptr this_frame,
+s390_sigtramp_frame_this_id (frame_info *this_frame,
 			     void **this_prologue_cache,
 			     struct frame_id *this_id)
 {
@@ -509,7 +509,7 @@ s390_sigtramp_frame_this_id (frame_info_ptr this_frame,
 /* Implement prev_register frame_unwind method for sigtramp frames.  */
 
 static struct value *
-s390_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+s390_sigtramp_frame_prev_register (frame_info *this_frame,
 				   void **this_prologue_cache, int regnum)
 {
   struct s390_sigtramp_unwind_cache *info
@@ -521,7 +521,7 @@ s390_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 s390_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     void **this_prologue_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index d0dba7654bb6..f137eca52960 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -1982,7 +1982,7 @@ s390_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
    breakpoint.  */
 
 static struct frame_id
-s390_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+s390_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   int word_size = gdbarch_ptr_bit (gdbarch) / 8;
   CORE_ADDR sp = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
@@ -2166,7 +2166,7 @@ s390_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 /* Implement unwind_pc gdbarch method.  */
 
 static CORE_ADDR
-s390_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+s390_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
   ULONGEST pc;
@@ -2177,7 +2177,7 @@ s390_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Implement unwind_sp gdbarch method.  */
 
 static CORE_ADDR
-s390_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+s390_unwind_sp (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   ULONGEST sp;
   sp = frame_unwind_register_unsigned (next_frame, S390_SP_REGNUM);
@@ -2187,7 +2187,7 @@ s390_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Helper routine to unwind pseudo registers.  */
 
 static struct value *
-s390_unwind_pseudo_register (frame_info_ptr this_frame, int regnum)
+s390_unwind_pseudo_register (frame_info *this_frame, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
@@ -2258,7 +2258,7 @@ s390_adjust_frame_regnum (struct gdbarch *gdbarch, int num, int eh_frame_p)
    s390_dwarf2_frame_init_reg.  */
 
 static struct value *
-s390_dwarf2_prev_register (frame_info_ptr this_frame, void **this_cache,
+s390_dwarf2_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   return s390_unwind_pseudo_register (this_frame, regnum);
@@ -2269,7 +2269,7 @@ s390_dwarf2_prev_register (frame_info_ptr this_frame, void **this_cache,
 static void
 s390_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			    struct dwarf2_frame_state_reg *reg,
-			    frame_info_ptr this_frame)
+			    frame_info *this_frame)
 {
   /* The condition code (and thus PSW mask) is call-clobbered.  */
   if (regnum == S390_PSWM_REGNUM)
@@ -2303,7 +2303,7 @@ s390_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
    register translation.  */
 
 struct value *
-s390_trad_frame_prev_register (frame_info_ptr this_frame,
+s390_trad_frame_prev_register (frame_info *this_frame,
 			       trad_frame_saved_reg saved_regs[],
 			       int regnum)
 {
@@ -2328,7 +2328,7 @@ struct s390_unwind_cache {
    prologue analysis.  Helper for s390_frame_unwind_cache.  */
 
 static int
-s390_prologue_frame_unwind_cache (frame_info_ptr this_frame,
+s390_prologue_frame_unwind_cache (frame_info *this_frame,
 				  struct s390_unwind_cache *info)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2344,7 +2344,6 @@ s390_prologue_frame_unwind_cache (frame_info_ptr this_frame,
   CORE_ADDR prev_sp;
   int frame_pointer;
   int size;
-  frame_info_ptr next_frame;
 
   /* Try to find the function start address.  If we can't find it, we don't
      bother searching for it -- with modern compilers this would be mostly
@@ -2381,7 +2380,7 @@ s390_prologue_frame_unwind_cache (frame_info_ptr this_frame,
       /* FIXME: cagney/2004-05-01: This sanity check shouldn't be
 	 needed, instead the code should simpliy rely on its
 	 analysis.  */
-      next_frame = get_next_frame (this_frame);
+      frame_info *next_frame = get_next_frame (this_frame);
       while (next_frame && get_frame_type (next_frame) == INLINE_FRAME)
 	next_frame = get_next_frame (next_frame);
       if (next_frame
@@ -2429,7 +2428,7 @@ s390_prologue_frame_unwind_cache (frame_info_ptr this_frame,
      This can only happen in an innermost frame.  */
   /* FIXME: cagney/2004-05-01: This sanity check shouldn't be needed,
      instead the code should simpliy rely on its analysis.  */
-  next_frame = get_next_frame (this_frame);
+  frame_info *next_frame = get_next_frame (this_frame);
   while (next_frame && get_frame_type (next_frame) == INLINE_FRAME)
     next_frame = get_next_frame (next_frame);
   if (size > 0
@@ -2515,7 +2514,7 @@ s390_prologue_frame_unwind_cache (frame_info_ptr this_frame,
    back chain unwinding.  Helper for s390_frame_unwind_cache.  */
 
 static void
-s390_backchain_frame_unwind_cache (frame_info_ptr this_frame,
+s390_backchain_frame_unwind_cache (frame_info *this_frame,
 				   struct s390_unwind_cache *info)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2572,7 +2571,7 @@ s390_backchain_frame_unwind_cache (frame_info_ptr this_frame,
    s390_frame_unwind and s390_frame_base.  */
 
 static struct s390_unwind_cache *
-s390_frame_unwind_cache (frame_info_ptr this_frame,
+s390_frame_unwind_cache (frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   struct s390_unwind_cache *info;
@@ -2606,7 +2605,7 @@ s390_frame_unwind_cache (frame_info_ptr this_frame,
 /* Implement this_id frame_unwind method for s390_frame_unwind.  */
 
 static void
-s390_frame_this_id (frame_info_ptr this_frame,
+s390_frame_this_id (frame_info *this_frame,
 		    void **this_prologue_cache,
 		    struct frame_id *this_id)
 {
@@ -2626,7 +2625,7 @@ s390_frame_this_id (frame_info_ptr this_frame,
 /* Implement prev_register frame_unwind method for s390_frame_unwind.  */
 
 static struct value *
-s390_frame_prev_register (frame_info_ptr this_frame,
+s390_frame_prev_register (frame_info *this_frame,
 			  void **this_prologue_cache, int regnum)
 {
   struct s390_unwind_cache *info
@@ -2661,7 +2660,7 @@ struct s390_stub_unwind_cache
    s390_stub_frame_unwind.  */
 
 static struct s390_stub_unwind_cache *
-s390_stub_frame_unwind_cache (frame_info_ptr this_frame,
+s390_stub_frame_unwind_cache (frame_info *this_frame,
 			      void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2689,7 +2688,7 @@ s390_stub_frame_unwind_cache (frame_info_ptr this_frame,
 /* Implement this_id frame_unwind method for s390_stub_frame_unwind.  */
 
 static void
-s390_stub_frame_this_id (frame_info_ptr this_frame,
+s390_stub_frame_this_id (frame_info *this_frame,
 			 void **this_prologue_cache,
 			 struct frame_id *this_id)
 {
@@ -2701,7 +2700,7 @@ s390_stub_frame_this_id (frame_info_ptr this_frame,
 /* Implement prev_register frame_unwind method for s390_stub_frame_unwind.  */
 
 static struct value *
-s390_stub_frame_prev_register (frame_info_ptr this_frame,
+s390_stub_frame_prev_register (frame_info *this_frame,
 			       void **this_prologue_cache, int regnum)
 {
   struct s390_stub_unwind_cache *info
@@ -2713,7 +2712,7 @@ s390_stub_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 s390_stub_frame_sniffer (const struct frame_unwind *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
@@ -2744,7 +2743,7 @@ static const struct frame_unwind s390_stub_frame_unwind = {
 /* Frame base handling.  */
 
 static CORE_ADDR
-s390_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+s390_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct s390_unwind_cache *info
     = s390_frame_unwind_cache (this_frame, this_cache);
@@ -2752,7 +2751,7 @@ s390_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 }
 
 static CORE_ADDR
-s390_local_base_address (frame_info_ptr this_frame, void **this_cache)
+s390_local_base_address (frame_info *this_frame, void **this_cache)
 {
   struct s390_unwind_cache *info
     = s390_frame_unwind_cache (this_frame, this_cache);
diff --git a/gdb/s390-tdep.h b/gdb/s390-tdep.h
index f0f7019ac6af..d262bd4a9aa5 100644
--- a/gdb/s390-tdep.h
+++ b/gdb/s390-tdep.h
@@ -314,7 +314,7 @@ enum
 /* Frame unwinding.  */
 
 extern struct value *s390_trad_frame_prev_register
-    (frame_info_ptr this_frame, struct trad_frame_saved_reg saved_regs[],
+    (frame_info *this_frame, struct trad_frame_saved_reg saved_regs[],
      int regnum);
 
 extern const struct target_desc *tdesc_s390_linux32;
diff --git a/gdb/sentinel-frame.c b/gdb/sentinel-frame.c
index e1014fc0d7fb..cdf639107994 100644
--- a/gdb/sentinel-frame.c
+++ b/gdb/sentinel-frame.c
@@ -42,7 +42,7 @@ sentinel_frame_cache (struct regcache *regcache)
 /* Here the register value is taken direct from the register cache.  */
 
 static struct value *
-sentinel_frame_prev_register (frame_info_ptr this_frame,
+sentinel_frame_prev_register (frame_info *this_frame,
 			      void **this_prologue_cache,
 			      int regnum)
 {
@@ -57,7 +57,7 @@ sentinel_frame_prev_register (frame_info_ptr this_frame,
 }
 
 static void
-sentinel_frame_this_id (frame_info_ptr this_frame,
+sentinel_frame_this_id (frame_info *this_frame,
 			void **this_prologue_cache,
 			struct frame_id *this_id)
 {
@@ -68,7 +68,7 @@ sentinel_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct gdbarch *
-sentinel_frame_prev_arch (frame_info_ptr this_frame,
+sentinel_frame_prev_arch (frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   struct frame_unwind_cache *cache
diff --git a/gdb/sh-linux-tdep.c b/gdb/sh-linux-tdep.c
index 9802fd44a203..939c138fc719 100644
--- a/gdb/sh-linux-tdep.c
+++ b/gdb/sh-linux-tdep.c
@@ -77,7 +77,7 @@ static const struct sh_corefile_regmap fpregs_table[] =
 /* SH signal handler frame support.  */
 
 static void
-sh_linux_sigtramp_cache (frame_info_ptr this_frame,
+sh_linux_sigtramp_cache (frame_info *this_frame,
 			 struct trad_frame_cache *this_cache,
 			 CORE_ADDR func, int regs_offset)
 {
@@ -114,7 +114,7 @@ sh_linux_sigtramp_cache (frame_info_ptr this_frame,
 
 static void
 sh_linux_sigreturn_init (const struct tramp_frame *self,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 struct trad_frame_cache *this_cache,
 			 CORE_ADDR func)
 {
@@ -125,7 +125,7 @@ sh_linux_sigreturn_init (const struct tramp_frame *self,
 
 static void
 sh_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    struct trad_frame_cache *this_cache,
 			    CORE_ADDR func)
 {
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index a2e91483229e..10b5e7a67512 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -1752,7 +1752,7 @@ sh_sh2a_register_sim_regno (struct gdbarch *gdbarch, int nr)
 static void
 sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			  struct dwarf2_frame_state_reg *reg,
-			  frame_info_ptr this_frame)
+			  frame_info *this_frame)
 {
   /* Mark the PC as the destination for the return address.  */
   if (regnum == gdbarch_pc_regnum (gdbarch))
@@ -1822,7 +1822,7 @@ sh_alloc_frame_cache (void)
 }
 
 static struct sh_frame_cache *
-sh_frame_cache (frame_info_ptr this_frame, void **this_cache)
+sh_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct sh_frame_cache *cache;
@@ -1889,7 +1889,7 @@ sh_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static struct value *
-sh_frame_prev_register (frame_info_ptr this_frame,
+sh_frame_prev_register (frame_info *this_frame,
 			void **this_cache, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1914,7 +1914,7 @@ sh_frame_prev_register (frame_info_ptr this_frame,
 }
 
 static void
-sh_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+sh_frame_this_id (frame_info *this_frame, void **this_cache,
 		  struct frame_id *this_id)
 {
   struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
@@ -1937,7 +1937,7 @@ static const struct frame_unwind sh_frame_unwind = {
 };
 
 static CORE_ADDR
-sh_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+sh_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
 
@@ -1952,7 +1952,7 @@ static const struct frame_base sh_frame_base = {
 };
 
 static struct sh_frame_cache *
-sh_make_stub_cache (frame_info_ptr this_frame)
+sh_make_stub_cache (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct sh_frame_cache *cache;
@@ -1966,7 +1966,7 @@ sh_make_stub_cache (frame_info_ptr this_frame)
 }
 
 static void
-sh_stub_this_id (frame_info_ptr this_frame, void **this_cache,
+sh_stub_this_id (frame_info *this_frame, void **this_cache,
 		 struct frame_id *this_id)
 {
   struct sh_frame_cache *cache;
@@ -1980,7 +1980,7 @@ sh_stub_this_id (frame_info_ptr this_frame, void **this_cache,
 
 static int
 sh_stub_unwind_sniffer (const struct frame_unwind *self,
-			frame_info_ptr this_frame,
+			frame_info *this_frame,
 			void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
diff --git a/gdb/sol2-tdep.c b/gdb/sol2-tdep.c
index 2cc2407656d8..31da9f3988d2 100644
--- a/gdb/sol2-tdep.c
+++ b/gdb/sol2-tdep.c
@@ -52,7 +52,7 @@ sol2_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 /* Return whether THIS_FRAME corresponds to a Solaris sigtramp routine.  */
 
 int
-sol2_sigtramp_p (frame_info_ptr this_frame)
+sol2_sigtramp_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
diff --git a/gdb/sol2-tdep.h b/gdb/sol2-tdep.h
index cd3bdc1f343e..7965ccf7e8e0 100644
--- a/gdb/sol2-tdep.h
+++ b/gdb/sol2-tdep.h
@@ -22,7 +22,7 @@
 
 struct gdbarch;
 
-int sol2_sigtramp_p (frame_info_ptr this_frame);
+int sol2_sigtramp_p (frame_info *this_frame);
 
 void sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
 
diff --git a/gdb/sparc-linux-tdep.c b/gdb/sparc-linux-tdep.c
index cd8c35ed5daa..7081325dc879 100644
--- a/gdb/sparc-linux-tdep.c
+++ b/gdb/sparc-linux-tdep.c
@@ -42,7 +42,7 @@
 /* Signal trampoline support.  */
 
 static void sparc32_linux_sigframe_init (const struct tramp_frame *self,
-					 frame_info_ptr this_frame,
+					 frame_info *this_frame,
 					 struct trad_frame_cache *this_cache,
 					 CORE_ADDR func);
 
@@ -117,7 +117,7 @@ enum
 
 static void
 sparc32_linux_sigframe_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/sparc-netbsd-tdep.c b/gdb/sparc-netbsd-tdep.c
index 479ec13aedaf..6ba3c6851f01 100644
--- a/gdb/sparc-netbsd-tdep.c
+++ b/gdb/sparc-netbsd-tdep.c
@@ -95,7 +95,7 @@ sparc32nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 }
 
 trad_frame_saved_reg *
-sparc32nbsd_sigcontext_saved_regs (frame_info_ptr this_frame)
+sparc32nbsd_sigcontext_saved_regs (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   trad_frame_saved_reg *saved_regs;
@@ -180,7 +180,7 @@ sparc32nbsd_sigcontext_saved_regs (frame_info_ptr this_frame)
 }
 
 static struct sparc_frame_cache *
-sparc32nbsd_sigcontext_frame_cache (frame_info_ptr this_frame,
+sparc32nbsd_sigcontext_frame_cache (frame_info *this_frame,
 				    void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -211,7 +211,7 @@ sparc32nbsd_sigcontext_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc32nbsd_sigcontext_frame_this_id (frame_info_ptr this_frame,
+sparc32nbsd_sigcontext_frame_this_id (frame_info *this_frame,
 				      void **this_cache,
 				      struct frame_id *this_id)
 {
@@ -222,7 +222,7 @@ sparc32nbsd_sigcontext_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc32nbsd_sigcontext_frame_prev_register (frame_info_ptr this_frame,
+sparc32nbsd_sigcontext_frame_prev_register (frame_info *this_frame,
 					    void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -233,7 +233,7 @@ sparc32nbsd_sigcontext_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc32nbsd_sigcontext_frame_sniffer (const struct frame_unwind *self,
-				      frame_info_ptr this_frame,
+				      frame_info *this_frame,
 				      void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/sparc-obsd-tdep.c b/gdb/sparc-obsd-tdep.c
index 57457dfa1153..44b36c0aa7ae 100644
--- a/gdb/sparc-obsd-tdep.c
+++ b/gdb/sparc-obsd-tdep.c
@@ -68,7 +68,7 @@ sparc32obsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 }
 
 static struct sparc_frame_cache *
-sparc32obsd_sigtramp_frame_cache (frame_info_ptr this_frame,
+sparc32obsd_sigtramp_frame_cache (frame_info *this_frame,
 				  void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -100,7 +100,7 @@ sparc32obsd_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc32obsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
+sparc32obsd_sigtramp_frame_this_id (frame_info *this_frame,
 				    void **this_cache,
 				    struct frame_id *this_id)
 {
@@ -111,7 +111,7 @@ sparc32obsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc32obsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+sparc32obsd_sigtramp_frame_prev_register (frame_info *this_frame,
 					  void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -122,7 +122,7 @@ sparc32obsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc32obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				    frame_info_ptr this_frame,
+				    frame_info *this_frame,
 				    void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c
index 8b862c4dea4c..344d790dbd4a 100644
--- a/gdb/sparc-sol2-tdep.c
+++ b/gdb/sparc-sol2-tdep.c
@@ -100,7 +100,7 @@ static const struct regset sparc32_sol2_fpregset =
 
 
 static struct sparc_frame_cache *
-sparc32_sol2_sigtramp_frame_cache (frame_info_ptr this_frame,
+sparc32_sol2_sigtramp_frame_cache (frame_info *this_frame,
 				   void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -151,7 +151,7 @@ sparc32_sol2_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc32_sol2_sigtramp_frame_this_id (frame_info_ptr this_frame,
+sparc32_sol2_sigtramp_frame_this_id (frame_info *this_frame,
 				     void **this_cache,
 				     struct frame_id *this_id)
 {
@@ -162,7 +162,7 @@ sparc32_sol2_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc32_sol2_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+sparc32_sol2_sigtramp_frame_prev_register (frame_info *this_frame,
 					   void **this_cache,
 					   int regnum)
 {
@@ -174,7 +174,7 @@ sparc32_sol2_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc32_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				     frame_info_ptr this_frame,
+				     frame_info *this_frame,
 				     void **this_cache)
 {
   return sol2_sigtramp_p (this_frame);
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index 49c055e43cb5..af3157ec1f78 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -1182,7 +1182,7 @@ sparc32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 /* Normal frames.  */
 
 struct sparc_frame_cache *
-sparc_frame_cache (frame_info_ptr this_frame, void **this_cache)
+sparc_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache;
 
@@ -1239,7 +1239,7 @@ sparc32_struct_return_from_sym (struct symbol *sym)
 }
 
 struct sparc_frame_cache *
-sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache)
+sparc32_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache;
   struct symbol *sym;
@@ -1275,7 +1275,7 @@ sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-sparc32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+sparc32_frame_this_id (frame_info *this_frame, void **this_cache,
 		       struct frame_id *this_id)
 {
   struct sparc_frame_cache *cache =
@@ -1289,7 +1289,7 @@ sparc32_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-sparc32_frame_prev_register (frame_info_ptr this_frame,
+sparc32_frame_prev_register (frame_info *this_frame,
 			     void **this_cache, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1359,7 +1359,7 @@ static const struct frame_unwind sparc32_frame_unwind =
 
 
 static CORE_ADDR
-sparc32_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+sparc32_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache =
     sparc32_frame_cache (this_frame, this_cache);
@@ -1376,7 +1376,7 @@ static const struct frame_base sparc32_frame_base =
 };
 
 static struct frame_id
-sparc_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+sparc_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR sp;
 
@@ -1545,7 +1545,7 @@ sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
 }
 
 static int
-sparc32_dwarf2_struct_return_p (frame_info_ptr this_frame)
+sparc32_dwarf2_struct_return_p (frame_info *this_frame)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
   struct symbol *sym = find_pc_function (pc);
@@ -1558,7 +1558,7 @@ sparc32_dwarf2_struct_return_p (frame_info_ptr this_frame)
 static void
 sparc32_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       frame_info_ptr this_frame)
+			       frame_info *this_frame)
 {
   int off;
 
diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h
index ffdf0a46e17e..d2b66acad535 100644
--- a/gdb/sparc-tdep.h
+++ b/gdb/sparc-tdep.h
@@ -207,10 +207,10 @@ extern CORE_ADDR sparc_analyze_prologue (struct gdbarch *gdbarch,
 					 struct sparc_frame_cache *cache);
 
 extern struct sparc_frame_cache *
-  sparc_frame_cache (frame_info_ptr this_frame, void **this_cache);
+  sparc_frame_cache (frame_info *this_frame, void **this_cache);
 
 extern struct sparc_frame_cache *
-  sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache);
+  sparc32_frame_cache (frame_info *this_frame, void **this_cache);
 
 extern int
   sparc_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc);
@@ -262,6 +262,6 @@ extern void sparc32nbsd_init_abi (struct gdbarch_info info,
 				  struct gdbarch *gdbarch);
 
 extern struct trad_frame_saved_reg *
-  sparc32nbsd_sigcontext_saved_regs (frame_info_ptr next_frame);
+  sparc32nbsd_sigcontext_saved_regs (frame_info *next_frame);
 
 #endif /* sparc-tdep.h */
diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c
index a13407a5e3b6..6c10646b040b 100644
--- a/gdb/sparc64-fbsd-tdep.c
+++ b/gdb/sparc64-fbsd-tdep.c
@@ -89,7 +89,7 @@ sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 }
 
 static struct sparc_frame_cache *
-sparc64fbsd_sigtramp_frame_cache (frame_info_ptr this_frame,
+sparc64fbsd_sigtramp_frame_cache (frame_info *this_frame,
 				   void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -162,7 +162,7 @@ sparc64fbsd_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc64fbsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
+sparc64fbsd_sigtramp_frame_this_id (frame_info *this_frame,
 				    void **this_cache,
 				    struct frame_id *this_id)
 {
@@ -173,7 +173,7 @@ sparc64fbsd_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc64fbsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+sparc64fbsd_sigtramp_frame_prev_register (frame_info *this_frame,
 					  void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -184,7 +184,7 @@ sparc64fbsd_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc64fbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				    frame_info_ptr this_frame,
+				    frame_info *this_frame,
 				    void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/sparc64-linux-tdep.c b/gdb/sparc64-linux-tdep.c
index fc8bd065c4cd..4afb40c7fac1 100644
--- a/gdb/sparc64-linux-tdep.c
+++ b/gdb/sparc64-linux-tdep.c
@@ -52,7 +52,7 @@
 /* Signal trampoline support.  */
 
 static void sparc64_linux_sigframe_init (const struct tramp_frame *self,
-					 frame_info_ptr this_frame,
+					 frame_info *this_frame,
 					 struct trad_frame_cache *this_cache,
 					 CORE_ADDR func);
 
@@ -73,7 +73,7 @@ static const struct tramp_frame sparc64_linux_rt_sigframe =
 
 static void
 sparc64_linux_sigframe_init (const struct tramp_frame *self,
-			     frame_info_ptr this_frame,
+			     frame_info *this_frame,
 			     struct trad_frame_cache *this_cache,
 			     CORE_ADDR func)
 {
diff --git a/gdb/sparc64-netbsd-tdep.c b/gdb/sparc64-netbsd-tdep.c
index fb15877ccf52..fdf4a48df814 100644
--- a/gdb/sparc64-netbsd-tdep.c
+++ b/gdb/sparc64-netbsd-tdep.c
@@ -86,7 +86,7 @@ sparc64nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 
 trad_frame_saved_reg *
 sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
-				   frame_info_ptr this_frame)
+				   frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   trad_frame_saved_reg *saved_regs;
@@ -149,7 +149,7 @@ sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
 }
 
 static struct sparc_frame_cache *
-sparc64nbsd_sigcontext_frame_cache (frame_info_ptr this_frame,
+sparc64nbsd_sigcontext_frame_cache (frame_info *this_frame,
 				    void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -185,7 +185,7 @@ sparc64nbsd_sigcontext_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc64nbsd_sigcontext_frame_this_id (frame_info_ptr this_frame,
+sparc64nbsd_sigcontext_frame_this_id (frame_info *this_frame,
 				      void **this_cache,
 				      struct frame_id *this_id)
 {
@@ -196,7 +196,7 @@ sparc64nbsd_sigcontext_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc64nbsd_sigcontext_frame_prev_register (frame_info_ptr this_frame,
+sparc64nbsd_sigcontext_frame_prev_register (frame_info *this_frame,
 					    void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -207,7 +207,7 @@ sparc64nbsd_sigcontext_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc64nbsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				    frame_info_ptr this_frame,
+				    frame_info *this_frame,
 				    void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
diff --git a/gdb/sparc64-obsd-tdep.c b/gdb/sparc64-obsd-tdep.c
index 1b887df89b2a..16dfdba41786 100644
--- a/gdb/sparc64-obsd-tdep.c
+++ b/gdb/sparc64-obsd-tdep.c
@@ -150,7 +150,7 @@ sparc64obsd_pc_in_sigtramp (CORE_ADDR pc, const char *name)
 }
 
 static struct sparc_frame_cache *
-sparc64obsd_frame_cache (frame_info_ptr this_frame, void **this_cache)
+sparc64obsd_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache;
   CORE_ADDR addr;
@@ -186,7 +186,7 @@ sparc64obsd_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-sparc64obsd_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+sparc64obsd_frame_this_id (frame_info *this_frame, void **this_cache,
 			   struct frame_id *this_id)
 {
   struct sparc_frame_cache *cache =
@@ -196,7 +196,7 @@ sparc64obsd_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-sparc64obsd_frame_prev_register (frame_info_ptr this_frame,
+sparc64obsd_frame_prev_register (frame_info *this_frame,
 				 void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -207,7 +207,7 @@ sparc64obsd_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc64obsd_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				    frame_info_ptr this_frame,
+				    frame_info *this_frame,
 				    void **this_cache)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -234,7 +234,7 @@ static const struct frame_unwind sparc64obsd_frame_unwind =
 /* Kernel debugging support.  */
 
 static struct sparc_frame_cache *
-sparc64obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
+sparc64obsd_trapframe_cache (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache;
   CORE_ADDR sp, trapframe_addr;
@@ -263,7 +263,7 @@ sparc64obsd_trapframe_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-sparc64obsd_trapframe_this_id (frame_info_ptr this_frame,
+sparc64obsd_trapframe_this_id (frame_info *this_frame,
 			       void **this_cache, struct frame_id *this_id)
 {
   struct sparc_frame_cache *cache =
@@ -273,7 +273,7 @@ sparc64obsd_trapframe_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc64obsd_trapframe_prev_register (frame_info_ptr this_frame,
+sparc64obsd_trapframe_prev_register (frame_info *this_frame,
 				     void **this_cache, int regnum)
 {
   struct sparc_frame_cache *cache =
@@ -284,7 +284,7 @@ sparc64obsd_trapframe_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc64obsd_trapframe_sniffer (const struct frame_unwind *self,
-			       frame_info_ptr this_frame,
+			       frame_info *this_frame,
 			       void **this_cache)
 {
   CORE_ADDR pc;
diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
index 3d52d8caa350..11d777631740 100644
--- a/gdb/sparc64-sol2-tdep.c
+++ b/gdb/sparc64-sol2-tdep.c
@@ -99,7 +99,7 @@ static const struct regset sparc64_sol2_fpregset =
 
 
 static struct sparc_frame_cache *
-sparc64_sol2_sigtramp_frame_cache (frame_info_ptr this_frame,
+sparc64_sol2_sigtramp_frame_cache (frame_info *this_frame,
 				   void **this_cache)
 {
   struct sparc_frame_cache *cache;
@@ -154,7 +154,7 @@ sparc64_sol2_sigtramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-sparc64_sol2_sigtramp_frame_this_id (frame_info_ptr this_frame,
+sparc64_sol2_sigtramp_frame_this_id (frame_info *this_frame,
 				     void **this_cache,
 				     struct frame_id *this_id)
 {
@@ -165,7 +165,7 @@ sparc64_sol2_sigtramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-sparc64_sol2_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+sparc64_sol2_sigtramp_frame_prev_register (frame_info *this_frame,
 					   void **this_cache,
 					   int regnum)
 {
@@ -177,7 +177,7 @@ sparc64_sol2_sigtramp_frame_prev_register (frame_info_ptr this_frame,
 
 static int
 sparc64_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self,
-				     frame_info_ptr this_frame,
+				     frame_info *this_frame,
 				     void **this_cache)
 {
   return sol2_sigtramp_p (this_frame);
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
index b1368c7fc548..7bbfa32daa30 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -1061,13 +1061,13 @@ sparc64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
 /* Normal frames.  */
 
 static struct sparc_frame_cache *
-sparc64_frame_cache (frame_info_ptr this_frame, void **this_cache)
+sparc64_frame_cache (frame_info *this_frame, void **this_cache)
 {
   return sparc_frame_cache (this_frame, this_cache);
 }
 
 static void
-sparc64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+sparc64_frame_this_id (frame_info *this_frame, void **this_cache,
 		       struct frame_id *this_id)
 {
   struct sparc_frame_cache *cache =
@@ -1081,7 +1081,7 @@ sparc64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-sparc64_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+sparc64_frame_prev_register (frame_info *this_frame, void **this_cache,
 			     int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1145,7 +1145,7 @@ static const struct frame_unwind sparc64_frame_unwind =
 
 
 static CORE_ADDR
-sparc64_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+sparc64_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct sparc_frame_cache *cache =
     sparc64_frame_cache (this_frame, this_cache);
@@ -1764,7 +1764,7 @@ sparc64_return_value (struct gdbarch *gdbarch, struct value *function,
 static void
 sparc64_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       frame_info_ptr this_frame)
+			       frame_info *this_frame)
 {
   switch (regnum)
     {
diff --git a/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h
index 3fcfc394edc5..e23094b40e02 100644
--- a/gdb/sparc64-tdep.h
+++ b/gdb/sparc64-tdep.h
@@ -20,7 +20,6 @@
 #ifndef SPARC64_TDEP_H
 #define SPARC64_TDEP_H 1
 
-class frame_info_ptr;
 struct gdbarch;
 struct regcache;
 struct sparc_gregmap;
@@ -131,7 +130,7 @@ extern const struct sparc_gregmap sparc64nbsd_gregmap;
 
 extern struct trad_frame_saved_reg *
   sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
-				     frame_info_ptr next_frame);
+				     frame_info *next_frame);
 
 extern const struct sparc_fpregmap sparc64_bsd_fpregmap;
 
diff --git a/gdb/std-regs.c b/gdb/std-regs.c
index 5b880a49b169..110732e098a8 100644
--- a/gdb/std-regs.c
+++ b/gdb/std-regs.c
@@ -27,7 +27,7 @@
 #include "gdbarch.h"
 
 static struct value *
-value_of_builtin_frame_fp_reg (frame_info_ptr frame, const void *baton)
+value_of_builtin_frame_fp_reg (frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
@@ -53,7 +53,7 @@ value_of_builtin_frame_fp_reg (frame_info_ptr frame, const void *baton)
 }
 
 static struct value *
-value_of_builtin_frame_pc_reg (frame_info_ptr frame, const void *baton)
+value_of_builtin_frame_pc_reg (frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
@@ -72,7 +72,7 @@ value_of_builtin_frame_pc_reg (frame_info_ptr frame, const void *baton)
 }
 
 static struct value *
-value_of_builtin_frame_sp_reg (frame_info_ptr frame, const void *baton)
+value_of_builtin_frame_sp_reg (frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
@@ -82,7 +82,7 @@ value_of_builtin_frame_sp_reg (frame_info_ptr frame, const void *baton)
 }
 
 static struct value *
-value_of_builtin_frame_ps_reg (frame_info_ptr frame, const void *baton)
+value_of_builtin_frame_ps_reg (frame_info *frame, const void *baton)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
diff --git a/gdb/symfile.h b/gdb/symfile.h
index ffd1acddfdb2..36f69468367e 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -37,7 +37,6 @@ struct obj_section;
 struct obstack;
 struct block;
 struct value;
-class frame_info_ptr;
 struct agent_expr;
 struct axs_value;
 class probe;
diff --git a/gdb/tic6x-linux-tdep.c b/gdb/tic6x-linux-tdep.c
index d8309f74e7c4..905c31757769 100644
--- a/gdb/tic6x-linux-tdep.c
+++ b/gdb/tic6x-linux-tdep.c
@@ -79,7 +79,7 @@ tic6x_register_sigcontext_offset (unsigned int regnum, struct gdbarch *gdbarch)
 
 static void
 tic6x_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			       frame_info_ptr this_frame,
+			       frame_info *this_frame,
 			       struct trad_frame_cache *this_cache,
 			       CORE_ADDR func)
 {
diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c
index 054f0e6f3b2b..775ff322863a 100644
--- a/gdb/tic6x-tdep.c
+++ b/gdb/tic6x-tdep.c
@@ -142,7 +142,7 @@ static CORE_ADDR
 tic6x_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR start_pc,
 			const CORE_ADDR current_pc,
 			struct tic6x_unwind_cache *cache,
-			frame_info_ptr this_frame)
+			frame_info *this_frame)
 {
   unsigned int src_reg, base_reg, dst_reg;
   int i;
@@ -340,7 +340,7 @@ tic6x_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 static void
 tic6x_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			     struct dwarf2_frame_state_reg *reg,
-			     frame_info_ptr this_frame)
+			     frame_info *this_frame)
 {
   /* Mark the PC as the destination for the return address.  */
   if (regnum == gdbarch_pc_regnum (gdbarch))
@@ -365,7 +365,7 @@ tic6x_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 /* This is the implementation of gdbarch method unwind_pc.  */
 
 static CORE_ADDR
-tic6x_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+tic6x_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[8];
 
@@ -376,7 +376,7 @@ tic6x_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 /* Frame base handling.  */
 
 static struct tic6x_unwind_cache*
-tic6x_frame_unwind_cache (frame_info_ptr this_frame,
+tic6x_frame_unwind_cache (frame_info *this_frame,
 			  void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -404,7 +404,7 @@ tic6x_frame_unwind_cache (frame_info_ptr this_frame,
 }
 
 static void
-tic6x_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+tic6x_frame_this_id (frame_info *this_frame, void **this_cache,
 		     struct frame_id *this_id)
 {
   struct tic6x_unwind_cache *cache =
@@ -418,7 +418,7 @@ tic6x_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-tic6x_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+tic6x_frame_prev_register (frame_info *this_frame, void **this_cache,
 			   int regnum)
 {
   struct tic6x_unwind_cache *cache =
@@ -445,7 +445,7 @@ tic6x_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
 }
 
 static CORE_ADDR
-tic6x_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+tic6x_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct tic6x_unwind_cache *info
     = tic6x_frame_unwind_cache (this_frame, this_cache);
@@ -473,7 +473,7 @@ static const struct frame_base tic6x_frame_base =
 
 
 static struct tic6x_unwind_cache *
-tic6x_make_stub_cache (frame_info_ptr this_frame)
+tic6x_make_stub_cache (frame_info *this_frame)
 {
   struct tic6x_unwind_cache *cache;
 
@@ -489,7 +489,7 @@ tic6x_make_stub_cache (frame_info_ptr this_frame)
 }
 
 static void
-tic6x_stub_this_id (frame_info_ptr this_frame, void **this_cache,
+tic6x_stub_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct tic6x_unwind_cache *cache;
@@ -503,7 +503,7 @@ tic6x_stub_this_id (frame_info_ptr this_frame, void **this_cache,
 
 static int
 tic6x_stub_unwind_sniffer (const struct frame_unwind *self,
-			   frame_info_ptr this_frame,
+			   frame_info *this_frame,
 			   void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c
index ef38436801fb..7006fead5918 100644
--- a/gdb/tilegx-linux-tdep.c
+++ b/gdb/tilegx-linux-tdep.c
@@ -34,7 +34,7 @@
 
 static void
 tilegx_linux_sigframe_init (const struct tramp_frame *self,
-			    frame_info_ptr this_frame,
+			    frame_info *this_frame,
 			    struct trad_frame_cache *this_cache,
 			    CORE_ADDR func)
 {
diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c
index ecd27b8b33d8..22bab2affe43 100644
--- a/gdb/tilegx-tdep.c
+++ b/gdb/tilegx-tdep.c
@@ -362,7 +362,7 @@ static CORE_ADDR
 tilegx_analyze_prologue (struct gdbarch* gdbarch,
 			 CORE_ADDR start_addr, CORE_ADDR end_addr,
 			 struct tilegx_frame_cache *cache,
-			 frame_info_ptr next_frame)
+			 frame_info *next_frame)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR next_addr;
@@ -833,7 +833,7 @@ typedef BP_MANIPULATION (tilegx_break_insn) tilegx_breakpoint;
 /* Normal frames.  */
 
 static struct tilegx_frame_cache *
-tilegx_frame_cache (frame_info_ptr this_frame, void **this_cache)
+tilegx_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct tilegx_frame_cache *cache;
@@ -864,7 +864,7 @@ tilegx_frame_cache (frame_info_ptr this_frame, void **this_cache)
 /* Retrieve the value of REGNUM in FRAME.  */
 
 static struct value*
-tilegx_frame_prev_register (frame_info_ptr this_frame,
+tilegx_frame_prev_register (frame_info *this_frame,
 			    void **this_cache,
 			    int regnum)
 {
@@ -878,7 +878,7 @@ tilegx_frame_prev_register (frame_info_ptr this_frame,
 /* Build frame id.  */
 
 static void
-tilegx_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+tilegx_frame_this_id (frame_info *this_frame, void **this_cache,
 		      struct frame_id *this_id)
 {
   struct tilegx_frame_cache *info =
@@ -892,7 +892,7 @@ tilegx_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static CORE_ADDR
-tilegx_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+tilegx_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct tilegx_frame_cache *cache =
     tilegx_frame_cache (this_frame, this_cache);
diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
index 82d910942e6c..9019304b4823 100644
--- a/gdb/trad-frame.c
+++ b/gdb/trad-frame.c
@@ -29,14 +29,14 @@
 
 struct trad_frame_cache
 {
-  frame_info_ptr this_frame;
+  frame_info *this_frame;
   CORE_ADDR this_base;
   trad_frame_saved_reg *prev_regs;
   struct frame_id this_id;
 };
 
 struct trad_frame_cache *
-trad_frame_cache_zalloc (frame_info_ptr this_frame)
+trad_frame_cache_zalloc (frame_info *this_frame)
 {
   struct trad_frame_cache *this_trad_cache;
 
@@ -83,7 +83,7 @@ trad_frame_alloc_saved_regs (struct gdbarch *gdbarch)
    for all potential instruction sequences).  */
 
 trad_frame_saved_reg *
-trad_frame_alloc_saved_regs (frame_info_ptr this_frame)
+trad_frame_alloc_saved_regs (frame_info *this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
 
@@ -184,7 +184,7 @@ trad_frame_set_reg_value_bytes (struct trad_frame_cache *this_trad_cache,
 
 
 struct value *
-trad_frame_get_prev_register (frame_info_ptr this_frame,
+trad_frame_get_prev_register (frame_info *this_frame,
 			      trad_frame_saved_reg this_saved_regs[],
 			      int regnum)
 {
@@ -209,7 +209,7 @@ trad_frame_get_prev_register (frame_info_ptr this_frame,
 
 struct value *
 trad_frame_get_register (struct trad_frame_cache *this_trad_cache,
-			 frame_info_ptr this_frame,
+			 frame_info *this_frame,
 			 int regnum)
 {
   return trad_frame_get_prev_register (this_frame, this_trad_cache->prev_regs,
diff --git a/gdb/trad-frame.h b/gdb/trad-frame.h
index e193eb594e2d..c4f87a01c955 100644
--- a/gdb/trad-frame.h
+++ b/gdb/trad-frame.h
@@ -22,7 +22,6 @@
 
 #include "frame.h"		/* For "struct frame_id".  */
 
-class frame_info_ptr;
 struct regcache_map_entry;
 struct trad_frame_cache;
 
@@ -31,7 +30,7 @@ struct trad_frame_cache;
    The entire cache is populated in a single pass and then generic
    routines are used to extract the various cache values.  */
 
-struct trad_frame_cache *trad_frame_cache_zalloc (frame_info_ptr);
+struct trad_frame_cache *trad_frame_cache_zalloc (frame_info *this_frame);
 
 /* This frame's ID.  */
 void trad_frame_set_id (struct trad_frame_cache *this_trad_cache,
@@ -59,7 +58,7 @@ void trad_frame_set_reg_value_bytes (struct trad_frame_cache *this_trad_cache,
 				     gdb::array_view<const gdb_byte> bytes);
 
 struct value *trad_frame_get_register (struct trad_frame_cache *this_trad_cache,
-				       frame_info_ptr this_frame,
+				       frame_info *this_frame,
 				       int regnum);
 
 /* Describes the kind of encoding a stored register has.  */
@@ -194,12 +193,12 @@ void trad_frame_reset_saved_regs (struct gdbarch *gdbarch,
 				  trad_frame_saved_reg *regs);
 
 /* Return a freshly allocated (and initialized) trad_frame array.  */
-trad_frame_saved_reg *trad_frame_alloc_saved_regs (frame_info_ptr);
+trad_frame_saved_reg *trad_frame_alloc_saved_regs (frame_info *);
 trad_frame_saved_reg *trad_frame_alloc_saved_regs (struct gdbarch *);
 
 /* Given the trad_frame info, return the location of the specified
    register.  */
-struct value *trad_frame_get_prev_register (frame_info_ptr this_frame,
+struct value *trad_frame_get_prev_register (frame_info *this_frame,
 					    trad_frame_saved_reg this_saved_regs[],
 					    int regnum);
 
diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c
index f5926dc1ee73..32d2153b8601 100644
--- a/gdb/tramp-frame.c
+++ b/gdb/tramp-frame.c
@@ -40,7 +40,7 @@ struct tramp_frame_cache
 };
 
 static struct trad_frame_cache *
-tramp_frame_cache (frame_info_ptr this_frame,
+tramp_frame_cache (frame_info *this_frame,
 		   void **this_cache)
 {
   struct tramp_frame_cache *tramp_cache
@@ -58,7 +58,7 @@ tramp_frame_cache (frame_info_ptr this_frame,
 }
 
 static void
-tramp_frame_this_id (frame_info_ptr this_frame,
+tramp_frame_this_id (frame_info *this_frame,
 		     void **this_cache,
 		     struct frame_id *this_id)
 {
@@ -69,7 +69,7 @@ tramp_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-tramp_frame_prev_register (frame_info_ptr this_frame,
+tramp_frame_prev_register (frame_info *this_frame,
 			   void **this_cache,
 			   int prev_regnum)
 {
@@ -81,7 +81,7 @@ tramp_frame_prev_register (frame_info_ptr this_frame,
 
 static CORE_ADDR
 tramp_frame_start (const struct tramp_frame *tramp,
-		   frame_info_ptr this_frame, CORE_ADDR pc)
+		   frame_info *this_frame, CORE_ADDR pc)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -121,7 +121,7 @@ tramp_frame_start (const struct tramp_frame *tramp,
 
 static int
 tramp_frame_sniffer (const struct frame_unwind *self,
-		     frame_info_ptr this_frame,
+		     frame_info *this_frame,
 		     void **this_cache)
 {
   const struct tramp_frame *tramp = self->unwind_data->tramp_frame;
diff --git a/gdb/tramp-frame.h b/gdb/tramp-frame.h
index 4e7dcb68eaab..e9dea2a3f3c3 100644
--- a/gdb/tramp-frame.h
+++ b/gdb/tramp-frame.h
@@ -23,7 +23,6 @@
 #include "frame.h"		/* For "enum frame_type".  */
 
 struct trad_frame;
-class frame_info_ptr;
 struct trad_frame_cache;
 
 /* A trampoline consists of a small sequence of instructions placed at
@@ -66,7 +65,7 @@ struct tramp_frame
   /* Initialize a trad-frame cache corresponding to the tramp-frame.
      FUNC is the address of the instruction TRAMP[0] in memory.  */
   void (*init) (const struct tramp_frame *self,
-		frame_info_ptr this_frame,
+		frame_info *this_frame,
 		struct trad_frame_cache *this_cache,
 		CORE_ADDR func);
   /* Return non-zero if the tramp-frame is valid for the PC requested.
@@ -74,7 +73,7 @@ struct tramp_frame
      sequence against if required.  If this is NULL, then the tramp-frame
      is valid for any PC.  */
   int (*validate) (const struct tramp_frame *self,
-		   frame_info_ptr this_frame,
+		   frame_info *this_frame,
 		   CORE_ADDR *pc);
 };
 
diff --git a/gdb/user-regs.c b/gdb/user-regs.c
index e699045e1a0d..af246c2db977 100644
--- a/gdb/user-regs.c
+++ b/gdb/user-regs.c
@@ -44,7 +44,7 @@ struct user_reg
   /* Avoid the "read" symbol name as it conflicts with a preprocessor symbol
      in the NetBSD header for Stack Smashing Protection, that wraps the read(2)
      syscall.  */
-  struct value *(*xread) (frame_info_ptr frame, const void *baton);
+  struct value *(*xread) (frame_info *frame, const void *baton);
   const void *baton;
   struct user_reg *next;
 };
@@ -203,7 +203,7 @@ user_reg_map_regnum_to_name (struct gdbarch *gdbarch, int regnum)
 }
 
 struct value *
-value_of_user_reg (int regnum, frame_info_ptr frame)
+value_of_user_reg (int regnum, frame_info *frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   int maxregs = gdbarch_num_cooked_regs (gdbarch);
diff --git a/gdb/user-regs.h b/gdb/user-regs.h
index 10eaf59e1971..7f68dd2631f2 100644
--- a/gdb/user-regs.h
+++ b/gdb/user-regs.h
@@ -38,7 +38,9 @@
    of assumed to be read-only.  Should it, for instance, return a
    register descriptor that contains all the relevant access methods.  */
 
-class frame_info_ptr;
+#include "frame-info.h"
+
+struct frame_info;
 struct gdbarch;
 
 /* Given an architecture, map a user visible register name onto its
@@ -56,9 +58,17 @@ extern const char *user_reg_map_regnum_to_name (struct gdbarch *gdbarch,
    bytes as, at the time the register is being added, the type needed
    to describe the register has not bee initialized.  */
 
-typedef struct value *(user_reg_read_ftype) (frame_info_ptr frame,
+typedef struct value *(user_reg_read_ftype) (frame_info *frame,
 					     const void *baton);
-extern struct value *value_of_user_reg (int regnum, frame_info_ptr frame);
+extern struct value *value_of_user_reg (int regnum, frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline value *
+value_of_user_reg (int regnum, frame_info_ptr frame)
+{
+  return value_of_user_reg (regnum, frame.get ());
+}
 
 /* Add a builtin register (present in all architectures).  */
 extern void user_reg_add_builtin (const char *name,
diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c
index a40e9abf077d..d790202306e5 100644
--- a/gdb/v850-tdep.c
+++ b/gdb/v850-tdep.c
@@ -1212,7 +1212,7 @@ v850_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 }
 
 static struct v850_frame_cache *
-v850_alloc_frame_cache (frame_info_ptr this_frame)
+v850_alloc_frame_cache (frame_info *this_frame)
 {
   struct v850_frame_cache *cache;
 
@@ -1231,7 +1231,7 @@ v850_alloc_frame_cache (frame_info_ptr this_frame)
 }
 
 static struct v850_frame_cache *
-v850_frame_cache (frame_info_ptr this_frame, void **this_cache)
+v850_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct v850_frame_cache *cache;
@@ -1297,7 +1297,7 @@ v850_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
 
 static struct value *
-v850_frame_prev_register (frame_info_ptr this_frame,
+v850_frame_prev_register (frame_info *this_frame,
 			  void **this_cache, int regnum)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
@@ -1308,7 +1308,7 @@ v850_frame_prev_register (frame_info_ptr this_frame,
 }
 
 static void
-v850_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+v850_frame_this_id (frame_info *this_frame, void **this_cache,
 		    struct frame_id *this_id)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
@@ -1331,7 +1331,7 @@ static const struct frame_unwind v850_frame_unwind = {
 };
 
 static CORE_ADDR
-v850_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+v850_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
 
diff --git a/gdb/value.c b/gdb/value.c
index 74af654c4510..99ff4dde6031 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -4102,9 +4102,8 @@ value_fetch_lazy_register (struct value *val)
   if (frame_debug)
     {
       struct gdbarch *gdbarch;
-      frame_info_ptr frame;
-      frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val));
-      frame = get_prev_frame_always (frame);
+      frame_info *frame = frame_find_by_id (VALUE_NEXT_FRAME_ID (val)).get ();
+      frame = get_prev_frame_always_raw (frame);
       regnum = VALUE_REGNUM (val);
       gdbarch = get_frame_arch (frame);
 
diff --git a/gdb/value.h b/gdb/value.h
index 2d148ce13d3d..ec6e85b3a0ca 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -723,14 +723,20 @@ extern struct value *default_value_from_register (struct gdbarch *gdbarch,
 						  int regnum,
 						  struct frame_id frame_id);
 
-extern void read_frame_register_value (struct value *value,
-				       frame_info_ptr frame);
+extern void read_frame_register_value (struct value *value, frame_info *frame);
 
 extern struct value *value_from_register (struct type *type, int regnum,
-					  frame_info_ptr frame);
+					  frame_info *frame);
 
-extern CORE_ADDR address_from_register (int regnum,
-					frame_info_ptr frame);
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline value *
+value_from_register (type *type, int regnum, frame_info_ptr frame)
+{
+  return value_from_register (type, regnum, frame.get ());
+}
+
+extern CORE_ADDR address_from_register (int regnum, frame_info *frame);
 
 extern struct value *value_of_variable (struct symbol *var,
 					const struct block *b);
@@ -738,9 +744,17 @@ extern struct value *value_of_variable (struct symbol *var,
 extern struct value *address_of_variable (struct symbol *var,
 					  const struct block *b);
 
-extern struct value *value_of_register (int regnum, frame_info_ptr frame);
+extern struct value *value_of_register (int regnum, frame_info *frame);
+
+/* Same as the above, but accept a frame_info_ptr.  */
+
+static inline value *
+value_of_register (int regnum, frame_info_ptr frame)
+{
+  return value_of_register (regnum, frame.get ());
+}
 
-struct value *value_of_register_lazy (frame_info_ptr frame, int regnum);
+struct value *value_of_register_lazy (frame_info *frame, int regnum);
 
 /* Return the symbol's reading requirement.  */
 
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 9dc6ecd5f354..d311da284222 100644
--- a/gdb/vax-tdep.c
+++ b/gdb/vax-tdep.c
@@ -187,7 +187,7 @@ vax_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 }
 
 static struct frame_id
-vax_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+vax_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR fp;
 
@@ -303,7 +303,7 @@ struct vax_frame_cache
 };
 
 static struct vax_frame_cache *
-vax_frame_cache (frame_info_ptr this_frame, void **this_cache)
+vax_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct vax_frame_cache *cache;
   CORE_ADDR addr;
@@ -365,7 +365,7 @@ vax_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static void
-vax_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+vax_frame_this_id (frame_info *this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
   struct vax_frame_cache *cache = vax_frame_cache (this_frame, this_cache);
@@ -378,7 +378,7 @@ vax_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-vax_frame_prev_register (frame_info_ptr this_frame,
+vax_frame_prev_register (frame_info *this_frame,
 			 void **this_cache, int regnum)
 {
   struct vax_frame_cache *cache = vax_frame_cache (this_frame, this_cache);
@@ -399,7 +399,7 @@ static const struct frame_unwind vax_frame_unwind =
 
 
 static CORE_ADDR
-vax_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+vax_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct vax_frame_cache *cache = vax_frame_cache (this_frame, this_cache);
 
@@ -407,7 +407,7 @@ vax_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 }
 
 static CORE_ADDR
-vax_frame_args_address (frame_info_ptr this_frame, void **this_cache)
+vax_frame_args_address (frame_info *this_frame, void **this_cache)
 {
   return get_frame_register_unsigned (this_frame, VAX_AP_REGNUM);
 }
diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
index 3256c83ec129..9ec4acfb2319 100644
--- a/gdb/xstormy16-tdep.c
+++ b/gdb/xstormy16-tdep.c
@@ -306,7 +306,7 @@ static CORE_ADDR
 xstormy16_analyze_prologue (struct gdbarch *gdbarch,
 			    CORE_ADDR start_addr, CORE_ADDR end_addr,
 			    struct xstormy16_frame_cache *cache,
-			    frame_info_ptr this_frame)
+			    frame_info *this_frame)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR next_addr;
@@ -655,7 +655,7 @@ xstormy16_alloc_frame_cache (void)
 }
 
 static struct xstormy16_frame_cache *
-xstormy16_frame_cache (frame_info_ptr this_frame, void **this_cache)
+xstormy16_frame_cache (frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct xstormy16_frame_cache *cache;
@@ -691,7 +691,7 @@ xstormy16_frame_cache (frame_info_ptr this_frame, void **this_cache)
 }
 
 static struct value *
-xstormy16_frame_prev_register (frame_info_ptr this_frame, 
+xstormy16_frame_prev_register (frame_info *this_frame,
 			       void **this_cache, int regnum)
 {
   struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
@@ -709,7 +709,7 @@ xstormy16_frame_prev_register (frame_info_ptr this_frame,
 }
 
 static void
-xstormy16_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+xstormy16_frame_this_id (frame_info *this_frame, void **this_cache,
 			 struct frame_id *this_id)
 {
   struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
@@ -723,7 +723,7 @@ xstormy16_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static CORE_ADDR
-xstormy16_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+xstormy16_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
 							       this_cache);
diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
index 27634f5f4ced..634c6310b8e1 100644
--- a/gdb/xtensa-tdep.c
+++ b/gdb/xtensa-tdep.c
@@ -1023,13 +1023,13 @@ xtensa_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
 
 
 static CORE_ADDR
-xtensa_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
+xtensa_unwind_pc (struct gdbarch *gdbarch, frame_info *next_frame)
 {
   gdb_byte buf[8];
   CORE_ADDR pc;
 
   DEBUGTRACE ("xtensa_unwind_pc (next_frame = %s)\n", 
-		host_address_to_string (next_frame.get ()));
+		host_address_to_string (next_frame));
 
   frame_unwind_register (next_frame, gdbarch_pc_regnum (gdbarch), buf);
   pc = extract_typed_address (buf, builtin_type (gdbarch)->builtin_func_ptr);
@@ -1041,7 +1041,7 @@ xtensa_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 
 
 static struct frame_id
-xtensa_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+xtensa_dummy_id (struct gdbarch *gdbarch, frame_info *this_frame)
 {
   CORE_ADDR pc, fp;
   xtensa_gdbarch_tdep *tdep = gdbarch_tdep<xtensa_gdbarch_tdep> (gdbarch);
@@ -1214,16 +1214,16 @@ xtensa_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR current_pc)
 	cache->prev_sp = SP of the previous frame.  */
 
 static void
-call0_frame_cache (frame_info_ptr this_frame,
+call0_frame_cache (frame_info *this_frame,
 		   xtensa_frame_cache_t *cache, CORE_ADDR pc);
 
 static void
-xtensa_window_interrupt_frame_cache (frame_info_ptr this_frame,
+xtensa_window_interrupt_frame_cache (frame_info *this_frame,
 				     xtensa_frame_cache_t *cache,
 				     CORE_ADDR pc);
 
 static struct xtensa_frame_cache *
-xtensa_frame_cache (frame_info_ptr this_frame, void **this_cache)
+xtensa_frame_cache (frame_info *this_frame, void **this_cache)
 {
   xtensa_frame_cache_t *cache;
   CORE_ADDR ra, wb, ws, pc, sp, ps;
@@ -1389,7 +1389,7 @@ This message will not be repeated in this session.\n"));
 
 
 static void
-xtensa_frame_this_id (frame_info_ptr this_frame,
+xtensa_frame_this_id (frame_info *this_frame,
 		      void **this_cache,
 		      struct frame_id *this_id)
 {
@@ -1403,7 +1403,7 @@ xtensa_frame_this_id (frame_info_ptr this_frame,
 }
 
 static struct value *
-xtensa_frame_prev_register (frame_info_ptr this_frame,
+xtensa_frame_prev_register (frame_info *this_frame,
 			    void **this_cache,
 			    int regnum)
 {
@@ -1506,7 +1506,7 @@ xtensa_unwind =
 };
 
 static CORE_ADDR
-xtensa_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+xtensa_frame_base_address (frame_info *this_frame, void **this_cache)
 {
   struct xtensa_frame_cache *cache =
     xtensa_frame_cache (this_frame, this_cache);
@@ -2540,7 +2540,7 @@ call0_analyze_prologue (struct gdbarch *gdbarch,
 /* Initialize frame cache for the current frame in CALL0 ABI.  */
 
 static void
-call0_frame_cache (frame_info_ptr this_frame,
+call0_frame_cache (frame_info *this_frame,
 		   xtensa_frame_cache_t *cache, CORE_ADDR pc)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2889,7 +2889,7 @@ execute_code (struct gdbarch *gdbarch, CORE_ADDR current_pc, CORE_ADDR wb)
 /* Handle Window Overflow / Underflow exception frames.  */
 
 static void
-xtensa_window_interrupt_frame_cache (frame_info_ptr this_frame,
+xtensa_window_interrupt_frame_cache (frame_info *this_frame,
 				     xtensa_frame_cache_t *cache,
 				     CORE_ADDR pc)
 {
diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c
index 3141feb4d801..0272e0d6e5a0 100644
--- a/gdb/z80-tdep.c
+++ b/gdb/z80-tdep.c
@@ -555,7 +555,7 @@ z80_return_value (struct gdbarch *gdbarch, struct value *function,
 
 /* function unwinds current stack frame and returns next one */
 static struct z80_unwind_cache *
-z80_frame_unwind_cache (frame_info_ptr this_frame,
+z80_frame_unwind_cache (frame_info *this_frame,
 			void **this_prologue_cache)
 {
   CORE_ADDR start_pc, current_pc;
@@ -658,7 +658,7 @@ z80_frame_unwind_cache (frame_info_ptr this_frame,
 /* Given a GDB frame, determine the address of the calling function's
    frame.  This will be used to create a new GDB frame struct.  */
 static void
-z80_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+z80_frame_this_id (frame_info *this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
   struct frame_id id;
@@ -682,7 +682,7 @@ z80_frame_this_id (frame_info_ptr this_frame, void **this_cache,
 }
 
 static struct value *
-z80_frame_prev_register (frame_info_ptr this_frame,
+z80_frame_prev_register (frame_info *this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   struct z80_unwind_cache *info
