public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Bruno Larsen <blarsen@redhat.com>
To: Simon Marchi <simon.marchi@polymtl.ca>, gdb-patches@sourceware.org
Subject: Re: [PATCH 4/6] gdb: revert frame_unwind::this_id and callees to use `frame_info *`
Date: Mon, 12 Dec 2022 14:17:04 +0100	[thread overview]
Message-ID: <3a0c4952-e44e-bed8-518a-52156a16747b@redhat.com> (raw)
In-Reply-To: <20221202180052.212745-5-simon.marchi@polymtl.ca>

On 02/12/2022 19:00, Simon Marchi via Gdb-patches wrote:
> A following patch will change frame_info_ptr to grab the frame id and
> reinflate automatically.  This makes it so frame_info_ptr will no longer
> be able to wrap frame_info objects whose ids are being computed.  This
> means that the frame_unwind::this_id method can't take a frame_info_ptr
> anymore, since that's the entry point of computing frame ids.  And then,
> everything that "this_id" implementations can possibly call won't be
> able to accept a frame_info_ptr anymore.
>
> So, this patch started out as changing the prototype of
> frame_unwind::this_id and adjusting callees recursively until the code
> compiled again.
>
> The question is: doesn't this defeat the purpose of frame_info_ptr?  I
> think it depends on what we decide the purpose of frame_info_ptr is.
>
>   1. catch accesses to stale frame_info ptr (and assert if so)
>   2. reinflate frame_info objects automatically.
I agree with Tom's point, both points fix the bugs that we tackled when 
starting this, and I personally like the second option better.
>
> Right now, it does #1.  My goal is to make it to #2.  I think that is
> more in line with the original "reinflatable frames" idea, and in
> general more useful.  And since those frames whose id is being computed
> are by definition not reinflatable (you need to id to reinflate), it's
> not really useful to have frame_info_ptr on code paths that deal with
> frames whose id is currently being computed.  Reinflation only really
> makes sense for the "users" of the frame API, those who receive a frame
> with a computed id.  And by experience, this is where the "using stale
> frame_info" bugs happen, a user holding a frame_info across a target
> resumption.  If a frame cache reinit was to happen in the middle of a
> frame id computation, I think things would be seriously wrong.  After
> the reinit, we'd be computing an id for a frame_info that doesn't exist
> anymore, I don't think it make sense.
>
> There are many functions that can be used in both contexts (frames with
> ids computed, and frames with ids being computed).  value_of_register,
> for instance.  These functions must be changed back to take a raw
> frame_info pointer.  But to make things convenient to callers holding a
> frame_info_ptr, and to avoid having to change too many call sites, I
> introduced wrappers like this:
>
>      static inline value *
>      value_of_register (int regnum, frame_info_ptr frame)
>      {
>        return value_of_register (regnum, frame.get ());
>      }
>
> Since frame_info_ptr::get will, at the end of this series, automatically
> reinflate the wrapped frame_info object, if necessary, the caller still
> gets the "protection" offered by frame_info_ptr, at least up to that
> point.  Now, if a frame cache reinit was to happen inside that
> get_prev_frame call, we'd be screwed.  But I think the risk of it
> happening is pretty low, for this kind of functions.  And remember,
> since get_prev_frame is also used in the context of frame id
> computation, it's hard to imagine that it could happen.

s/get_prev_frame/value_of_register ? or am I missing something?

Regardless, your logic seems solid. I feel like a wrapper like this is 
better than a second class, unless we start seeing the issues you theorized.

>
> Now, we could have two separate class frame_info wrapper classes, one
> that is today's frame_info_ptr, whose goal is just to catch uses of
> stale frame_info objects, and one that is the one at the end of this
> series, whose goal is to do automatic reinflation.  The former one could
> continue being used in the paths involved in frame id computation.
> However, I'm not convinced it is worth it, due to (1) the low risk of
> this problem happening in these paths and (2) the availability of tools
> like ASan or Valgrind that will tell you precisely when a use-after-free
> happens.
>
> There are no user-visible changes expected with this patch.  I
> built-tested and regression-tested on Linux x86-64.  I don't think any
> platform-specific nat file needs to be changed, as they don't deal with
> frames.

For the patch itself, I took a look at it and saw nothing wrong, but I'm 
not confident I understand the code well enough to say it is ok. This is 
all I got:

Tested-By: Bruno Larsen <blarsen@redhat.com>

-- 
Cheers,
Bruno

> Change-Id: I68f4a0f52bdfea7d48d949c8239eeb830fbdadce
> ---
>   gdb/aarch64-fbsd-tdep.c     |   2 +-
>   gdb/aarch64-linux-tdep.c    |   2 +-
>   gdb/aarch64-tdep.c          |  30 ++--
>   gdb/alpha-linux-tdep.c      |   2 +-
>   gdb/alpha-mdebug-tdep.c     |  16 +-
>   gdb/alpha-netbsd-tdep.c     |   2 +-
>   gdb/alpha-obsd-tdep.c       |   2 +-
>   gdb/alpha-tdep.c            |  18 +-
>   gdb/alpha-tdep.h            |   2 +-
>   gdb/amd64-darwin-tdep.c     |   2 +-
>   gdb/amd64-fbsd-tdep.c       |   2 +-
>   gdb/amd64-linux-tdep.c      |   6 +-
>   gdb/amd64-netbsd-tdep.c     |   4 +-
>   gdb/amd64-obsd-tdep.c       |  12 +-
>   gdb/amd64-sol2-tdep.c       |   2 +-
>   gdb/amd64-tdep.c            |  32 ++--
>   gdb/amd64-tdep.h            |   1 -
>   gdb/amd64-windows-tdep.c    |  10 +-
>   gdb/arc-linux-tdep.c        |   4 +-
>   gdb/arc-tdep.c              |  18 +-
>   gdb/arc-tdep.h              |   4 +-
>   gdb/arm-fbsd-tdep.c         |   2 +-
>   gdb/arm-linux-tdep.c        |   8 +-
>   gdb/arm-obsd-tdep.c         |   2 +-
>   gdb/arm-tdep.c              |  56 +++---
>   gdb/arm-tdep.h              |   2 +-
>   gdb/avr-tdep.c              |  14 +-
>   gdb/bfin-linux-tdep.c       |   2 +-
>   gdb/bfin-tdep.c             |  12 +-
>   gdb/blockframe.c            |   4 +-
>   gdb/bpf-tdep.c              |   8 +-
>   gdb/cris-tdep.c             |  34 ++--
>   gdb/csky-linux-tdep.c       |   4 +-
>   gdb/csky-tdep.c             |  22 +--
>   gdb/defs.h                  |   1 -
>   gdb/dummy-frame.c           |   8 +-
>   gdb/dummy-frame.h           |   2 +-
>   gdb/dwarf2/expr.c           |  12 +-
>   gdb/dwarf2/expr.h           |   6 +-
>   gdb/dwarf2/frame-tailcall.c |  34 ++--
>   gdb/dwarf2/frame-tailcall.h |   5 +-
>   gdb/dwarf2/frame.c          |  38 ++--
>   gdb/dwarf2/frame.h          |  12 +-
>   gdb/dwarf2/loc.c            |  10 +-
>   gdb/dwarf2/loc.h            |   2 +-
>   gdb/findvar.c               |  15 +-
>   gdb/frame-base.c            |   8 +-
>   gdb/frame-base.h            |  14 +-
>   gdb/frame-unwind.c          |  24 +--
>   gdb/frame-unwind.h          |  32 ++--
>   gdb/frame.c                 | 197 ++++++++++----------
>   gdb/frame.h                 | 347 +++++++++++++++++++++++++++++++-----
>   gdb/frv-linux-tdep.c        |  10 +-
>   gdb/frv-tdep.c              |  10 +-
>   gdb/ft32-tdep.c             |   8 +-
>   gdb/gdbarch-components.py   |   8 +-
>   gdb/gdbarch-gen.h           |  16 +-
>   gdb/gdbarch-selftests.c     |   5 +-
>   gdb/gdbarch.c               |   8 +-
>   gdb/h8300-tdep.c            |   8 +-
>   gdb/hppa-bsd-tdep.c         |   2 +-
>   gdb/hppa-linux-tdep.c       |   8 +-
>   gdb/hppa-netbsd-tdep.c      |   4 +-
>   gdb/hppa-tdep.c             |  28 +--
>   gdb/hppa-tdep.h             |   6 +-
>   gdb/i386-bsd-tdep.c         |   2 +-
>   gdb/i386-darwin-tdep.c      |   4 +-
>   gdb/i386-darwin-tdep.h      |   2 +-
>   gdb/i386-fbsd-tdep.c        |   2 +-
>   gdb/i386-gnu-tdep.c         |   6 +-
>   gdb/i386-linux-tdep.c       |  10 +-
>   gdb/i386-netbsd-tdep.c      |   4 +-
>   gdb/i386-nto-tdep.c         |   4 +-
>   gdb/i386-obsd-tdep.c        |  10 +-
>   gdb/i386-sol2-tdep.c        |   2 +-
>   gdb/i386-tdep.c             |  46 ++---
>   gdb/i386-tdep.h             |   6 +-
>   gdb/i387-tdep.c             |   2 +-
>   gdb/i387-tdep.h             |   2 +-
>   gdb/ia64-libunwind-tdep.c   |  12 +-
>   gdb/ia64-libunwind-tdep.h   |  11 +-
>   gdb/ia64-tdep.c             |  38 ++--
>   gdb/inline-frame.c          |  12 +-
>   gdb/inline-frame.h          |   3 +-
>   gdb/iq2000-tdep.c           |  10 +-
>   gdb/jit.c                   |  10 +-
>   gdb/lm32-tdep.c             |   8 +-
>   gdb/loongarch-linux-tdep.c  |   2 +-
>   gdb/loongarch-tdep.c        |   6 +-
>   gdb/m32c-tdep.c             |   8 +-
>   gdb/m32r-linux-tdep.c       |  14 +-
>   gdb/m32r-tdep.c             |   8 +-
>   gdb/m68hc11-tdep.c          |  12 +-
>   gdb/m68k-linux-tdep.c       |  12 +-
>   gdb/m68k-tdep.c             |  14 +-
>   gdb/m68k-tdep.h             |   2 -
>   gdb/mep-tdep.c              |   8 +-
>   gdb/microblaze-linux-tdep.c |   4 +-
>   gdb/microblaze-tdep.c       |  10 +-
>   gdb/mips-fbsd-tdep.c        |   4 +-
>   gdb/mips-linux-tdep.c       |  16 +-
>   gdb/mips-sde-tdep.c         |  12 +-
>   gdb/mips-tdep.c             |  68 +++----
>   gdb/mips64-obsd-tdep.c      |   2 +-
>   gdb/mn10300-linux-tdep.c    |   4 +-
>   gdb/mn10300-tdep.c          |  10 +-
>   gdb/moxie-tdep.c            |   8 +-
>   gdb/msp430-tdep.c           |   8 +-
>   gdb/nds32-tdep.c            |  18 +-
>   gdb/nios2-linux-tdep.c      |   2 +-
>   gdb/nios2-tdep.c            |  22 +--
>   gdb/observable.h            |   1 +
>   gdb/or1k-linux-tdep.c       |   8 +-
>   gdb/or1k-tdep.c             |  10 +-
>   gdb/ppc-fbsd-tdep.c         |   8 +-
>   gdb/ppc-linux-tdep.c        |  10 +-
>   gdb/ppc-netbsd-tdep.c       |   2 +-
>   gdb/ppc-obsd-tdep.c         |   8 +-
>   gdb/python/py-unwind.c      |  10 +-
>   gdb/record-btrace.c         |  24 ++-
>   gdb/riscv-fbsd-tdep.c       |   2 +-
>   gdb/riscv-linux-tdep.c      |   4 +-
>   gdb/riscv-tdep.c            |   8 +-
>   gdb/rl78-tdep.c             |  12 +-
>   gdb/rs6000-aix-tdep.c       |   8 +-
>   gdb/rs6000-tdep.c           |  26 +--
>   gdb/rx-tdep.c               |  16 +-
>   gdb/s12z-tdep.c             |   6 +-
>   gdb/s390-linux-tdep.c       |   8 +-
>   gdb/s390-tdep.c             |  41 +++--
>   gdb/s390-tdep.h             |   2 +-
>   gdb/sentinel-frame.c        |   6 +-
>   gdb/sh-linux-tdep.c         |   6 +-
>   gdb/sh-tdep.c               |  16 +-
>   gdb/sol2-tdep.c             |   2 +-
>   gdb/sol2-tdep.h             |   2 +-
>   gdb/sparc-linux-tdep.c      |   4 +-
>   gdb/sparc-netbsd-tdep.c     |  10 +-
>   gdb/sparc-obsd-tdep.c       |   8 +-
>   gdb/sparc-sol2-tdep.c       |   8 +-
>   gdb/sparc-tdep.c            |  16 +-
>   gdb/sparc-tdep.h            |   6 +-
>   gdb/sparc64-fbsd-tdep.c     |   8 +-
>   gdb/sparc64-linux-tdep.c    |   4 +-
>   gdb/sparc64-netbsd-tdep.c   |  10 +-
>   gdb/sparc64-obsd-tdep.c     |  16 +-
>   gdb/sparc64-sol2-tdep.c     |   8 +-
>   gdb/sparc64-tdep.c          |  10 +-
>   gdb/sparc64-tdep.h          |   3 +-
>   gdb/std-regs.c              |   8 +-
>   gdb/symfile.h               |   1 -
>   gdb/tic6x-linux-tdep.c      |   2 +-
>   gdb/tic6x-tdep.c            |  20 +--
>   gdb/tilegx-linux-tdep.c     |   2 +-
>   gdb/tilegx-tdep.c           |  10 +-
>   gdb/trad-frame.c            |  10 +-
>   gdb/trad-frame.h            |   9 +-
>   gdb/tramp-frame.c           |  10 +-
>   gdb/tramp-frame.h           |   5 +-
>   gdb/user-regs.c             |   4 +-
>   gdb/user-regs.h             |  16 +-
>   gdb/v850-tdep.c             |  10 +-
>   gdb/value.c                 |   5 +-
>   gdb/value.h                 |  28 ++-
>   gdb/vax-tdep.c              |  12 +-
>   gdb/xstormy16-tdep.c        |  10 +-
>   gdb/xtensa-tdep.c           |  22 +--
>   gdb/z80-tdep.c              |   6 +-
>   168 files changed, 1262 insertions(+), 996 deletions(-)
>
> 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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   };
>   \f
>   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 =
>   };
>   \f
>   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,
>   \f
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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 =
>   \f
>   
>   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


  parent reply	other threads:[~2022-12-12 13:17 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-02 18:00 [PATCH 0/6] Make frame_info_ptr automatic Simon Marchi
2022-12-02 18:00 ` [PATCH 1/6] gdb: add invalidate_selected_frame function Simon Marchi
2022-12-07 14:09   ` Bruno Larsen
2022-12-07 16:54     ` Simon Marchi
2022-12-02 18:00 ` [PATCH 2/6] gdb: make it possible to restore selected user-created frames Simon Marchi
2022-12-08  9:25   ` Bruno Larsen
2022-12-08 20:53     ` Simon Marchi
2022-12-12 11:14       ` Bruno Larsen
2022-12-02 18:00 ` [PATCH 3/6] gdb: make user-created frames reinflatable Simon Marchi
2022-12-12 11:32   ` Bruno Larsen
2022-12-12 13:17     ` Simon Marchi
2022-12-12 13:33       ` Bruno Larsen
2022-12-12 13:45         ` Simon Marchi
2022-12-02 18:00 ` [PATCH 4/6] gdb: revert frame_unwind::this_id and callees to use `frame_info *` Simon Marchi
2022-12-05 21:41   ` Tom Tromey
2022-12-07 16:52     ` Simon Marchi
2022-12-12 13:17   ` Bruno Larsen [this message]
2022-12-12 13:26     ` Simon Marchi
2022-12-02 18:00 ` [PATCH 5/6] gdb: make frame_info_ptr grab frame level and id on construction Simon Marchi
2022-12-08  8:51   ` Bruno Larsen
2022-12-08 20:57     ` Simon Marchi
2022-12-02 18:00 ` [PATCH 6/6] gdb: make frame_info_ptr auto-reinflatable Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3a0c4952-e44e-bed8-518a-52156a16747b@redhat.com \
    --to=blarsen@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@polymtl.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).