* [PATCH] gdb: pass frames as `const frame_info_ptr &`
@ 2024-02-19 18:07 Simon Marchi
2024-02-20 11:24 ` Andrew Burgess
0 siblings, 1 reply; 4+ messages in thread
From: Simon Marchi @ 2024-02-19 18:07 UTC (permalink / raw)
To: gdb-patches; +Cc: Simon Marchi
From: Simon Marchi <simon.marchi@efficios.com>
We currently pass frames to function by value, as `frame_info_ptr`.
This is somewhat expensive:
- the size of `frame_info_ptr` is 64 bytes, which is a bit big to pass
by value
- the constructors and destructor link/unlink the object in the global
`frame_info_ptr::frame_list` list. This is an `intrusive_list`, so
it's not so bad: it's just assigning a few points, there's no memory
allocation as if it was `std::list`, but still it's useless to do
that over and over.
As suggested by Tom Tromey, change many function signatures to accept
`const frame_info_ptr &` instead of `frame_info_ptr`.
Some functions reassign their `frame_info_ptr` parameter, like:
void
the_func (frame_info_ptr frame)
{
for (; frame != nullptr; frame = get_prev_frame (frame))
{
...
}
}
I wondered what to do about them, do I leave them as-is or change them
(and need to introduce a separate local variable that can be
re-assigned). I opted for the later for consistency. It might not be
clear why some functions take `const frame_info_ptr &` while others take
`frame_info_ptr`. Also, if a function took a `frame_info_ptr` because
it did re-assign its parameter, I doubt that we would think to change it
to `const frame_info_ptr &` should the implementation change such that
it doesn't need to take `frame_info_ptr` anymore. It seems better to
have a simple rule and apply it everywhere.
Change-Id: I59d10addef687d157f82ccf4d54f5dde9a963fd0
---
gdb/aarch64-fbsd-tdep.c | 6 +-
gdb/aarch64-linux-tdep.c | 8 +-
gdb/aarch64-tdep.c | 46 +++---
gdb/ada-lang.c | 10 +-
gdb/ada-lang.h | 2 +-
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 | 22 +--
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 | 42 +++---
gdb/amd64-windows-tdep.c | 12 +-
gdb/amdgpu-tdep.c | 8 +-
gdb/arc-linux-tdep.c | 4 +-
gdb/arc-tdep.c | 20 +--
gdb/arc-tdep.h | 4 +-
gdb/arch-utils.c | 9 +-
gdb/arch-utils.h | 8 +-
gdb/arm-fbsd-tdep.c | 2 +-
gdb/arm-linux-tdep.c | 12 +-
gdb/arm-obsd-tdep.c | 2 +-
gdb/arm-tdep.c | 74 +++++-----
gdb/arm-tdep.h | 4 +-
gdb/arm-wince-tdep.c | 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/cp-abi.c | 2 +-
gdb/cp-abi.h | 4 +-
gdb/cris-tdep.c | 36 ++---
gdb/csky-linux-tdep.c | 4 +-
gdb/csky-tdep.c | 22 +--
gdb/dtrace-probe.c | 4 +-
gdb/dummy-frame.c | 8 +-
gdb/dummy-frame.h | 2 +-
gdb/dwarf2/ada-imported.c | 2 +-
gdb/dwarf2/call-site.h | 4 +-
gdb/dwarf2/expr.c | 8 +-
gdb/dwarf2/expr.h | 4 +-
gdb/dwarf2/frame-tailcall.c | 23 +--
gdb/dwarf2/frame-tailcall.h | 4 +-
gdb/dwarf2/frame.c | 40 +++---
gdb/dwarf2/frame.h | 25 ++--
gdb/dwarf2/loc.c | 51 +++----
gdb/dwarf2/loc.h | 26 ++--
gdb/extension-priv.h | 2 +-
gdb/extension.c | 2 +-
gdb/extension.h | 2 +-
gdb/findvar.c | 24 ++--
gdb/frame-base.c | 8 +-
gdb/frame-base.h | 10 +-
gdb/frame-unwind.c | 24 ++--
gdb/frame-unwind.h | 51 ++++---
gdb/frame.c | 171 ++++++++++++-----------
gdb/frame.h | 142 +++++++++----------
gdb/frv-linux-tdep.c | 10 +-
gdb/frv-tdep.c | 10 +-
gdb/ft32-tdep.c | 8 +-
gdb/gdbarch-gen.h | 72 +++++-----
gdb/gdbarch.c | 36 ++---
gdb/gdbarch_components.py | 36 ++---
gdb/gnu-v3-abi.c | 2 +-
gdb/h8300-tdep.c | 12 +-
gdb/hppa-bsd-tdep.c | 2 +-
gdb/hppa-linux-tdep.c | 8 +-
gdb/hppa-netbsd-tdep.c | 4 +-
gdb/hppa-tdep.c | 32 ++---
gdb/hppa-tdep.h | 8 +-
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 | 64 ++++-----
gdb/i386-tdep.h | 12 +-
gdb/i386-windows-tdep.c | 2 +-
gdb/i387-tdep.c | 6 +-
gdb/i387-tdep.h | 6 +-
gdb/ia64-libunwind-tdep.c | 10 +-
gdb/ia64-libunwind-tdep.h | 8 +-
gdb/ia64-tdep.c | 44 +++---
gdb/ia64-tdep.h | 2 +-
gdb/infcmd.c | 11 +-
gdb/inferior.h | 4 +-
gdb/infrun.c | 22 +--
gdb/infrun.h | 2 +-
gdb/inline-frame.c | 8 +-
gdb/inline-frame.h | 2 +-
gdb/iq2000-tdep.c | 10 +-
gdb/jit.c | 6 +-
gdb/language.h | 2 +-
gdb/lm32-tdep.c | 8 +-
gdb/loongarch-linux-tdep.c | 4 +-
gdb/loongarch-tdep.c | 10 +-
gdb/loongarch-tdep.h | 2 +-
gdb/m32c-tdep.c | 10 +-
gdb/m32r-linux-tdep.c | 14 +-
gdb/m32r-tdep.c | 8 +-
gdb/m68hc11-tdep.c | 16 +--
gdb/m68k-linux-tdep.c | 12 +-
gdb/m68k-tdep.c | 18 +--
gdb/mep-tdep.c | 8 +-
gdb/mi/mi-cmd-stack.c | 6 +-
gdb/mi/mi-main.c | 4 +-
gdb/microblaze-linux-tdep.c | 4 +-
gdb/microblaze-tdep.c | 10 +-
gdb/minsyms.c | 2 +-
gdb/mips-fbsd-tdep.c | 4 +-
gdb/mips-linux-tdep.c | 22 +--
gdb/mips-netbsd-tdep.c | 2 +-
gdb/mips-sde-tdep.c | 12 +-
gdb/mips-tdep.c | 96 ++++++-------
gdb/mips-tdep.h | 2 +-
gdb/mips64-obsd-tdep.c | 2 +-
gdb/mn10300-linux-tdep.c | 4 +-
gdb/mn10300-tdep.c | 8 +-
gdb/moxie-tdep.c | 8 +-
gdb/msp430-tdep.c | 10 +-
gdb/nds32-tdep.c | 20 +--
gdb/nios2-linux-tdep.c | 4 +-
gdb/nios2-tdep.c | 22 +--
gdb/nios2-tdep.h | 2 +-
gdb/observable.h | 2 +-
gdb/or1k-linux-tdep.c | 4 +-
gdb/or1k-tdep.c | 12 +-
gdb/ppc-fbsd-tdep.c | 8 +-
gdb/ppc-linux-tdep.c | 12 +-
gdb/ppc-netbsd-tdep.c | 2 +-
gdb/ppc-obsd-tdep.c | 8 +-
gdb/ppc-sysv-tdep.c | 3 +-
gdb/ppc-tdep.h | 4 +-
gdb/ppc64-tdep.c | 20 +--
gdb/ppc64-tdep.h | 2 +-
gdb/printcmd.c | 2 +-
gdb/probe.c | 2 +-
gdb/probe.h | 4 +-
gdb/python/py-event.h | 2 +-
gdb/python/py-frame.c | 2 +-
gdb/python/py-framefilter.c | 14 +-
gdb/python/py-inferior.c | 2 +-
gdb/python/py-infevents.c | 4 +-
gdb/python/py-unwind.c | 6 +-
gdb/python/python-internal.h | 4 +-
gdb/record-btrace.c | 14 +-
gdb/riscv-fbsd-tdep.c | 2 +-
gdb/riscv-linux-tdep.c | 6 +-
gdb/riscv-tdep.c | 12 +-
gdb/riscv-tdep.h | 2 +-
gdb/rl78-tdep.c | 12 +-
gdb/rs6000-aix-tdep.c | 8 +-
gdb/rs6000-tdep.c | 34 ++---
gdb/rx-tdep.c | 16 +--
gdb/s12z-tdep.c | 10 +-
gdb/s390-linux-tdep.c | 8 +-
gdb/s390-tdep.c | 36 ++---
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 | 6 +-
gdb/sparc-netbsd-tdep.c | 12 +-
gdb/sparc-obsd-tdep.c | 8 +-
gdb/sparc-sol2-tdep.c | 8 +-
gdb/sparc-tdep.c | 18 +--
gdb/sparc-tdep.h | 10 +-
gdb/sparc64-fbsd-tdep.c | 8 +-
gdb/sparc64-linux-tdep.c | 8 +-
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 | 2 +-
gdb/stack.c | 42 +++---
gdb/stack.h | 4 +-
gdb/stap-probe.c | 4 +-
gdb/std-regs.c | 8 +-
gdb/symtab.h | 8 +-
gdb/tic6x-linux-tdep.c | 4 +-
gdb/tic6x-tdep.c | 22 +--
gdb/tic6x-tdep.h | 2 +-
gdb/tilegx-linux-tdep.c | 2 +-
gdb/tilegx-tdep.c | 12 +-
gdb/tracepoint.c | 2 +-
gdb/trad-frame.c | 8 +-
gdb/trad-frame.h | 8 +-
gdb/tramp-frame.c | 10 +-
gdb/tramp-frame.h | 4 +-
gdb/tui/tui-disasm.c | 2 +-
gdb/tui/tui-disasm.h | 2 +-
gdb/tui/tui-hooks.c | 2 +-
gdb/tui/tui-regs.c | 4 +-
gdb/tui/tui-regs.h | 2 +-
gdb/tui/tui-source.c | 2 +-
gdb/tui/tui-source.h | 2 +-
gdb/tui/tui-status.c | 4 +-
gdb/tui/tui-status.h | 2 +-
gdb/tui/tui-winsource.h | 2 +-
gdb/unittests/frame_info_ptr-selftests.c | 2 +-
gdb/user-regs.c | 4 +-
gdb/user-regs.h | 4 +-
gdb/v850-tdep.c | 10 +-
gdb/valops.c | 4 +-
gdb/value.c | 23 +--
gdb/value.h | 35 ++---
gdb/vax-tdep.c | 14 +-
gdb/xstormy16-tdep.c | 12 +-
gdb/xtensa-tdep.c | 20 +--
gdb/z80-tdep.c | 6 +-
224 files changed, 1351 insertions(+), 1339 deletions(-)
diff --git a/gdb/aarch64-fbsd-tdep.c b/gdb/aarch64-fbsd-tdep.c
index 2b043c0e7350..44ca6c90c818 100644
--- a/gdb/aarch64-fbsd-tdep.c
+++ b/gdb/aarch64-fbsd-tdep.c
@@ -88,9 +88,9 @@ 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,
- struct trad_frame_cache *this_cache,
- CORE_ADDR func)
+ const frame_info_ptr &this_frame,
+ struct trad_frame_cache *this_cache,
+ CORE_ADDR func)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
index 7812ec5b7a1e..4ebc173a0a00 100644
--- a/gdb/aarch64-linux-tdep.c
+++ b/gdb/aarch64-linux-tdep.c
@@ -381,8 +381,8 @@ aarch64_linux_restore_vregs (struct gdbarch *gdbarch,
SIGNAL_FRAME. */
static void
-aarch64_linux_read_signal_frame_info (frame_info_ptr this_frame,
- struct aarch64_linux_sigframe &signal_frame)
+aarch64_linux_read_signal_frame_info (const frame_info_ptr &this_frame,
+ aarch64_linux_sigframe &signal_frame)
{
signal_frame.sp = get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
signal_frame.sigcontext_address
@@ -570,7 +570,7 @@ aarch64_linux_read_signal_frame_info (frame_info_ptr this_frame,
static void
aarch64_linux_sigframe_init (const struct tramp_frame *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -704,7 +704,7 @@ aarch64_linux_sigframe_init (const struct tramp_frame *self,
/* Implements the "prev_arch" method of struct tramp_frame. */
static struct gdbarch *
-aarch64_linux_sigframe_prev_arch (frame_info_ptr this_frame,
+aarch64_linux_sigframe_prev_arch (const frame_info_ptr &this_frame,
void **frame_cache)
{
struct trad_frame_cache *cache
diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
index b97e2153e14f..d1d5486f90dd 100644
--- a/gdb/aarch64-tdep.c
+++ b/gdb/aarch64-tdep.c
@@ -268,7 +268,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)
+ const frame_info_ptr &this_frame, CORE_ADDR addr)
{
if (tdep->has_pauth ()
&& frame_unwind_register_unsigned (this_frame,
@@ -298,7 +298,7 @@ aarch64_frame_unmask_lr (aarch64_gdbarch_tdep *tdep,
/* Implement the "get_pc_address_flags" gdbarch method. */
static std::string
-aarch64_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
+aarch64_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
{
if (pc != 0 && get_frame_pc_masked (frame))
return "PAC";
@@ -995,7 +995,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 (const frame_info_ptr &this_frame,
struct aarch64_prologue_cache *cache)
{
CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
@@ -1049,7 +1049,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 (const frame_info_ptr &this_frame,
struct aarch64_prologue_cache *cache)
{
CORE_ADDR unwound_fp;
@@ -1087,7 +1087,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct aarch64_prologue_cache *cache;
@@ -1114,7 +1114,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct aarch64_prologue_cache *cache
@@ -1140,7 +1140,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct aarch64_prologue_cache *cache
@@ -1155,7 +1155,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 (const frame_info_ptr &this_frame,
void **this_cache, int prev_regnum)
{
struct aarch64_prologue_cache *cache
@@ -1221,7 +1221,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct aarch64_prologue_cache *cache;
@@ -1251,7 +1251,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct aarch64_prologue_cache *cache
@@ -1266,7 +1266,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct aarch64_prologue_cache *cache
@@ -1282,7 +1282,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block;
@@ -1313,7 +1313,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct aarch64_prologue_cache *cache
= aarch64_make_prologue_cache (this_frame, this_cache);
@@ -1334,7 +1334,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
gdbarch *arch = get_frame_arch (this_frame);
@@ -1361,7 +1361,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)
+ const frame_info_ptr &this_frame)
{
aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
@@ -2780,7 +2780,7 @@ aarch64_return_value (struct gdbarch *gdbarch, struct value *func_value,
/* Implement the "get_longjmp_target" gdbarch method. */
static int
-aarch64_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+aarch64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
CORE_ADDR jb_addr;
gdb_byte buf[X_REGISTER_SIZE];
@@ -3105,7 +3105,7 @@ aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
/* Helper for aarch64_pseudo_read_value. */
static value *
-aarch64_pseudo_read_value_1 (frame_info_ptr next_frame,
+aarch64_pseudo_read_value_1 (const frame_info_ptr &next_frame,
const int pseudo_reg_num, int raw_regnum_offset)
{
unsigned v_regnum = AARCH64_V0_REGNUM + raw_regnum_offset;
@@ -3197,7 +3197,7 @@ aarch64_za_offsets_from_regnum (struct gdbarch *gdbarch, int regnum)
/* Given REGNUM, a SME pseudo-register number, return its value in RESULT. */
static value *
-aarch64_sme_pseudo_register_read (gdbarch *gdbarch, frame_info_ptr next_frame,
+aarch64_sme_pseudo_register_read (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num)
{
aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
@@ -3231,7 +3231,7 @@ aarch64_sme_pseudo_register_read (gdbarch *gdbarch, frame_info_ptr next_frame,
/* Implement the "pseudo_register_read_value" gdbarch method. */
static value *
-aarch64_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+aarch64_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num)
{
aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
@@ -3296,7 +3296,7 @@ aarch64_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
/* Helper for aarch64_pseudo_write. */
static void
-aarch64_pseudo_write_1 (gdbarch *gdbarch, frame_info_ptr next_frame,
+aarch64_pseudo_write_1 (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int regnum_offset,
gdb::array_view<const gdb_byte> buf)
{
@@ -3322,7 +3322,7 @@ aarch64_pseudo_write_1 (gdbarch *gdbarch, frame_info_ptr next_frame,
pseudo-register. */
static void
-aarch64_sme_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+aarch64_sme_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int regnum,
gdb::array_view<const gdb_byte> data)
{
@@ -3364,7 +3364,7 @@ aarch64_sme_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
/* Implement the "pseudo_register_write" gdbarch method. */
static void
-aarch64_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+aarch64_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num,
gdb::array_view<const gdb_byte> buf)
{
@@ -3437,7 +3437,7 @@ aarch64_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
/* 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 (const frame_info_ptr &frame, const void *baton)
{
const int *reg_p = (const int *) baton;
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index a3fd695e0034..3f3985400104 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -11720,7 +11720,7 @@ ada_exception_support_info_sniffer (void)
to most users. */
static int
-is_known_support_routine (frame_info_ptr frame)
+is_known_support_routine (const frame_info_ptr &frame)
{
enum language func_lang;
int i;
@@ -11779,9 +11779,9 @@ is_known_support_routine (frame_info_ptr frame)
part of the Ada run-time, starting from FI and moving upward. */
void
-ada_find_printable_frame (frame_info_ptr fi)
+ada_find_printable_frame (const frame_info_ptr &initial_fi)
{
- for (; fi != NULL; fi = get_prev_frame (fi))
+ for (frame_info_ptr fi = initial_fi; fi != nullptr; fi = get_prev_frame (fi))
{
if (!is_known_support_routine (fi))
{
@@ -12913,7 +12913,7 @@ ada_add_standard_exceptions (compiled_regex *preg,
static void
ada_add_exceptions_from_frame (compiled_regex *preg,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
std::vector<ada_exc_info> *exceptions)
{
const struct block *block = get_frame_block (frame, 0);
@@ -13339,7 +13339,7 @@ class ada_language : public language_defn
struct value *read_var_value (struct symbol *var,
const struct block *var_block,
- frame_info_ptr frame) const override
+ const frame_info_ptr &frame) const override
{
/* The only case where default_read_var_value is not sufficient
is when VAR is a renaming... */
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
index aefd335ff390..5083d004ac98 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -341,7 +341,7 @@ extern enum ada_renaming_category ada_parse_renaming (struct symbol *,
const char **,
int *, const char **);
-extern void ada_find_printable_frame (frame_info_ptr fi);
+extern void ada_find_printable_frame (const frame_info_ptr &fi);
extern const char *ada_main_name ();
diff --git a/gdb/alpha-linux-tdep.c b/gdb/alpha-linux-tdep.c
index 1a19626d9f09..5f5e46d514e4 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 (const frame_info_ptr &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 7691a53148ae..2d13cd3b7c1a 100644
--- a/gdb/alpha-mdebug-tdep.c
+++ b/gdb/alpha-mdebug-tdep.c
@@ -185,7 +185,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct alpha_mdebug_unwind_cache *info;
@@ -262,7 +262,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -275,7 +275,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct alpha_mdebug_unwind_cache *info
@@ -306,7 +306,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -343,7 +343,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct alpha_mdebug_unwind_cache *info
@@ -353,7 +353,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct alpha_mdebug_unwind_cache *info
@@ -363,7 +363,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct alpha_mdebug_unwind_cache *info
@@ -380,7 +380,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 (const frame_info_ptr &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 0213fe5b94f3..569fe42a2a94 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 (const frame_info_ptr &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 b22e584a4e48..610866835c85 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 (const frame_info_ptr &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 cafadae45c74..e5e0860fe241 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -233,7 +233,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 (const frame_info_ptr &frame, int regnum,
struct type *valtype, gdb_byte *out,
int *optimizedp, int *unavailablep)
{
@@ -260,7 +260,7 @@ alpha_register_to_value (frame_info_ptr frame, int regnum,
}
static void
-alpha_value_to_register (frame_info_ptr frame, int regnum,
+alpha_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *valtype, const gdb_byte *in)
{
int reg_size = register_size (get_frame_arch (frame), regnum);
@@ -840,7 +840,7 @@ alpha_deal_with_atomic_sequence (struct gdbarch *gdbarch, CORE_ADDR pc)
into the "pc". This routine returns true on success. */
static int
-alpha_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+alpha_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
@@ -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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 f9c7e295609a..0423abb25584 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) (const frame_info_ptr &) = 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 bfba7a5284a6..001f5379def2 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 (const frame_info_ptr &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 9144801a5d29..a837bd197ffe 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,
+ const frame_info_ptr &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 fe7f5d4a2597..1deb13b4e9ad 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 d1a7cf3a0492..40500ee5f76c 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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame)
{
CORE_ADDR addr;
diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
index 9cca6b12c84e..6b37e8954ee4 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
ULONGEST cs;
diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c
index 30a5dfa4c5ea..6cc84017f740 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 (const frame_info_ptr &this_frame)
{
CORE_ADDR sp, ucontext_addr;
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
index a8ff9246b8ad..f5968ab4d0f9 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
@@ -348,7 +348,7 @@ amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
}
static value *
-amd64_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+amd64_pseudo_register_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int regnum)
{
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -379,7 +379,7 @@ amd64_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
}
static void
-amd64_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+amd64_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int regnum, gdb::array_view<const gdb_byte> buf)
{
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -2510,7 +2510,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 (const frame_info_ptr &this_frame,
struct amd64_frame_cache *cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2579,7 +2579,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct amd64_frame_cache *cache;
@@ -2603,7 +2603,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct amd64_frame_cache *cache =
@@ -2620,7 +2620,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct amd64_frame_cache *cache =
@@ -2638,7 +2638,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2692,7 +2692,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -2732,7 +2732,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct amd64_frame_cache *cache =
@@ -2745,7 +2745,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct amd64_frame_cache *cache =
@@ -2763,7 +2763,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
/* Make sure we've initialized the cache. */
@@ -2774,7 +2774,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
gdbarch *arch = get_frame_arch (this_frame);
@@ -2816,7 +2816,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct amd64_frame_cache *cache =
amd64_frame_cache (this_frame, this_cache);
@@ -2878,7 +2878,7 @@ amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static int
amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache, bool override_p)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2911,7 +2911,7 @@ amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
static int
amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
@@ -2920,7 +2920,7 @@ amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self,
static int
amd64_epilogue_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
@@ -2928,7 +2928,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2969,7 +2969,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct amd64_frame_cache *cache
@@ -2982,7 +2982,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -3018,7 +3018,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, const frame_info_ptr &this_frame)
{
CORE_ADDR fp;
@@ -3081,7 +3081,7 @@ const struct regset amd64_fpregset =
success. */
static int
-amd64_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+amd64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_byte buf[8];
CORE_ADDR jb_addr;
diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
index 50304e15cb8a..7c5169fd98c5 100644
--- a/gdb/amd64-windows-tdep.c
+++ b/gdb/amd64-windows-tdep.c
@@ -517,7 +517,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 (const frame_info_ptr &this_frame,
struct amd64_windows_frame_cache *cache)
{
/* According to MSDN an epilogue "must consist of either an add RSP,constant
@@ -697,7 +697,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 (const frame_info_ptr &this_frame,
struct amd64_windows_frame_cache *cache,
CORE_ADDR unwind_info)
{
@@ -1077,7 +1077,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1123,7 +1123,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1169,7 +1169,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct amd64_windows_frame_cache *cache =
@@ -1235,7 +1235,7 @@ amd64_windows_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
/* Check Win64 DLL jmp trampolines and find jump destination. */
static CORE_ADDR
-amd64_windows_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+amd64_windows_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
CORE_ADDR destination = 0;
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/amdgpu-tdep.c b/gdb/amdgpu-tdep.c
index 44252e559cdc..ac137d9acc44 100644
--- a/gdb/amdgpu-tdep.c
+++ b/gdb/amdgpu-tdep.c
@@ -846,7 +846,7 @@ struct amdgpu_frame_cache
};
static amdgpu_frame_cache *
-amdgpu_frame_cache (frame_info_ptr this_frame, void **this_cache)
+amdgpu_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
{
if (*this_cache != nullptr)
return (struct amdgpu_frame_cache *) *this_cache;
@@ -862,7 +862,7 @@ amdgpu_frame_cache (frame_info_ptr this_frame, void **this_cache)
}
static void
-amdgpu_frame_this_id (frame_info_ptr this_frame, void **this_cache,
+amdgpu_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
frame_id *this_id)
{
struct amdgpu_frame_cache *cache
@@ -880,13 +880,13 @@ amdgpu_frame_this_id (frame_info_ptr this_frame, void **this_cache,
}
static frame_id
-amdgpu_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
+amdgpu_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &this_frame)
{
return frame_id_build (0, get_frame_pc (this_frame));
}
static struct value *
-amdgpu_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+amdgpu_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
return frame_unwind_got_register (this_frame, regnum, regnum);
diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c
index 03ff49a2b197..ca630ab6df0c 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 (const frame_info_ptr &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 (const frame_info_ptr &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 84e211ce9ad5..12d8aee949fd 100644
--- a/gdb/arc-tdep.c
+++ b/gdb/arc-tdep.c
@@ -998,7 +998,7 @@ arc_store_return_value (struct gdbarch *gdbarch, struct type *type,
/* Implement the "get_longjmp_target" gdbarch method. */
static int
-arc_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+arc_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
arc_debug_printf ("called");
@@ -1062,7 +1062,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 (const frame_info_ptr &this_frame, void **prologue_cache)
{
return (CORE_ADDR) get_frame_register_unsigned (this_frame, ARC_FP_REGNUM);
}
@@ -1643,7 +1643,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 (const frame_info_ptr &this_frame)
{
arc_debug_printf ("called");
@@ -1710,7 +1710,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
arc_debug_printf ("called");
@@ -1755,7 +1755,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
if (*this_cache == NULL)
@@ -1792,7 +1792,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)
+ const frame_info_ptr &info)
{
if (regnum == gdbarch_pc_regnum (gdbarch))
/* The return address column. */
@@ -1806,7 +1806,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 (const frame_info_ptr &this_frame)
{
arc_debug_printf ("called");
@@ -1845,7 +1845,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
arc_debug_printf ("called");
@@ -1864,7 +1864,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
arc_debug_printf ("regnum = %d", regnum);
@@ -1882,7 +1882,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
arc_debug_printf ("called");
diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h
index 6fc1131a4352..c59490dec004 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) (const frame_info_ptr &) = nullptr;
/* Get address of sigcontext for sigtramp. */
- CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
+ CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
/* Offset of registers in `struct sigcontext'. */
const int *sc_reg_offset = nullptr;
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
index 1faa013c16f0..ae3354f65799 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -140,7 +140,7 @@ default_get_memtag (struct gdbarch *gdbarch, struct value *address,
}
CORE_ADDR
-generic_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+generic_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
return 0;
}
@@ -166,7 +166,7 @@ generic_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
int
default_code_of_frame_writable (struct gdbarch *gdbarch,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
return 1;
}
@@ -1079,7 +1079,7 @@ default_type_align (struct gdbarch *gdbarch, struct type *type)
/* See arch-utils.h. */
std::string
-default_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
+default_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
{
return "";
}
@@ -1105,7 +1105,8 @@ default_use_target_description_from_corefile_notes (struct gdbarch *gdbarch,
}
CORE_ADDR
-default_get_return_buf_addr (struct type *val_type, frame_info_ptr cur_frame)
+default_get_return_buf_addr (struct type *val_type,
+ const frame_info_ptr &cur_frame)
{
return 0;
}
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
index 0f37aaf20f82..2dcd8f6dc53b 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -158,7 +158,7 @@ struct value *default_get_memtag (struct gdbarch *gdbarch,
struct value *address,
memtag_type tag_type);
-extern CORE_ADDR generic_skip_trampoline_code (frame_info_ptr frame,
+extern CORE_ADDR generic_skip_trampoline_code (const frame_info_ptr &frame,
CORE_ADDR pc);
extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch,
@@ -171,7 +171,7 @@ extern int generic_stack_frame_destroyed_p (struct gdbarch *gdbarch,
CORE_ADDR pc);
extern int default_code_of_frame_writable (struct gdbarch *gdbarch,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
/* By default, registers are not convertible. */
extern int generic_convert_register_p (struct gdbarch *gdbarch, int regnum,
@@ -295,7 +295,7 @@ extern ULONGEST default_type_align (struct gdbarch *gdbarch,
struct type *type);
/* Default implementation of gdbarch get_pc_address_flags method. */
-extern std::string default_get_pc_address_flags (frame_info_ptr frame,
+extern std::string default_get_pc_address_flags (const frame_info_ptr &frame,
CORE_ADDR pc);
/* Default implementation of gdbarch read_core_file_mappings method. */
@@ -313,7 +313,7 @@ extern bool default_use_target_description_from_corefile_notes
/* Default implementation of gdbarch default_get_return_buf_addr method. */
extern CORE_ADDR default_get_return_buf_addr (struct type *val_typegdbarch,
- frame_info_ptr cur_frame);
+ const frame_info_ptr &cur_frame);
/* Default implementation of gdbarch default_dwarf2_omit_typedef_p method. */
extern bool default_dwarf2_omit_typedef_p (struct type *target_type,
diff --git a/gdb/arm-fbsd-tdep.c b/gdb/arm-fbsd-tdep.c
index 143aaf121b71..b485951c3764 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,
+ const frame_info_ptr &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 b559de0fb2d6..cc79247aaf12 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 (const frame_info_ptr &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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -756,7 +756,7 @@ arm_linux_core_read_description (struct gdbarch *gdbarch,
will return to ARM or Thumb code. Return 0 if it is not a
rt_sigreturn/sigreturn syscall. */
static int
-arm_linux_sigreturn_return_addr (frame_info_ptr frame,
+arm_linux_sigreturn_return_addr (const frame_info_ptr &frame,
unsigned long svc_number,
CORE_ADDR *pc, int *is_thumb)
{
@@ -1720,7 +1720,7 @@ arm_linux_syscall_record (struct regcache *regcache, unsigned long svc_number)
/* Implement the skip_trampoline_code gdbarch method. */
static CORE_ADDR
-arm_linux_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+arm_linux_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
CORE_ADDR target_pc = arm_skip_stub (frame, pc);
diff --git a/gdb/arm-obsd-tdep.c b/gdb/arm-obsd-tdep.c
index 9aa2408f36e3..0bdecec3b6fb 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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *cache,
CORE_ADDR func)
{
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 081e934cf862..3b4ae15df07e 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -339,7 +339,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, const frame_info_ptr &frame)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -628,7 +628,7 @@ arm_is_thumb (struct regcache *regcache)
frame. */
int
-arm_frame_is_thumb (frame_info_ptr frame)
+arm_frame_is_thumb (const frame_info_ptr &frame)
{
/* Check the architecture of FRAME. */
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -2213,7 +2213,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch,
}
static void
-arm_scan_prologue (frame_info_ptr this_frame,
+arm_scan_prologue (const frame_info_ptr &this_frame,
struct arm_prologue_cache *cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2310,7 +2310,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 (const frame_info_ptr &this_frame)
{
int reg;
struct arm_prologue_cache *cache;
@@ -2344,7 +2344,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct arm_prologue_cache *cache;
@@ -2372,7 +2372,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -2400,7 +2400,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 (const frame_info_ptr &this_frame,
void **this_cache,
int prev_regnum)
{
@@ -2794,7 +2794,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 (const frame_info_ptr &this_frame, gdb_byte *entry)
{
CORE_ADDR vsp = 0;
int vsp_valid = 0;
@@ -3092,7 +3092,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3199,7 +3199,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 (const frame_info_ptr &this_frame)
{
struct arm_prologue_cache *cache;
int reg;
@@ -3231,7 +3231,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -3259,7 +3259,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
if (*this_cache == NULL)
@@ -3278,7 +3278,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (frame_relative_level (this_frame) == 0)
@@ -3335,7 +3335,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 (const frame_info_ptr &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'. */
@@ -3367,7 +3367,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 (const frame_info_ptr &this_frame)
{
struct arm_prologue_cache *cache;
@@ -3386,7 +3386,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -3404,7 +3404,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block;
@@ -3442,7 +3442,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 (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -3828,7 +3828,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct arm_prologue_cache *cache;
@@ -3850,7 +3850,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -3871,7 +3871,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 (const frame_info_ptr &this_frame,
void **this_cache,
int prev_regnum)
{
@@ -3936,7 +3936,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3964,7 +3964,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct arm_prologue_cache *cache;
@@ -3997,7 +3997,7 @@ struct arm_dwarf2_prev_register_cache
};
static struct value *
-arm_dwarf2_prev_register (frame_info_ptr this_frame, void **this_cache,
+arm_dwarf2_prev_register (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct gdbarch * gdbarch = get_frame_arch (this_frame);
@@ -4897,7 +4897,7 @@ print_fpu_flags (struct ui_file *file, int flags)
(if present) or emulator. */
static void
arm_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, const char *args)
+ const frame_info_ptr &frame, const char *args)
{
unsigned long status = get_frame_register_unsigned (frame, ARM_FPS_REGNUM);
int type;
@@ -5244,7 +5244,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)
+ const frame_info_ptr &this_frame)
{
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -9343,7 +9343,7 @@ arm_return_value (struct gdbarch *gdbarch, struct value *function,
static int
-arm_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+arm_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -9415,7 +9415,7 @@ arm_is_sgstubs_section (struct obj_section *sec)
return the target PC. Otherwise return 0. */
CORE_ADDR
-arm_skip_stub (frame_info_ptr frame, CORE_ADDR pc)
+arm_skip_stub (const frame_info_ptr &frame, CORE_ADDR pc)
{
const char *name;
int namelen;
@@ -9821,7 +9821,7 @@ arm_neon_quad_read (struct gdbarch *gdbarch, readable_regcache *regcache,
register, in [0, 15]. */
static value *
-arm_neon_quad_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_neon_quad_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int pseudo_reg_num, int quad_reg_index)
{
std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
@@ -9836,7 +9836,7 @@ arm_neon_quad_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
/* Read the contents of the MVE pseudo register REGNUM and return it as a
value. */
static value *
-arm_mve_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_mve_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int pseudo_reg_num)
{
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -9847,7 +9847,7 @@ arm_mve_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
}
static value *
-arm_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num)
{
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -9909,7 +9909,7 @@ arm_neon_quad_write (struct gdbarch *gdbarch, struct regcache *regcache,
}
static void
-arm_neon_quad_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_neon_quad_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int quad_reg_index, gdb::array_view<const gdb_byte> buf)
{
std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
@@ -9923,7 +9923,7 @@ arm_neon_quad_write (gdbarch *gdbarch, frame_info_ptr next_frame,
/* Store the contents of BUF to the MVE pseudo register REGNUM. */
static void
-arm_mve_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_mve_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
{
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -9933,7 +9933,7 @@ arm_mve_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
}
static void
-arm_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+arm_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num,
gdb::array_view<const gdb_byte> buf)
{
@@ -9973,7 +9973,7 @@ arm_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
}
static struct value *
-value_of_arm_user_reg (frame_info_ptr frame, const void *baton)
+value_of_arm_user_reg (const frame_info_ptr &frame, const void *baton)
{
const int *reg_p = (const int *) baton;
return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
@@ -10067,7 +10067,7 @@ arm_register_g_packet_guesses (struct gdbarch *gdbarch)
/* Implement the code_of_frame_writable gdbarch method. */
static int
-arm_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame)
+arm_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame)
{
arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
@@ -10095,7 +10095,7 @@ arm_gnu_triplet_regexp (struct gdbarch *gdbarch)
/* Implement the "get_pc_address_flags" gdbarch method. */
static std::string
-arm_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
+arm_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
{
if (get_frame_pc_masked (frame))
return "PAC";
diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h
index 506387b529de..11839b0ff4d0 100644
--- a/gdb/arm-tdep.h
+++ b/gdb/arm-tdep.h
@@ -279,7 +279,7 @@ extern void
arm_displaced_step_copy_insn_closure *dsc, int regno,
ULONGEST val, enum pc_write_style write_pc);
-CORE_ADDR arm_skip_stub (frame_info_ptr, CORE_ADDR);
+CORE_ADDR arm_skip_stub (const frame_info_ptr &, CORE_ADDR);
ULONGEST arm_get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
int len,
@@ -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 (const frame_info_ptr &frame);
extern void arm_displaced_step_fixup (struct gdbarch *,
displaced_step_copy_insn_closure *,
diff --git a/gdb/arm-wince-tdep.c b/gdb/arm-wince-tdep.c
index a31da71de082..b722851e7e1a 100644
--- a/gdb/arm-wince-tdep.c
+++ b/gdb/arm-wince-tdep.c
@@ -36,7 +36,7 @@ static const gdb_byte arm_wince_thumb_le_breakpoint[] = { 0xfe, 0xdf };
#define ARM_WINCE_JB_PC 10
static CORE_ADDR
-arm_pe_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+arm_pe_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 63b45be7563d..2d38f41cd7fa 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 (const frame_info_ptr &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, const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
{
ULONGEST base;
diff --git a/gdb/bfin-linux-tdep.c b/gdb/bfin-linux-tdep.c
index 35fdf3f2acb5..31aa14765ae8 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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
index 877fd94d7df0..357866ef9532 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 6076ad64a4a8..451818332de3 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 (const frame_info_ptr &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 (const frame_info_ptr &frame)
{
const struct block *bl = get_frame_block (frame, 0);
diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c
index 4409a1e696c9..1b3f3e72c5b7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
{
CORE_ADDR sp = get_frame_register_unsigned (this_frame,
gdbarch_sp_regnum (gdbarch));
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
index a6de59bf292a..882c1a03fe29 100644
--- a/gdb/cp-abi.c
+++ b/gdb/cp-abi.c
@@ -153,7 +153,7 @@ cplus_make_method_ptr (struct type *type, gdb_byte *contents,
}
CORE_ADDR
-cplus_skip_trampoline (frame_info_ptr frame,
+cplus_skip_trampoline (const frame_info_ptr &frame,
CORE_ADDR stop_pc)
{
if (current_cp_abi.skip_trampoline == NULL)
diff --git a/gdb/cp-abi.h b/gdb/cp-abi.h
index a993e1dd18a0..fdbe48431290 100644
--- a/gdb/cp-abi.h
+++ b/gdb/cp-abi.h
@@ -204,7 +204,7 @@ extern std::string cplus_typename_from_type_info (struct value *value);
address of the routine we are thunking to and continue to there
instead. */
-CORE_ADDR cplus_skip_trampoline (frame_info_ptr frame,
+CORE_ADDR cplus_skip_trampoline (const frame_info_ptr &frame,
CORE_ADDR stop_pc);
/* Return a struct that provides pass-by-reference information
@@ -247,7 +247,7 @@ struct cp_abi_ops
struct type *(*get_typeid_type) (struct gdbarch *gdbarch);
struct type *(*get_type_from_type_info) (struct value *value);
std::string (*get_typename_from_type_info) (struct value *value);
- CORE_ADDR (*skip_trampoline) (frame_info_ptr, CORE_ADDR);
+ CORE_ADDR (*skip_trampoline) (const frame_info_ptr &, CORE_ADDR);
struct language_pass_by_ref_info (*pass_by_reference) (struct type *type);
};
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 1f108740ad21..02c35da723d4 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
if (cris_sigtramp_start (this_frame)
@@ -448,7 +448,7 @@ static const struct frame_unwind cris_sigtramp_frame_unwind =
static int
crisv32_single_step_through_delay (struct gdbarch *gdbarch,
- frame_info_ptr this_frame)
+ const frame_info_ptr &this_frame)
{
cris_gdbarch_tdep *tdep = gdbarch_tdep<cris_gdbarch_tdep> (gdbarch);
ULONGEST erp;
@@ -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,
+ const frame_info_ptr &this_frame,
struct cris_unwind_cache *info);
static CORE_ADDR crisv32_scan_prologue (CORE_ADDR pc,
- frame_info_ptr this_frame,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &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, const frame_info_ptr &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)
+ const frame_info_ptr &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 d3105dc54753..d485f1763178 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
index 2aa6c0abcb85..c1ce8a5b02ce 100644
--- a/gdb/csky-tdep.c
+++ b/gdb/csky-tdep.c
@@ -958,7 +958,7 @@ csky_analyze_prologue (struct gdbarch *gdbarch,
CORE_ADDR start_pc,
CORE_ADDR limit_pc,
CORE_ADDR end_pc,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
struct csky_unwind_cache *this_cache,
lr_type_t lr_type)
{
@@ -2063,7 +2063,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR prologue_start, prologue_end, func_end, prev_pc, block_addr;
struct csky_unwind_cache *cache;
@@ -2122,7 +2122,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
struct csky_unwind_cache *cache;
@@ -2143,7 +2143,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct csky_unwind_cache *cache;
@@ -2172,7 +2172,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 (const frame_info_ptr &frame, CORE_ADDR pc)
{
gdb_byte buf[8];
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -2209,7 +2209,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block, pc;
@@ -2240,7 +2240,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 (const frame_info_ptr &this_frame)
{
struct csky_unwind_cache *cache;
@@ -2252,7 +2252,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -2267,7 +2267,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 (const frame_info_ptr &this_frame,
void **this_cache,
int prev_regnum)
{
@@ -2307,7 +2307,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct csky_unwind_cache *cache;
@@ -2330,7 +2330,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)
+ const frame_info_ptr &this_frame)
{
if (regnum == gdbarch_pc_regnum (gdbarch))
reg->how = DWARF2_FRAME_REG_RA;
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index 8bde53ea8fd1..5757de1cf77d 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -129,7 +129,7 @@ class dtrace_probe : public probe
/* See probe.h. */
struct value *evaluate_argument (unsigned n,
- frame_info_ptr frame) override;
+ const frame_info_ptr &frame) override;
/* See probe.h. */
void compile_to_ax (struct agent_expr *aexpr,
@@ -708,7 +708,7 @@ dtrace_probe::can_evaluate_arguments () const
struct value *
dtrace_probe::evaluate_argument (unsigned n,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
struct gdbarch *gdbarch = this->get_gdbarch ();
struct dtrace_probe_arg *arg;
diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c
index 309483d95d41..5969ef2cdadd 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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
{
CORE_ADDR sp, pc;
diff --git a/gdb/dummy-frame.h b/gdb/dummy-frame.h
index 753be1aa54c4..7d963ad9beb6 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);
+ const frame_info_ptr &this_frame);
#endif /* !defined (DUMMY_FRAME_H) */
diff --git a/gdb/dwarf2/ada-imported.c b/gdb/dwarf2/ada-imported.c
index 1a0bc1d528e2..065e2b90a0f4 100644
--- a/gdb/dwarf2/ada-imported.c
+++ b/gdb/dwarf2/ada-imported.c
@@ -32,7 +32,7 @@ get_imported_name (const struct symbol *sym)
/* Implement the read_variable method from symbol_computed_ops. */
static struct value *
-ada_imported_read_variable (struct symbol *symbol, frame_info_ptr frame)
+ada_imported_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
{
const char *name = get_imported_name (symbol);
bound_minimal_symbol minsym = lookup_minimal_symbol_linkage (name, false);
diff --git a/gdb/dwarf2/call-site.h b/gdb/dwarf2/call-site.h
index 5434c8452606..0a0c7e83b813 100644
--- a/gdb/dwarf2/call-site.h
+++ b/gdb/dwarf2/call-site.h
@@ -94,7 +94,7 @@ struct call_site_target
void iterate_over_addresses (struct gdbarch *call_site_gdbarch,
const struct call_site *call_site,
- frame_info_ptr caller_frame,
+ const frame_info_ptr &caller_frame,
iterate_ftype callback) const;
private:
@@ -201,7 +201,7 @@ struct call_site
throw NO_ENTRY_VALUE_ERROR. */
void iterate_over_addresses (struct gdbarch *call_site_gdbarch,
- frame_info_ptr caller_frame,
+ const frame_info_ptr &caller_frame,
call_site_target::iterate_ftype callback)
const
{
diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c
index 9cfae104f31c..d0256e7009d9 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 (const frame_info_ptr &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 (const frame_info_ptr &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)
+ const frame_info_ptr &frame)
{
piece_closure *c = new piece_closure;
@@ -1076,7 +1076,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, const frame_info_ptr &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 6acd07811f85..b02cc5316406 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, const frame_info_ptr &frame,
const struct property_addr_info *addr_info = nullptr,
struct type *type = nullptr,
struct type *subobj_type = 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 (const frame_info_ptr &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 27a820a6168f..2f6400d62c38 100644
--- a/gdb/dwarf2/frame-tailcall.c
+++ b/gdb/dwarf2/frame-tailcall.c
@@ -90,7 +90,7 @@ 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 (const frame_info_ptr &next_bottom_frame)
{
struct tailcall_cache *cache = XCNEW (struct tailcall_cache);
void **slot;
@@ -137,7 +137,7 @@ cache_unref (struct tailcall_cache *cache)
return 0. */
static int
-frame_is_tailcall (frame_info_ptr fi)
+frame_is_tailcall (const frame_info_ptr &fi)
{
return frame_unwinder_is (fi, &dwarf2_tailcall_frame_unwind);
}
@@ -146,12 +146,13 @@ 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 (const frame_info_ptr &initial_fi)
{
struct tailcall_cache *cache;
struct tailcall_cache search;
void **slot;
+ frame_info_ptr fi = initial_fi;
while (frame_is_tailcall (fi))
{
fi = get_next_frame (fi);
@@ -173,7 +174,7 @@ 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 (const frame_info_ptr &this_frame,
struct tailcall_cache *cache)
{
int retval = (frame_relative_level (this_frame)
@@ -210,7 +211,7 @@ 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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
@@ -232,7 +233,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 (const frame_info_ptr &this_frame, struct tailcall_cache *cache)
{
int next_levels = existing_next_levels (this_frame, cache);
struct call_site_chain *chain = cache->chain;
@@ -264,7 +265,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 (const frame_info_ptr &this_frame,
void **tailcall_cachep, int regnum)
{
struct gdbarch *this_gdbarch = get_frame_arch (this_frame);
@@ -294,7 +295,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
@@ -316,7 +317,7 @@ 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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
frame_info_ptr next_frame;
int next_levels;
@@ -363,7 +364,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 (const frame_info_ptr &this_frame,
void **tailcall_cachep,
const LONGEST *entry_cfa_sp_offsetp)
{
@@ -458,7 +459,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 (const frame_info_ptr &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 b0809c8b7131..3f49487ac2a7 100644
--- a/gdb/dwarf2/frame-tailcall.h
+++ b/gdb/dwarf2/frame-tailcall.h
@@ -26,12 +26,12 @@ struct frame_unwind;
/* The tail call frame unwinder. */
extern void
- dwarf2_tailcall_sniffer_first (frame_info_ptr this_frame,
+ dwarf2_tailcall_sniffer_first (const frame_info_ptr &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 (const frame_info_ptr &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 fc6704f434ee..530513c2684e 100644
--- a/gdb/dwarf2/frame.c
+++ b/gdb/dwarf2/frame.c
@@ -233,7 +233,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,
+ const frame_info_ptr &this_frame, CORE_ADDR initial,
int initial_in_stack_memory, dwarf2_per_objfile *per_objfile)
{
dwarf_expr_context ctx (per_objfile, addr_size);
@@ -589,17 +589,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);
+ const frame_info_ptr &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)
+ const frame_info_ptr &)
= 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 *, const frame_info_ptr &) = nullptr;
/* Convert .eh_frame register number to DWARF register number, or
adjust .debug_frame register number. */
@@ -625,7 +625,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)
+ const frame_info_ptr &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
@@ -666,7 +666,7 @@ void
dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
void (*init_reg) (struct gdbarch *, int,
struct dwarf2_frame_state_reg *,
- frame_info_ptr))
+ const frame_info_ptr &))
{
struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
@@ -678,7 +678,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)
+ const frame_info_ptr &this_frame)
{
struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
@@ -691,7 +691,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))
+ const frame_info_ptr &))
{
struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
@@ -703,7 +703,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)
+ const frame_info_ptr &this_frame)
{
struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
@@ -890,7 +890,7 @@ struct dwarf2_frame_cache
};
static struct dwarf2_frame_cache *
-dwarf2_frame_cache (frame_info_ptr this_frame, void **this_cache)
+dwarf2_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
const int num_regs = gdbarch_num_cooked_regs (gdbarch);
@@ -1120,7 +1120,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct dwarf2_frame_cache *cache
@@ -1136,7 +1136,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct dwarf2_frame_cache *cache =
@@ -1151,7 +1151,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1253,7 +1253,7 @@ dwarf2_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
/* See frame.h. */
void *
-dwarf2_frame_get_fn_data (frame_info_ptr this_frame, void **this_cache,
+dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame, void **this_cache,
fn_prev_register cookie)
{
struct dwarf2_frame_fn_data *fn_data = nullptr;
@@ -1271,7 +1271,7 @@ dwarf2_frame_get_fn_data (frame_info_ptr this_frame, void **this_cache,
/* See frame.h. */
void *
-dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame, void **this_cache,
+dwarf2_frame_allocate_fn_data (const frame_info_ptr &this_frame, void **this_cache,
fn_prev_register cookie, unsigned long size)
{
struct dwarf2_frame_fn_data *fn_data = nullptr;
@@ -1307,7 +1307,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
if (!dwarf2_frame_unwinders_enabled_p)
return 0;
@@ -1383,7 +1383,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct dwarf2_frame_cache *cache =
dwarf2_frame_cache (this_frame, this_cache);
@@ -1400,7 +1400,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
@@ -1415,8 +1415,10 @@ 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 (const frame_info_ptr &initial_this_frame)
{
+ frame_info_ptr this_frame = initial_this_frame;
+
if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind)
|| frame_unwinder_is (this_frame, &record_btrace_frame_unwind))
throw_error (NOT_AVAILABLE_ERROR,
diff --git a/gdb/dwarf2/frame.h b/gdb/dwarf2/frame.h
index 1ef35ee29482..2167310fbdf0 100644
--- a/gdb/dwarf2/frame.h
+++ b/gdb/dwarf2/frame.h
@@ -66,7 +66,7 @@ enum dwarf2_frame_reg_rule
/* Register state. */
-typedef struct value *(*fn_prev_register) (frame_info_ptr this_frame,
+typedef struct value *(*fn_prev_register) (const frame_info_ptr &this_frame,
void **this_cache, int regnum);
struct dwarf2_frame_state_reg
@@ -207,18 +207,17 @@ extern bool dwarf2_frame_unwinders_enabled_p;
/* Set the architecture-specific register state initialization
function for GDBARCH to INIT_REG. */
-extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
- void (*init_reg) (struct gdbarch *, int,
- struct dwarf2_frame_state_reg *,
- frame_info_ptr));
+extern void dwarf2_frame_set_init_reg (
+ gdbarch *gdbarch, void (*init_reg) (struct gdbarch *, int,
+ dwarf2_frame_state_reg *,
+ const frame_info_ptr &));
/* Set the architecture-specific signal trampoline recognition
function for GDBARCH to SIGNAL_FRAME_P. */
-extern void
- dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
- int (*signal_frame_p) (struct gdbarch *,
- frame_info_ptr));
+extern void dwarf2_frame_set_signal_frame_p
+ (gdbarch *gdbarch, int (*signal_frame_p) (struct gdbarch *,
+ const frame_info_ptr &));
/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
register numbers. */
@@ -236,11 +235,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 (const frame_info_ptr &this_frame);
/* Compute the DWARF CFA for a frame. */
-CORE_ADDR dwarf2_frame_cfa (frame_info_ptr this_frame);
+CORE_ADDR dwarf2_frame_cfa (const frame_info_ptr &this_frame);
/* Find the CFA information for PC.
@@ -276,7 +275,7 @@ extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
COOKIE is the key for the prev_function implementation.
SIZE is the size of the custom data object to allocate. */
-extern void *dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame,
+extern void *dwarf2_frame_allocate_fn_data (const frame_info_ptr &this_frame,
void **this_cache,
fn_prev_register cookie,
unsigned long size);
@@ -291,7 +290,7 @@ extern void *dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame,
THIS_CACHE is the dwarf2 cache object to store the pointer on.
COOKIE is the key for the prev_function implementation. */
-extern void *dwarf2_frame_get_fn_data (frame_info_ptr this_frame,
+extern void *dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame,
void **this_cache,
fn_prev_register cookie);
diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c
index 0f0d14fad3ff..203ad536162a 100644
--- a/gdb/dwarf2/loc.c
+++ b/gdb/dwarf2/loc.c
@@ -48,7 +48,7 @@
#include "gdbsupport/byte-vector.h"
static struct value *dwarf2_evaluate_loc_desc_full
- (struct type *type, frame_info_ptr frame, const gdb_byte *data,
+ (struct type *type, const frame_info_ptr &frame, const gdb_byte *data,
size_t size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
struct type *subobj_type, LONGEST subobj_byte_offset, bool as_lval = true);
@@ -503,7 +503,7 @@ locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
LOC_BLOCK functions using a DWARF expression as its DW_AT_frame_base. */
static CORE_ADDR
-locexpr_get_frame_base (struct symbol *framefunc, frame_info_ptr frame)
+locexpr_get_frame_base (struct symbol *framefunc, const frame_info_ptr &frame)
{
struct gdbarch *gdbarch;
struct type *type;
@@ -561,7 +561,7 @@ loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
LOC_BLOCK functions using a DWARF location list as its DW_AT_frame_base. */
static CORE_ADDR
-loclist_get_frame_base (struct symbol *framefunc, frame_info_ptr frame)
+loclist_get_frame_base (struct symbol *framefunc, const frame_info_ptr &frame)
{
struct gdbarch *gdbarch;
struct type *type;
@@ -649,11 +649,10 @@ show_entry_values_debug (struct ui_file *file, int from_tty,
/* See gdbtypes.h. */
void
-call_site_target::iterate_over_addresses
- (struct gdbarch *call_site_gdbarch,
- const struct call_site *call_site,
- frame_info_ptr caller_frame,
- iterate_ftype callback) const
+call_site_target::iterate_over_addresses (gdbarch *call_site_gdbarch,
+ const call_site *call_site,
+ const frame_info_ptr &caller_frame,
+ iterate_ftype callback) const
{
switch (m_loc_kind)
{
@@ -1138,9 +1137,9 @@ 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,
- enum call_site_parameter_kind kind,
- union call_site_parameter_u kind_u,
+dwarf_expr_reg_to_entry_parameter (const frame_info_ptr &initial_frame,
+ call_site_parameter_kind kind,
+ call_site_parameter_u kind_u,
dwarf2_per_cu_data **per_cu_return,
dwarf2_per_objfile **per_objfile_return)
{
@@ -1152,6 +1151,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
/* Initialize it just to avoid a GCC false warning. */
struct call_site_parameter *parameter = NULL;
CORE_ADDR target_addr;
+ frame_info_ptr frame = initial_frame;
while (get_frame_type (frame) == INLINE_FRAME)
{
@@ -1263,7 +1263,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
static struct value *
dwarf_entry_parameter_to_value (struct call_site_parameter *parameter,
CORE_ADDR deref_size, struct type *type,
- frame_info_ptr caller_frame,
+ const frame_info_ptr &caller_frame,
dwarf2_per_cu_data *per_cu,
dwarf2_per_objfile *per_objfile)
{
@@ -1339,7 +1339,7 @@ static const struct lval_funcs entry_data_value_funcs =
/* See dwarf2/loc.h. */
struct value *
-value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame,
+value_of_dwarf_reg_entry (struct type *type, const frame_info_ptr &frame,
enum call_site_parameter_kind kind,
union call_site_parameter_u kind_u)
{
@@ -1395,7 +1395,7 @@ value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame,
cannot resolve the parameter for any reason. */
static struct value *
-value_of_dwarf_block_entry (struct type *type, frame_info_ptr frame,
+value_of_dwarf_block_entry (struct type *type, const frame_info_ptr &frame,
const gdb_byte *block, size_t block_len)
{
union call_site_parameter_u kind_u;
@@ -1456,7 +1456,7 @@ struct value *
indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
dwarf2_per_cu_data *per_cu,
dwarf2_per_objfile *per_objfile,
- frame_info_ptr frame, struct type *type,
+ const frame_info_ptr &frame, struct type *type,
bool resolve_abstract_p)
{
/* Fetch the location expression of the DIE we're pointing to. */
@@ -1496,7 +1496,7 @@ indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
SUBOBJ_BYTE_OFFSET within the variable of type TYPE. */
static struct value *
-dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame,
+dwarf2_evaluate_loc_desc_full (struct type *type, const frame_info_ptr &frame,
const gdb_byte *data, size_t size,
dwarf2_per_cu_data *per_cu,
dwarf2_per_objfile *per_objfile,
@@ -1561,7 +1561,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame,
passes 0 as the byte_offset. */
struct value *
-dwarf2_evaluate_loc_desc (struct type *type, frame_info_ptr frame,
+dwarf2_evaluate_loc_desc (struct type *type, const frame_info_ptr &frame,
const gdb_byte *data, size_t size,
dwarf2_per_cu_data *per_cu,
dwarf2_per_objfile *per_objfile, bool as_lval)
@@ -1584,7 +1584,7 @@ dwarf2_evaluate_loc_desc (struct type *type, frame_info_ptr frame,
static int
dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
const struct property_addr_info *addr_stack,
CORE_ADDR *valp,
gdb::array_view<CORE_ADDR> push_values,
@@ -1644,9 +1644,9 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
/* See dwarf2/loc.h. */
bool
-dwarf2_evaluate_property (const struct dynamic_prop *prop,
- frame_info_ptr frame,
- const struct property_addr_info *addr_stack,
+dwarf2_evaluate_property (const dynamic_prop *prop,
+ const frame_info_ptr &initial_frame,
+ const property_addr_info *addr_stack,
CORE_ADDR *value,
gdb::array_view<CORE_ADDR> push_values)
{
@@ -1657,6 +1657,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
Without this here this could happen if the code below selects a
frame. */
scoped_restore_current_language save_language;
+ frame_info_ptr frame = initial_frame;
if (frame == NULL && has_stack_frames ())
frame = get_selected_frame (NULL);
@@ -3051,7 +3052,7 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
evaluator to calculate the location. */
static struct value *
-locexpr_read_variable (struct symbol *symbol, frame_info_ptr frame)
+locexpr_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
{
struct dwarf2_locexpr_baton *dlbaton
= (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
@@ -3069,7 +3070,7 @@ locexpr_read_variable (struct symbol *symbol, frame_info_ptr frame)
will be thrown. */
static struct value *
-locexpr_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame)
+locexpr_read_variable_at_entry (struct symbol *symbol, const frame_info_ptr &frame)
{
struct dwarf2_locexpr_baton *dlbaton
= (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
@@ -3884,7 +3885,7 @@ const struct symbol_computed_ops dwarf2_locexpr_funcs = {
/* Return the value of SYMBOL in FRAME using the DWARF-2 expression
evaluator to calculate the location. */
static struct value *
-loclist_read_variable (struct symbol *symbol, frame_info_ptr frame)
+loclist_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
{
struct dwarf2_loclist_baton *dlbaton
= (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
@@ -3909,7 +3910,7 @@ loclist_read_variable (struct symbol *symbol, frame_info_ptr frame)
if it cannot resolve the parameter for any reason. */
static struct value *
-loclist_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame)
+loclist_read_variable_at_entry (struct symbol *symbol, const frame_info_ptr &frame)
{
struct dwarf2_loclist_baton *dlbaton
= (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
diff --git a/gdb/dwarf2/loc.h b/gdb/dwarf2/loc.h
index fb98e26b72db..4fb743618e7c 100644
--- a/gdb/dwarf2/loc.h
+++ b/gdb/dwarf2/loc.h
@@ -65,9 +65,9 @@ value *compute_var_value (const char *name);
Function always returns non-NULL, it throws NO_ENTRY_VALUE_ERROR
otherwise. */
-struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
- (frame_info_ptr frame, enum call_site_parameter_kind kind,
- union call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return,
+call_site_parameter *dwarf_expr_reg_to_entry_parameter
+ (const frame_info_ptr &frame, call_site_parameter_kind kind,
+ call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return,
dwarf2_per_objfile **per_objfile_return);
@@ -76,13 +76,11 @@ struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
of FRAME. AS_LVAL defines if the resulting struct value is expected to
be a value or a location description. */
-struct value *dwarf2_evaluate_loc_desc (struct type *type,
- frame_info_ptr frame,
- const gdb_byte *data,
- size_t size,
- dwarf2_per_cu_data *per_cu,
- dwarf2_per_objfile *per_objfile,
- bool as_lval = true);
+value *dwarf2_evaluate_loc_desc (type *type, const frame_info_ptr &frame,
+ const gdb_byte *data, size_t size,
+ dwarf2_per_cu_data *per_cu,
+ dwarf2_per_objfile *per_objfile,
+ bool as_lval = true);
/* A chain of addresses that might be needed to resolve a dynamic
property. */
@@ -121,8 +119,8 @@ struct property_addr_info
bottom of the stack. */
bool dwarf2_evaluate_property (const struct dynamic_prop *prop,
- frame_info_ptr frame,
- const struct property_addr_info *addr_stack,
+ const frame_info_ptr &frame,
+ const property_addr_info *addr_stack,
CORE_ADDR *value,
gdb::array_view<CORE_ADDR> push_values = {});
@@ -296,7 +294,7 @@ extern void invalid_synthetic_pointer ();
extern struct value *indirect_synthetic_pointer
(sect_offset die, LONGEST byte_offset, dwarf2_per_cu_data *per_cu,
- dwarf2_per_objfile *per_objfile, frame_info_ptr frame,
+ dwarf2_per_objfile *per_objfile, const frame_info_ptr &frame,
struct type *type, bool resolve_abstract_p = false);
/* Read parameter of TYPE at (callee) FRAME's function entry. KIND and KIND_U
@@ -307,7 +305,7 @@ extern struct value *indirect_synthetic_pointer
it cannot resolve the parameter for any reason. */
extern struct value *value_of_dwarf_reg_entry (struct type *type,
- struct frame_info_ptr frame,
+ const frame_info_ptr &frame,
enum call_site_parameter_kind kind,
union call_site_parameter_u kind_u);
#endif /* DWARF2LOC_H */
diff --git a/gdb/extension-priv.h b/gdb/extension-priv.h
index 4eece07ac12f..b709494927d4 100644
--- a/gdb/extension-priv.h
+++ b/gdb/extension-priv.h
@@ -180,7 +180,7 @@ struct extension_language_ops
or SCR_BT_COMPLETED on success. */
enum ext_lang_bt_status (*apply_frame_filter)
(const struct extension_language_defn *,
- frame_info_ptr frame, frame_filter_flags flags,
+ const frame_info_ptr &frame, frame_filter_flags flags,
enum ext_lang_frame_args args_type,
struct ui_out *out, int frame_low, int frame_high);
diff --git a/gdb/extension.c b/gdb/extension.c
index 2555161c2a79..42e05199d2c8 100644
--- a/gdb/extension.c
+++ b/gdb/extension.c
@@ -525,7 +525,7 @@ apply_ext_lang_val_pretty_printer (struct value *val,
rather than trying filters in other extension languages. */
enum ext_lang_bt_status
-apply_ext_lang_frame_filter (frame_info_ptr frame,
+apply_ext_lang_frame_filter (const frame_info_ptr &frame,
frame_filter_flags flags,
enum ext_lang_frame_args args_type,
struct ui_out *out,
diff --git a/gdb/extension.h b/gdb/extension.h
index 6dc19c36fc2a..0514d7930a22 100644
--- a/gdb/extension.h
+++ b/gdb/extension.h
@@ -295,7 +295,7 @@ extern int apply_ext_lang_val_pretty_printer
const struct language_defn *language);
extern enum ext_lang_bt_status apply_ext_lang_frame_filter
- (frame_info_ptr frame, frame_filter_flags flags,
+ (const frame_info_ptr &frame, frame_filter_flags flags,
enum ext_lang_frame_args args_type,
struct ui_out *out, int frame_low, int frame_high);
diff --git a/gdb/findvar.c b/gdb/findvar.c
index 2fcfccda1c7a..516a2ca044cc 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -246,7 +246,7 @@ copy_integer_to_size (gdb_byte *dest, int dest_size, const gdb_byte *source,
/* See value.h. */
value *
-value_of_register (int regnum, frame_info_ptr next_frame)
+value_of_register (int regnum, const frame_info_ptr &next_frame)
{
gdbarch *gdbarch = frame_unwind_arch (next_frame);
@@ -263,7 +263,7 @@ value_of_register (int regnum, frame_info_ptr next_frame)
/* See value.h. */
value *
-value_of_register_lazy (frame_info_ptr next_frame, int regnum)
+value_of_register_lazy (const frame_info_ptr &next_frame, int regnum)
{
gdbarch *gdbarch = frame_unwind_arch (next_frame);
@@ -377,7 +377,7 @@ symbol_read_needs_frame (struct symbol *sym)
static frame_info_ptr
get_hosting_frame (struct symbol *var, const struct block *var_block,
- frame_info_ptr frame)
+ const frame_info_ptr &initial_frame)
{
const struct block *frame_block = NULL;
@@ -389,7 +389,7 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
synthetic symbols. Without block information, we must assume they are
local to FRAME. In this case, there is nothing to do. */
else if (var_block == NULL)
- return frame;
+ return initial_frame;
/* We currently assume that all symbols with a location list need a frame.
This is true in practice because selecting the location description
@@ -398,15 +398,16 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
We want to get <optimized out> instead of <frame required> when evaluating
them so return a frame instead of raising an error. */
else if (var_block->is_global_block () || var_block->is_static_block ())
- return frame;
+ return initial_frame;
/* We have to handle the "my_func::my_local_var" notation. This requires us
to look for upper frames when we find no block for the current frame: here
and below, handle when frame_block == NULL. */
- if (frame != NULL)
- frame_block = get_frame_block (frame, NULL);
+ if (initial_frame != nullptr)
+ frame_block = get_frame_block (initial_frame, NULL);
/* Climb up the call stack until reaching the frame we are looking for. */
+ frame_info_ptr frame = initial_frame;
while (frame != NULL && frame_block != var_block)
{
/* Stacks can be quite deep: give the user a chance to stop this. */
@@ -476,12 +477,13 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
struct value *
language_defn::read_var_value (struct symbol *var,
const struct block *var_block,
- frame_info_ptr frame) const
+ const frame_info_ptr &frame_param) const
{
struct value *v;
struct type *type = var->type ();
CORE_ADDR addr;
enum symbol_needs_kind sym_need;
+ frame_info_ptr frame = frame_param;
/* Call check_typedef on our type to make sure that, if TYPE is
a TYPE_CODE_TYPEDEF, its length is set to the length of the target type
@@ -704,7 +706,7 @@ language_defn::read_var_value (struct symbol *var,
struct value *
read_var_value (struct symbol *var, const struct block *var_block,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
const struct language_defn *lang = language_def (var->language ());
@@ -789,7 +791,7 @@ read_frame_register_value (value *value)
/* 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, const frame_info_ptr &frame)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
struct type *type1 = check_typedef (type);
@@ -836,7 +838,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, const frame_info_ptr &frame)
{
type *type = builtin_type (get_frame_arch (frame))->builtin_data_ptr;
value_ref_ptr v = release_value (value_from_register (type, regnum, frame));
diff --git a/gdb/frame-base.c b/gdb/frame-base.c
index 9dd04eefa5b3..fda19b57bacb 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 9ca948114665..ae22431d5ef1 100644
--- a/gdb/frame-base.h
+++ b/gdb/frame-base.h
@@ -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) (const frame_info_ptr &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) (const frame_info_ptr &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) (const frame_info_ptr &this_frame,
void **this_base_cache);
struct frame_base
@@ -68,7 +68,7 @@ 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) (const frame_info_ptr &this_frame);
/* Append a frame base sniffer to the list. The sniffers are polled
in the order that they are appended. */
@@ -86,6 +86,6 @@ 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 (const frame_info_ptr &this_frame);
#endif
diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c
index 27aa9e10677d..e9983a9fd74f 100644
--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -123,7 +123,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 (const frame_info_ptr &this_frame, void **this_cache,
const struct frame_unwind *unwinder)
{
int res = 0;
@@ -183,7 +183,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 (const frame_info_ptr &this_frame, void **this_cache)
{
FRAME_SCOPED_DEBUG_ENTER_EXIT;
frame_debug_printf ("this_frame=%d", frame_relative_level (this_frame));
@@ -217,7 +217,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
return 1;
@@ -226,7 +226,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct frame_id this_id = get_frame_id (this_frame);
@@ -240,7 +240,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, const frame_info_ptr &next_frame)
{
int pc_regnum = gdbarch_pc_regnum (gdbarch);
CORE_ADDR pc = frame_unwind_register_unsigned (next_frame, pc_regnum);
@@ -251,7 +251,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, const frame_info_ptr &next_frame)
{
int sp_regnum = gdbarch_sp_regnum (gdbarch);
return frame_unwind_register_unsigned (next_frame, sp_regnum);
@@ -263,7 +263,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 (const frame_info_ptr &frame, int regnum)
{
struct gdbarch *gdbarch = frame_unwind_arch (frame);
struct type *type = register_type (gdbarch, regnum);
@@ -275,7 +275,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 (const frame_info_ptr &frame,
int regnum, int new_regnum)
{
return value_of_register_lazy (get_next_frame_sentinel_okay (frame),
@@ -286,7 +286,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 (const frame_info_ptr &frame, int regnum, CORE_ADDR addr)
{
struct gdbarch *gdbarch = frame_unwind_arch (frame);
struct value *v = value_at_lazy (register_type (gdbarch, regnum), addr);
@@ -299,7 +299,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 (const frame_info_ptr &frame, int regnum,
ULONGEST val)
{
struct gdbarch *gdbarch = frame_unwind_arch (frame);
@@ -313,7 +313,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 (const frame_info_ptr &frame, int regnum, const gdb_byte *buf)
{
struct gdbarch *gdbarch = frame_unwind_arch (frame);
struct value *reg_val;
@@ -329,7 +329,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 (const frame_info_ptr &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 9e978890e843..53fcd6869e95 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,
+ const frame_info_ptr &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);
+typedef unwind_stop_reason (frame_unwind_stop_reason_ftype)
+ (const frame_info_ptr &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,
+ const frame_info_ptr &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 (const frame_info_ptr &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);
+ const frame_info_ptr &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);
+ const frame_info_ptr &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) (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id);
@@ -140,9 +140,9 @@ typedef void (frame_this_id_ftype) (frame_info_ptr this_frame,
with the other unwind methods. Memory for that cache should be
allocated using FRAME_OBSTACK_ZALLOC(). */
-typedef struct value * (frame_prev_register_ftype)
- (frame_info_ptr this_frame, void **this_prologue_cache,
- int regnum);
+typedef value *(frame_prev_register_ftype) (const frame_info_ptr &this_frame,
+ void **this_prologue_cache,
+ int regnum);
/* Deallocate extra memory associated with the frame cache if any. */
@@ -153,8 +153,8 @@ 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,
- void **this_prologue_cache);
+typedef gdbarch *(frame_prev_arch_ftype) (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **this_cache);
/* Helper functions for value-based register unwinding. These return
@@ -201,39 +201,38 @@ 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,
- int regnum);
+value *frame_unwind_got_optimized (const frame_info_ptr &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,
- int new_regnum);
+value *frame_unwind_got_register (const frame_info_ptr &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,
- CORE_ADDR addr);
+value *frame_unwind_got_memory (const frame_info_ptr &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,
- ULONGEST val);
+value *frame_unwind_got_constant (const frame_info_ptr &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,
- const gdb_byte *buf);
+value *frame_unwind_got_bytes (const frame_info_ptr &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,
- CORE_ADDR addr);
+value *frame_unwind_got_address (const frame_info_ptr &frame, int regnum,
+ CORE_ADDR addr);
#endif
diff --git a/gdb/frame.c b/gdb/frame.c
index 72a34fcfedca..9c3f0dfd4f2d 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -71,7 +71,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_ptr get_prev_frame_raw (const frame_info_ptr &this_frame);
static const char *frame_stop_reason_symbol_string (enum unwind_stop_reason reason);
static frame_info_ptr create_new_frame (frame_id id);
@@ -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 (const frame_info_ptr &frame)
{
frame->prev_pc.masked = true;
}
@@ -205,7 +205,7 @@ set_frame_previous_pc_masked (frame_info_ptr frame)
/* See frame.h. */
bool
-get_frame_pc_masked (frame_info_ptr frame)
+get_frame_pc_masked (const frame_info_ptr &frame)
{
gdb_assert (frame->next != nullptr);
gdb_assert (frame->next->prev_pc.status == CC_VALUE);
@@ -528,7 +528,7 @@ frame_info::to_string () const
Return NULL if FRAME is the start of an artificial-only chain. */
static frame_info_ptr
-skip_artificial_frames (frame_info_ptr frame)
+skip_artificial_frames (const frame_info_ptr &initial_frame)
{
/* Note we use get_prev_frame_always, and not get_prev_frame. The
latter will truncate the frame chain, leading to this function
@@ -537,6 +537,7 @@ skip_artificial_frames (frame_info_ptr frame)
Note that for record targets we may get a frame chain that consists
of artificial frames only. */
+ frame_info_ptr frame = initial_frame;
while (get_frame_type (frame) == INLINE_FRAME
|| get_frame_type (frame) == TAILCALL_FRAME)
{
@@ -549,8 +550,9 @@ skip_artificial_frames (frame_info_ptr frame)
}
frame_info_ptr
-skip_unwritable_frames (frame_info_ptr frame)
+skip_unwritable_frames (const frame_info_ptr &initial_frame)
{
+ frame_info_ptr frame = initial_frame;
while (gdbarch_code_of_frame_writable (get_frame_arch (frame), frame) == 0)
{
frame = get_prev_frame (frame);
@@ -564,8 +566,9 @@ skip_unwritable_frames (frame_info_ptr frame)
/* See frame.h. */
frame_info_ptr
-skip_tailcall_frames (frame_info_ptr frame)
+skip_tailcall_frames (const frame_info_ptr &initial_frame)
{
+ frame_info_ptr frame = initial_frame;
while (get_frame_type (frame) == TAILCALL_FRAME)
{
/* Note that for record targets we may get a frame chain that consists of
@@ -582,7 +585,7 @@ skip_tailcall_frames (frame_info_ptr frame)
frame. */
static void
-compute_frame_id (frame_info_ptr fi)
+compute_frame_id (const frame_info_ptr &fi)
{
FRAME_SCOPED_DEBUG_ENTER_EXIT;
@@ -628,7 +631,7 @@ compute_frame_id (frame_info_ptr fi)
frame. */
struct frame_id
-get_frame_id (frame_info_ptr fi)
+get_frame_id (const frame_info_ptr &fi)
{
if (fi == NULL)
return null_frame_id;
@@ -659,26 +662,24 @@ get_frame_id (frame_info_ptr fi)
}
struct frame_id
-get_stack_frame_id (frame_info_ptr next_frame)
+get_stack_frame_id (const frame_info_ptr &next_frame)
{
return get_frame_id (skip_artificial_frames (next_frame));
}
struct frame_id
-frame_unwind_caller_id (frame_info_ptr next_frame)
+frame_unwind_caller_id (const frame_info_ptr &initial_next_frame)
{
- frame_info_ptr this_frame;
-
/* Use get_prev_frame_always, and not get_prev_frame. The latter
will truncate the frame chain, leading to this function
unintentionally returning a null_frame_id (e.g., when a caller
requests the frame ID of "main()"s caller. */
- next_frame = skip_artificial_frames (next_frame);
+ frame_info_ptr next_frame = skip_artificial_frames (initial_next_frame);
if (next_frame == NULL)
return null_frame_id;
- this_frame = get_prev_frame_always (next_frame);
+ frame_info_ptr this_frame = get_prev_frame_always (next_frame);
if (this_frame)
return get_frame_id (skip_artificial_frames (this_frame));
else
@@ -965,7 +966,7 @@ frame_find_by_id (struct frame_id id)
}
static CORE_ADDR
-frame_unwind_pc (frame_info_ptr this_frame)
+frame_unwind_pc (const frame_info_ptr &this_frame)
{
if (this_frame->prev_pc.status == CC_UNKNOWN)
{
@@ -1039,20 +1040,20 @@ frame_unwind_pc (frame_info_ptr this_frame)
}
CORE_ADDR
-frame_unwind_caller_pc (frame_info_ptr this_frame)
+frame_unwind_caller_pc (const frame_info_ptr &initial_this_frame)
{
- this_frame = skip_artificial_frames (this_frame);
+ frame_info_ptr this_frame = skip_artificial_frames (initial_this_frame);
/* We must have a non-artificial frame. The caller is supposed to check
the result of frame_unwind_caller_id (), which returns NULL_FRAME_ID
in this case. */
- gdb_assert (this_frame != NULL);
+ gdb_assert (this_frame != nullptr);
return frame_unwind_pc (this_frame);
}
bool
-get_frame_func_if_available (frame_info_ptr this_frame, CORE_ADDR *pc)
+get_frame_func_if_available (const frame_info_ptr &this_frame, CORE_ADDR *pc)
{
frame_info *next_frame = this_frame->next;
@@ -1095,7 +1096,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR pc;
@@ -1106,7 +1107,7 @@ get_frame_func (frame_info_ptr this_frame)
}
std::unique_ptr<readonly_detached_regcache>
-frame_save_as_regcache (frame_info_ptr this_frame)
+frame_save_as_regcache (const frame_info_ptr &this_frame)
{
auto cooked_read = [this_frame] (int regnum, gdb::array_view<gdb_byte> buf)
{
@@ -1123,7 +1124,7 @@ frame_save_as_regcache (frame_info_ptr this_frame)
}
void
-frame_pop (frame_info_ptr this_frame)
+frame_pop (const frame_info_ptr &this_frame)
{
frame_info_ptr prev_frame;
@@ -1172,7 +1173,7 @@ frame_pop (frame_info_ptr this_frame)
}
void
-frame_register_unwind (frame_info_ptr next_frame, int regnum,
+frame_register_unwind (const frame_info_ptr &next_frame, int regnum,
int *optimizedp, int *unavailablep,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, gdb_byte *bufferp)
@@ -1215,7 +1216,7 @@ frame_register_unwind (frame_info_ptr next_frame, int regnum,
}
void
-frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
+frame_unwind_register (const frame_info_ptr &next_frame, int regnum, gdb_byte *buf)
{
int optimized;
int unavailable;
@@ -1235,14 +1236,14 @@ frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
}
void
-get_frame_register (frame_info_ptr frame,
+get_frame_register (const frame_info_ptr &frame,
int regnum, gdb_byte *buf)
{
frame_unwind_register (frame_info_ptr (frame->next), regnum, buf);
}
struct value *
-frame_unwind_register_value (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_value (const frame_info_ptr &next_frame, int regnum)
{
FRAME_SCOPED_DEBUG_ENTER_EXIT;
@@ -1334,13 +1335,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 (const frame_info_ptr &frame, int regnum)
{
return frame_unwind_register_value (frame_info_ptr (frame->next), regnum);
}
LONGEST
-frame_unwind_register_signed (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_signed (const frame_info_ptr &next_frame, int regnum)
{
struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1366,13 +1367,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 (const frame_info_ptr &frame, int regnum)
{
return frame_unwind_register_signed (frame_info_ptr (frame->next), regnum);
}
ULONGEST
-frame_unwind_register_unsigned (frame_info_ptr next_frame, int regnum)
+frame_unwind_register_unsigned (const frame_info_ptr &next_frame, int regnum)
{
struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1400,13 +1401,13 @@ 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 (const frame_info_ptr &frame, int regnum)
{
return frame_unwind_register_unsigned (frame_info_ptr (frame->next), regnum);
}
bool
-read_frame_register_unsigned (frame_info_ptr frame, int regnum,
+read_frame_register_unsigned (const frame_info_ptr &frame, int regnum,
ULONGEST *val)
{
struct value *regval = get_frame_register_value (frame, regnum);
@@ -1427,7 +1428,7 @@ read_frame_register_unsigned (frame_info_ptr frame, int regnum,
}
void
-put_frame_register (frame_info_ptr next_frame, int regnum,
+put_frame_register (const frame_info_ptr &next_frame, int regnum,
gdb::array_view<const gdb_byte> buf)
{
gdbarch *gdbarch = frame_unwind_arch (next_frame);
@@ -1475,7 +1476,7 @@ put_frame_register (frame_info_ptr next_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 (const frame_info_ptr &frame, int regnum,
gdb_byte *myaddr)
{
int optimized;
@@ -1492,7 +1493,7 @@ deprecated_frame_register_read (frame_info_ptr frame, int regnum,
}
bool
-get_frame_register_bytes (frame_info_ptr next_frame, int regnum,
+get_frame_register_bytes (const frame_info_ptr &next_frame, int regnum,
CORE_ADDR offset, gdb::array_view<gdb_byte> buffer,
int *optimizedp, int *unavailablep)
{
@@ -1569,7 +1570,7 @@ get_frame_register_bytes (frame_info_ptr next_frame, int regnum,
}
void
-put_frame_register_bytes (frame_info_ptr next_frame, int regnum,
+put_frame_register_bytes (const frame_info_ptr &next_frame, int regnum,
CORE_ADDR offset,
gdb::array_view<const gdb_byte> buffer)
{
@@ -1658,7 +1659,7 @@ 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_ptr get_prev_frame_always_1 (const frame_info_ptr &this_frame);
frame_info_ptr
get_current_frame (void)
@@ -1920,7 +1921,7 @@ invalidate_selected_frame ()
/* See frame.h. */
void
-select_frame (frame_info_ptr fi)
+select_frame (const frame_info_ptr &fi)
{
gdb_assert (fi != nullptr);
@@ -2062,7 +2063,7 @@ create_new_frame (CORE_ADDR stack, CORE_ADDR pc)
frame chain and onto the sentinel frame. */
frame_info_ptr
-get_next_frame (frame_info_ptr this_frame)
+get_next_frame (const frame_info_ptr &this_frame)
{
if (this_frame->level > 0)
return frame_info_ptr (this_frame->next);
@@ -2075,7 +2076,7 @@ get_next_frame (frame_info_ptr this_frame)
unlike get_next_frame(), NULL will never be returned. */
frame_info_ptr
-get_next_frame_sentinel_okay (frame_info_ptr this_frame)
+get_next_frame_sentinel_okay (const frame_info_ptr &this_frame)
{
gdb_assert (this_frame != NULL);
@@ -2141,12 +2142,13 @@ reinit_frame_cache (void)
relative to this particular frame. */
static void
-frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
- int *optimizedp, enum lval_type *lvalp,
+frame_register_unwind_location (const frame_info_ptr &initial_this_frame,
+ int regnum, int *optimizedp, lval_type *lvalp,
CORE_ADDR *addrp, int *realnump)
{
- gdb_assert (this_frame == NULL || this_frame->level >= 0);
+ gdb_assert (initial_this_frame == nullptr || initial_this_frame->level >= 0);
+ frame_info_ptr this_frame = initial_this_frame;
while (this_frame != NULL)
{
int unavailable;
@@ -2185,7 +2187,7 @@ frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
of the previous frame, should also be a duplicate. */
static frame_info_ptr
-get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
+get_prev_frame_maybe_check_cycle (const frame_info_ptr &this_frame)
{
frame_info_ptr prev_frame = get_prev_frame_raw (this_frame);
@@ -2273,7 +2275,7 @@ get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
there is no such frame. This may throw an exception. */
static frame_info_ptr
-get_prev_frame_always_1 (frame_info_ptr this_frame)
+get_prev_frame_always_1 (const frame_info_ptr &this_frame)
{
FRAME_SCOPED_DEBUG_ENTER_EXIT;
@@ -2429,7 +2431,7 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
frame. */
frame_info_ptr
-get_prev_frame_always (frame_info_ptr this_frame)
+get_prev_frame_always (const frame_info_ptr &this_frame)
{
frame_info_ptr prev_frame = NULL;
@@ -2469,7 +2471,7 @@ get_prev_frame_always (frame_info_ptr this_frame)
this_frame. */
static frame_info_ptr
-get_prev_frame_raw (frame_info_ptr this_frame)
+get_prev_frame_raw (const frame_info_ptr &this_frame)
{
frame_info *prev_frame;
@@ -2522,7 +2524,7 @@ get_prev_frame_raw (frame_info_ptr this_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 (const frame_info_ptr &this_frame,
const char *reason)
{
if (frame_debug)
@@ -2537,7 +2539,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 (const frame_info_ptr &this_frame)
{
if (current_program_space->symfile_object_file == nullptr)
return false;
@@ -2585,7 +2587,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR entry_point;
@@ -2605,7 +2607,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 (const frame_info_ptr &this_frame)
{
FRAME_SCOPED_DEBUG_ENTER_EXIT;
@@ -2703,14 +2705,14 @@ get_prev_frame (frame_info_ptr this_frame)
}
CORE_ADDR
-get_frame_pc (frame_info_ptr frame)
+get_frame_pc (const frame_info_ptr &frame)
{
gdb_assert (frame->next != NULL);
return frame_unwind_pc (frame_info_ptr (frame->next));
}
bool
-get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc)
+get_frame_pc_if_available (const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_assert (frame->next != NULL);
@@ -2733,7 +2735,7 @@ 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 (const frame_info_ptr &this_frame)
{
/* A draft address. */
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2793,7 +2795,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 (const frame_info_ptr &this_frame,
CORE_ADDR *pc)
{
@@ -2812,7 +2814,7 @@ get_frame_address_in_block_if_available (frame_info_ptr this_frame,
}
symtab_and_line
-find_frame_sal (frame_info_ptr frame)
+find_frame_sal (const frame_info_ptr &frame)
{
frame_info_ptr next_frame;
int notcurrent;
@@ -2870,7 +2872,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 (const frame_info_ptr &fi)
{
return get_frame_id (fi).stack_addr;
}
@@ -2878,7 +2880,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 (const frame_info_ptr &fi)
{
if (get_frame_type (fi) != NORMAL_FRAME)
return 0;
@@ -2892,7 +2894,7 @@ get_frame_base_address (frame_info_ptr fi)
}
CORE_ADDR
-get_frame_locals_address (frame_info_ptr fi)
+get_frame_locals_address (const frame_info_ptr &fi)
{
if (get_frame_type (fi) != NORMAL_FRAME)
return 0;
@@ -2907,7 +2909,7 @@ get_frame_locals_address (frame_info_ptr fi)
}
CORE_ADDR
-get_frame_args_address (frame_info_ptr fi)
+get_frame_args_address (const frame_info_ptr &fi)
{
if (get_frame_type (fi) != NORMAL_FRAME)
return 0;
@@ -2925,7 +2927,7 @@ get_frame_args_address (frame_info_ptr fi)
otherwise. */
bool
-frame_unwinder_is (frame_info_ptr fi, const frame_unwind *unwinder)
+frame_unwinder_is (const frame_info_ptr &fi, const frame_unwind *unwinder)
{
if (fi->unwind == nullptr)
frame_unwind_find_by_frame (fi, &fi->prologue_cache);
@@ -2937,7 +2939,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 (const frame_info_ptr &fi)
{
if (fi == NULL)
return -1;
@@ -2946,7 +2948,7 @@ frame_relative_level (frame_info_ptr fi)
}
enum frame_type
-get_frame_type (frame_info_ptr frame)
+get_frame_type (const frame_info_ptr &frame)
{
if (frame->unwind == NULL)
/* Initialize the frame's unwinder because that's what
@@ -2956,13 +2958,13 @@ get_frame_type (frame_info_ptr frame)
}
struct program_space *
-get_frame_program_space (frame_info_ptr frame)
+get_frame_program_space (const frame_info_ptr &frame)
{
return frame->pspace;
}
struct program_space *
-frame_unwind_program_space (frame_info_ptr this_frame)
+frame_unwind_program_space (const frame_info_ptr &this_frame)
{
gdb_assert (this_frame);
@@ -2973,7 +2975,7 @@ frame_unwind_program_space (frame_info_ptr this_frame)
}
const address_space *
-get_frame_address_space (frame_info_ptr frame)
+get_frame_address_space (const frame_info_ptr &frame)
{
return frame->aspace;
}
@@ -2981,14 +2983,14 @@ get_frame_address_space (frame_info_ptr frame)
/* Memory access methods. */
void
-get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
+get_frame_memory (const frame_info_ptr &this_frame, CORE_ADDR addr,
gdb::array_view<gdb_byte> buffer)
{
read_memory (addr, buffer.data (), buffer.size ());
}
LONGEST
-get_frame_memory_signed (frame_info_ptr this_frame, CORE_ADDR addr,
+get_frame_memory_signed (const frame_info_ptr &this_frame, CORE_ADDR addr,
int len)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2998,7 +3000,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 (const frame_info_ptr &this_frame, CORE_ADDR addr,
int len)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3008,7 +3010,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 (const frame_info_ptr &this_frame,
CORE_ADDR addr, gdb::array_view<gdb_byte> buffer)
{
/* NOTE: target_read_memory returns zero on success! */
@@ -3018,13 +3020,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 (const frame_info_ptr &this_frame)
{
return frame_unwind_arch (frame_info_ptr (this_frame->next));
}
struct gdbarch *
-frame_unwind_arch (frame_info_ptr next_frame)
+frame_unwind_arch (const frame_info_ptr &next_frame)
{
if (!next_frame->prev_arch.p)
{
@@ -3050,14 +3052,14 @@ frame_unwind_arch (frame_info_ptr next_frame)
}
struct gdbarch *
-frame_unwind_caller_arch (frame_info_ptr next_frame)
+frame_unwind_caller_arch (const frame_info_ptr &initial_next_frame)
{
- next_frame = skip_artificial_frames (next_frame);
+ frame_info_ptr next_frame = skip_artificial_frames (initial_next_frame);
/* We must have a non-artificial frame. The caller is supposed to check
the result of frame_unwind_caller_id (), which returns NULL_FRAME_ID
in this case. */
- gdb_assert (next_frame != NULL);
+ gdb_assert (next_frame != nullptr);
return frame_unwind_arch (next_frame);
}
@@ -3065,7 +3067,7 @@ frame_unwind_caller_arch (frame_info_ptr next_frame)
/* Gets the language of FRAME. */
enum language
-get_frame_language (frame_info_ptr frame)
+get_frame_language (const frame_info_ptr &frame)
{
CORE_ADDR pc = 0;
bool pc_p = false;
@@ -3106,7 +3108,7 @@ get_frame_language (frame_info_ptr frame)
/* Stack pointer methods. */
CORE_ADDR
-get_frame_sp (frame_info_ptr this_frame)
+get_frame_sp (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3118,9 +3120,9 @@ get_frame_sp (frame_info_ptr this_frame)
/* See frame.h. */
frame_info_ptr
-frame_follow_static_link (frame_info_ptr frame)
+frame_follow_static_link (const frame_info_ptr &initial_frame)
{
- const block *frame_block = get_frame_block (frame, nullptr);
+ const block *frame_block = get_frame_block (initial_frame, nullptr);
if (frame_block == nullptr)
return {};
@@ -3132,11 +3134,12 @@ frame_follow_static_link (frame_info_ptr frame)
CORE_ADDR upper_frame_base;
- if (!dwarf2_evaluate_property (static_link, frame, NULL, &upper_frame_base))
+ if (!dwarf2_evaluate_property (static_link, initial_frame, NULL, &upper_frame_base))
return {};
/* Now climb up the stack frame until we reach the frame we are interested
in. */
+ frame_info_ptr frame = initial_frame;
for (; frame != nullptr; frame = get_prev_frame (frame))
{
struct symbol *framefunc = get_frame_function (frame);
@@ -3163,7 +3166,7 @@ frame_follow_static_link (frame_info_ptr frame)
/* 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 (const frame_info_ptr &frame)
{
/* Fill-in STOP_REASON. */
get_prev_frame_always (frame);
@@ -3190,7 +3193,7 @@ unwind_stop_reason_to_string (enum unwind_stop_reason reason)
}
const char *
-frame_stop_reason_string (frame_info_ptr fi)
+frame_stop_reason_string (const frame_info_ptr &fi)
{
gdb_assert (fi->prev_p);
gdb_assert (fi->prev == NULL);
@@ -3225,7 +3228,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 (const frame_info_ptr &frame)
{
/* The sniffer should not allocate a prologue cache if it did not
match this frame. */
@@ -3255,7 +3258,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 (const frame_info_ptr &frame,
const struct frame_unwind *unwind)
{
gdb_assert (frame->unwind == NULL);
diff --git a/gdb/frame.h b/gdb/frame.h
index c3787d4649cf..e784c17b4807 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -450,7 +450,7 @@ extern void reinit_frame_cache (void);
extern frame_info_ptr get_selected_frame (const char *message = nullptr);
/* Select a specific frame. */
-extern void select_frame (frame_info_ptr);
+extern void select_frame (const frame_info_ptr &);
/* Save the frame ID and frame level of the selected frame in FRAME_ID
and FRAME_LEVEL, to be restored later with restore_selected_frame.
@@ -475,19 +475,19 @@ 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 (const frame_info_ptr &);
+extern frame_info_ptr get_next_frame (const frame_info_ptr &);
/* Like get_next_frame(), 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_ptr get_next_frame_sentinel_okay (const frame_info_ptr &);
/* 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_ptr get_prev_frame_always (const frame_info_ptr &);
/* Given a frame's ID, relocate the frame. Returns NULL if the frame
is not found. */
@@ -499,12 +499,12 @@ 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 (const frame_info_ptr &);
/* 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 (const frame_info_ptr &frame, CORE_ADDR *pc);
/* An address (not necessarily aligned to an instruction boundary)
that falls within THIS frame's code block.
@@ -519,32 +519,32 @@ 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 (const frame_info_ptr &this_frame);
/* 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 (const frame_info_ptr &this_frame,
CORE_ADDR *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 (const frame_info_ptr &);
/* 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 (const frame_info_ptr &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 (const frame_info_ptr &fi, CORE_ADDR *);
/* Closely related to the resume address, various symbol table
attributes that are determined by the PC. Note that for a normal
@@ -564,12 +564,12 @@ extern bool get_frame_func_if_available (frame_info_ptr fi, CORE_ADDR *);
find_frame_symtab(), find_frame_function(). Each will need to be
carefully considered to determine if the real intent was for it to
apply to the PC or the adjusted PC. */
-extern symtab_and_line find_frame_sal (frame_info_ptr frame);
+extern symtab_and_line find_frame_sal (const frame_info_ptr &frame);
/* Set the current source and line to the location given by frame
FRAME, if possible. */
-void set_current_sal_from_frame (frame_info_ptr);
+void set_current_sal_from_frame (const frame_info_ptr &);
/* Return the frame base (what ever that is) (DEPRECATED).
@@ -593,59 +593,59 @@ 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 (const frame_info_ptr &);
/* Return the per-frame unique identifier. 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_stack_frame_id (frame_info_ptr fi);
-extern struct frame_id frame_unwind_caller_id (frame_info_ptr next_frame);
+extern frame_id get_frame_id (const frame_info_ptr &fi);
+extern frame_id get_stack_frame_id (const frame_info_ptr &fi);
+extern frame_id frame_unwind_caller_id (const 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 (const frame_info_ptr &);
/* Assuming that a frame is `normal', return the base-address of the
local variables, or 0 if the information isn't available. NOTE:
This address is really only meaningful to the frame's high-level
debug info. Typically, the argument and locals share a single
base-address. */
-extern CORE_ADDR get_frame_locals_address (frame_info_ptr);
+extern CORE_ADDR get_frame_locals_address (const frame_info_ptr &);
/* Assuming that a frame is `normal', return the base-address of the
parameter list, or 0 if that information isn't available. NOTE:
This address is really only meaningful to the frame's high-level
debug info. Typically, the argument and locals share a single
base-address. */
-extern CORE_ADDR get_frame_args_address (frame_info_ptr);
+extern CORE_ADDR get_frame_args_address (const 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 (const frame_info_ptr &fi);
/* Return the frame's type. */
-extern enum frame_type get_frame_type (frame_info_ptr);
+extern enum frame_type get_frame_type (const frame_info_ptr &);
/* Return the frame's program space. */
-extern struct program_space *get_frame_program_space (frame_info_ptr);
+extern struct program_space *get_frame_program_space (const frame_info_ptr &);
/* Unwind THIS frame's program space from the NEXT frame. */
-extern struct program_space *frame_unwind_program_space (frame_info_ptr);
+extern struct program_space *frame_unwind_program_space (const frame_info_ptr &);
class address_space;
/* Return the frame's address space. */
-extern const address_space *get_frame_address_space (frame_info_ptr);
+extern const address_space *get_frame_address_space (const frame_info_ptr &);
/* A frame may have a "static link". That is, in some languages, a
nested function may have access to variables from the enclosing
block and frame. This function looks for a frame's static link.
If found, returns the corresponding frame; otherwise, returns a
null frame_info_ptr. */
-extern frame_info_ptr frame_follow_static_link (frame_info_ptr frame);
+extern frame_info_ptr frame_follow_static_link (const frame_info_ptr &frame);
/* For frames where we can not unwind further, describe why. */
@@ -665,7 +665,7 @@ 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 (const frame_info_ptr &);
/* Translate a reason code to an informative string. This converts the
generic stop reason codes into a generic string describing the code.
@@ -682,13 +682,13 @@ const char *unwind_stop_reason_to_string (enum unwind_stop_reason);
Should only be called for frames that don't have a previous frame. */
-const char *frame_stop_reason_string (frame_info_ptr);
+const char *frame_stop_reason_string (const frame_info_ptr &);
/* Unwind the stack frame so that the value of REGNUM, in the previous
(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 (const frame_info_ptr &frame, int regnum,
int *optimizedp, int *unavailablep,
enum lval_type *lvalp,
CORE_ADDR *addrp, int *realnump,
@@ -700,23 +700,23 @@ extern void frame_register_unwind (frame_info_ptr frame, int regnum,
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 (const frame_info_ptr &next_frame,
int regnum, gdb_byte *buf);
-extern void get_frame_register (frame_info_ptr frame,
+extern void get_frame_register (const frame_info_ptr &frame,
int regnum, gdb_byte *buf);
-struct value *frame_unwind_register_value (frame_info_ptr next_frame,
+struct value *frame_unwind_register_value (const frame_info_ptr &next_frame,
int regnum);
-struct value *get_frame_register_value (frame_info_ptr frame,
+struct value *get_frame_register_value (const frame_info_ptr &frame,
int regnum);
-extern LONGEST frame_unwind_register_signed (frame_info_ptr next_frame,
+extern LONGEST frame_unwind_register_signed (const frame_info_ptr &next_frame,
int regnum);
-extern LONGEST get_frame_register_signed (frame_info_ptr frame,
+extern LONGEST get_frame_register_signed (const frame_info_ptr &frame,
int regnum);
-extern ULONGEST frame_unwind_register_unsigned (frame_info_ptr next_frame,
- int regnum);
-extern ULONGEST get_frame_register_unsigned (frame_info_ptr frame,
+extern ULONGEST frame_unwind_register_unsigned
+ (const frame_info_ptr &next_frame, int regnum);
+extern ULONGEST get_frame_register_unsigned (const frame_info_ptr &frame,
int regnum);
/* Read a register from this, or unwind a register from the next
@@ -724,39 +724,39 @@ extern ULONGEST get_frame_register_unsigned (frame_info_ptr frame,
get_frame_register_value, that do not throw if the result is
optimized out or unavailable. */
-extern bool read_frame_register_unsigned (frame_info_ptr frame,
+extern bool read_frame_register_unsigned (const frame_info_ptr &frame,
int regnum, ULONGEST *val);
/* The reverse. Store a register value relative to NEXT_FRAME's previous frame.
Note: this call makes the frame's state undefined. The register and frame
caches must be flushed. */
-extern void put_frame_register (frame_info_ptr next_frame, int regnum,
+extern void put_frame_register (const frame_info_ptr &next_frame, int regnum,
gdb::array_view<const gdb_byte> buf);
/* Read LEN bytes from one or multiple registers starting with REGNUM in
NEXT_FRAME's previous 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 next_frame, int regnum,
- CORE_ADDR offset,
+extern bool get_frame_register_bytes (const frame_info_ptr &next_frame,
+ int regnum, CORE_ADDR offset,
gdb::array_view<gdb_byte> buffer,
int *optimizedp, int *unavailablep);
/* Write bytes from BUFFER to one or multiple registers starting with REGNUM
in NEXT_FRAME's previous frame, starting at OFFSET. */
-extern void put_frame_register_bytes (frame_info_ptr next_frame, int regnum,
- CORE_ADDR offset,
+extern void put_frame_register_bytes (const frame_info_ptr &next_frame,
+ int regnum, CORE_ADDR offset,
gdb::array_view<const gdb_byte> buffer);
/* Unwind the PC. Strictly speaking return the resume address of the
calling frame. For GDB, `pc' is the resume address and not a
specific register. */
-extern CORE_ADDR frame_unwind_caller_pc (frame_info_ptr frame);
+extern CORE_ADDR frame_unwind_caller_pc (const frame_info_ptr &next_frame);
/* Discard the specified frame. Restoring the registers to the state
of the caller. */
-extern void frame_pop (frame_info_ptr frame);
+extern void frame_pop (const frame_info_ptr &frame);
/* Return memory from the specified frame. A frame knows its thread /
LWP and hence can find its way down to a target. The assumption
@@ -771,26 +771,26 @@ extern void frame_pop (frame_info_ptr frame);
If architecture / memory changes are always separated by special
adaptor frames this should be ok. */
-extern void get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
+extern void get_frame_memory (const 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 (const frame_info_ptr &this_frame,
CORE_ADDR memaddr, int len);
-extern ULONGEST get_frame_memory_unsigned (frame_info_ptr this_frame,
+extern ULONGEST get_frame_memory_unsigned (const frame_info_ptr &this_frame,
CORE_ADDR memaddr, int 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 (const frame_info_ptr &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 gdbarch *get_frame_arch (const frame_info_ptr &this_frame);
/* Return the previous frame's architecture. */
-extern struct gdbarch *frame_unwind_arch (frame_info_ptr next_frame);
+extern gdbarch *frame_unwind_arch (const frame_info_ptr &next_frame);
/* Return the previous frame's architecture, skipping inline functions. */
-extern struct gdbarch *frame_unwind_caller_arch (frame_info_ptr frame);
+extern gdbarch *frame_unwind_caller_arch (const frame_info_ptr &next_frame);
/* Values for the source flag to be used in print_frame_info ().
@@ -830,9 +830,9 @@ extern void *frame_obstack_zalloc (unsigned long size);
class readonly_detached_regcache;
/* Create a regcache, and copy the frame's registers into it. */
std::unique_ptr<readonly_detached_regcache> frame_save_as_regcache
- (frame_info_ptr this_frame);
+ (const frame_info_ptr &this_frame);
-extern const struct block *get_frame_block (frame_info_ptr,
+extern const struct block *get_frame_block (const frame_info_ptr &,
CORE_ADDR *addr_in_block);
/* Return the `struct block' that belongs to the selected thread's
@@ -863,7 +863,7 @@ 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 (const frame_info_ptr &);
extern CORE_ADDR get_pc_function_start (CORE_ADDR);
@@ -873,22 +873,22 @@ extern frame_info_ptr find_relative_frame (frame_info_ptr, int *);
the function call. */
extern void print_stack_frame_to_uiout (struct ui_out *uiout,
- frame_info_ptr, int print_level,
+ const frame_info_ptr &, int print_level,
enum print_what print_what,
int set_current_sal);
-extern void print_stack_frame (frame_info_ptr, int print_level,
+extern void print_stack_frame (const frame_info_ptr &, int print_level,
enum print_what print_what,
int set_current_sal);
extern void print_frame_info (const frame_print_options &fp_opts,
- frame_info_ptr, int print_level,
+ const frame_info_ptr &, int print_level,
enum print_what print_what, int args,
int set_current_sal);
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 (const frame_info_ptr &frame, int regnum,
gdb_byte *buf);
/* From stack.c. */
@@ -960,10 +960,10 @@ struct frame_arg
};
extern void read_frame_arg (const frame_print_options &fp_opts,
- symbol *sym, frame_info_ptr frame,
+ symbol *sym, const frame_info_ptr &frame,
struct frame_arg *argp,
struct frame_arg *entryargp);
-extern void read_frame_local (struct symbol *sym, frame_info_ptr frame,
+extern void read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
struct frame_arg *argp);
extern void info_args_command (const char *, int);
@@ -976,13 +976,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 (const frame_info_ptr &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 (const frame_info_ptr &frame);
/* Notes (cagney/2002-11-27, drow/2003-09-06):
@@ -1023,22 +1023,22 @@ 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 (const frame_info_ptr &fi, const frame_unwind *unwinder);
/* Return the language of FRAME. */
-extern enum language get_frame_language (frame_info_ptr frame);
+extern enum language get_frame_language (const frame_info_ptr &frame);
/* Return the first non-tailcall frame above FRAME or FRAME if it is not a
tailcall frame. Return NULL if FRAME is the start of a tailcall-only
chain. */
-extern frame_info_ptr skip_tailcall_frames (frame_info_ptr frame);
+extern frame_info_ptr skip_tailcall_frames (const frame_info_ptr &frame);
/* Return the first frame above FRAME or FRAME of which the code is
writable. */
-extern frame_info_ptr skip_unwritable_frames (frame_info_ptr frame);
+extern frame_info_ptr skip_unwritable_frames (const frame_info_ptr &frame);
/* Data for the "set backtrace" settings. */
@@ -1070,11 +1070,11 @@ 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 (const frame_info_ptr &frame);
/* Get whether the PC value is masked for the given frame. */
-extern bool get_frame_pc_masked (frame_info_ptr frame);
+extern bool get_frame_pc_masked (const frame_info_ptr &frame);
#endif /* !defined (FRAME_H) */
diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
index e02d3390a33d..5160c3b0c1d6 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 1994dd782ad5..bcb2c621945b 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -510,7 +510,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,
+ const frame_info_ptr &this_frame,
struct frv_unwind_cache *info)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1084,7 +1084,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1367,7 +1367,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
struct frv_unwind_cache *info
@@ -1397,7 +1397,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct frv_unwind_cache *info
@@ -1416,7 +1416,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 (const frame_info_ptr &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 069d40f56fb2..60cd2c974a12 100644
--- a/gdb/ft32-tdep.c
+++ b/gdb/ft32-tdep.c
@@ -450,7 +450,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct ft32_frame_cache *cache;
CORE_ADDR current_pc;
@@ -490,7 +490,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
@@ -506,7 +506,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
@@ -538,7 +538,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
this_cache);
diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
index 7a57bdcebe23..13dd0ed5d5e1 100644
--- a/gdb/gdbarch-gen.h
+++ b/gdb/gdbarch-gen.h
@@ -196,8 +196,8 @@ extern void set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch, gdbarch_p
extern bool gdbarch_pseudo_register_read_value_p (struct gdbarch *gdbarch);
-typedef struct value * (gdbarch_pseudo_register_read_value_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum);
-extern struct value * gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum);
+typedef struct value * (gdbarch_pseudo_register_read_value_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum);
+extern struct value * gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum);
extern void set_gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, gdbarch_pseudo_register_read_value_ftype *pseudo_register_read_value);
/* Write bytes in BUF to pseudo register with number PSEUDO_REG_NUM.
@@ -207,8 +207,8 @@ extern void set_gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, gdb
extern bool gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch);
-typedef void (gdbarch_pseudo_register_write_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
-extern void gdbarch_pseudo_register_write (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
+typedef void (gdbarch_pseudo_register_write_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
+extern void gdbarch_pseudo_register_write (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
extern void set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch, gdbarch_pseudo_register_write_ftype *pseudo_register_write);
/* Write bytes to a pseudo register.
@@ -335,8 +335,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, const frame_info_ptr &this_frame);
+extern struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &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
@@ -362,22 +362,22 @@ extern void set_gdbarch_push_dummy_code (struct gdbarch *gdbarch, gdbarch_push_d
/* Return true if the code of FRAME is writable. */
-typedef int (gdbarch_code_of_frame_writable_ftype) (struct gdbarch *gdbarch, frame_info_ptr frame);
-extern int gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame);
+typedef int (gdbarch_code_of_frame_writable_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &frame);
+extern int gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame);
extern void set_gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, gdbarch_code_of_frame_writable_ftype *code_of_frame_writable);
-typedef void (gdbarch_print_registers_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all);
-extern void gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all);
+typedef void (gdbarch_print_registers_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all);
+extern void gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all);
extern void set_gdbarch_print_registers_info (struct gdbarch *gdbarch, gdbarch_print_registers_info_ftype *print_registers_info);
-typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
-extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
+typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
+extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
extern void set_gdbarch_print_float_info (struct gdbarch *gdbarch, gdbarch_print_float_info_ftype *print_float_info);
extern bool gdbarch_print_vector_info_p (struct gdbarch *gdbarch);
-typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
-extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
+typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
+extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
extern void set_gdbarch_print_vector_info (struct gdbarch *gdbarch, gdbarch_print_vector_info_ftype *print_vector_info);
/* MAP a GDB RAW register number onto a simulator register number. See
@@ -402,8 +402,8 @@ extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_
extern bool gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch);
-typedef int (gdbarch_get_longjmp_target_ftype) (frame_info_ptr frame, CORE_ADDR *pc);
-extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR *pc);
+typedef int (gdbarch_get_longjmp_target_ftype) (const frame_info_ptr &frame, CORE_ADDR *pc);
+extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR *pc);
extern void set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype *get_longjmp_target);
extern int gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch);
@@ -413,12 +413,12 @@ 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) (const 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, const frame_info_ptr &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);
-extern void gdbarch_value_to_register (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, const gdb_byte *buf);
+typedef void (gdbarch_value_to_register_ftype) (const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf);
+extern void gdbarch_value_to_register (struct gdbarch *gdbarch, const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf);
extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_value_to_register_ftype *value_to_register);
/* Construct a value representing the contents of register REGNUM in
@@ -484,8 +484,8 @@ extern void set_gdbarch_return_value_as_value (struct gdbarch *gdbarch, gdbarch_
May return 0 when unable to determine that address. */
-typedef CORE_ADDR (gdbarch_get_return_buf_addr_ftype) (struct type *val_type, frame_info_ptr cur_frame);
-extern CORE_ADDR gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, frame_info_ptr cur_frame);
+typedef CORE_ADDR (gdbarch_get_return_buf_addr_ftype) (struct type *val_type, const frame_info_ptr &cur_frame);
+extern CORE_ADDR gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, const frame_info_ptr &cur_frame);
extern void set_gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, gdbarch_get_return_buf_addr_ftype *get_return_buf_addr);
/* Return true if the typedef record needs to be replaced.".
@@ -635,12 +635,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, const frame_info_ptr &next_frame);
+extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, const frame_info_ptr &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, const frame_info_ptr &next_frame);
+extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, const frame_info_ptr &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
@@ -648,8 +648,8 @@ extern void set_gdbarch_unwind_sp (struct gdbarch *gdbarch, gdbarch_unwind_sp_ft
extern bool gdbarch_frame_num_args_p (struct gdbarch *gdbarch);
-typedef int (gdbarch_frame_num_args_ftype) (frame_info_ptr frame);
-extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, frame_info_ptr frame);
+typedef int (gdbarch_frame_num_args_ftype) (const frame_info_ptr &frame);
+extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, const frame_info_ptr &frame);
extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
extern bool gdbarch_frame_align_p (struct gdbarch *gdbarch);
@@ -768,8 +768,8 @@ extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_s
extern bool gdbarch_single_step_through_delay_p (struct gdbarch *gdbarch);
-typedef int (gdbarch_single_step_through_delay_ftype) (struct gdbarch *gdbarch, frame_info_ptr frame);
-extern int gdbarch_single_step_through_delay (struct gdbarch *gdbarch, frame_info_ptr frame);
+typedef int (gdbarch_single_step_through_delay_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &frame);
+extern int gdbarch_single_step_through_delay (struct gdbarch *gdbarch, const frame_info_ptr &frame);
extern void set_gdbarch_single_step_through_delay (struct gdbarch *gdbarch, gdbarch_single_step_through_delay_ftype *single_step_through_delay);
/* FIXME: cagney/2003-08-28: Need to find a better way of selecting the
@@ -779,8 +779,8 @@ typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, struct disassemble_info *in
extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, struct disassemble_info *info);
extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
-typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (frame_info_ptr frame, CORE_ADDR pc);
-extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc);
+typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (const frame_info_ptr &frame, CORE_ADDR pc);
+extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc);
extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code);
/* Vtable of solib operations functions. */
@@ -927,8 +927,8 @@ extern void set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch, gdbarch_re
extern bool gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
-typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (frame_info_ptr frame, int argi, struct type *type);
-extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, frame_info_ptr frame, int argi, struct type *type);
+typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (const frame_info_ptr &frame, int argi, struct type *type);
+extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type);
extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
/* Iterate over all supported register notes in a core file. For each
@@ -1732,8 +1732,8 @@ extern void set_gdbarch_type_align (struct gdbarch *gdbarch, gdbarch_type_align_
/* Return a string containing any flags for the given PC in the given FRAME. */
-typedef std::string (gdbarch_get_pc_address_flags_ftype) (frame_info_ptr frame, CORE_ADDR pc);
-extern std::string gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc);
+typedef std::string (gdbarch_get_pc_address_flags_ftype) (const frame_info_ptr &frame, CORE_ADDR pc);
+extern std::string gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc);
extern void set_gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, gdbarch_get_pc_address_flags_ftype *get_pc_address_flags);
/* Read core file mappings */
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index b9be3948d1ee..80a04bf0caf8 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -1894,7 +1894,7 @@ gdbarch_pseudo_register_read_value_p (struct gdbarch *gdbarch)
}
struct value *
-gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum)
+gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->pseudo_register_read_value != NULL);
@@ -1918,7 +1918,7 @@ gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch)
}
void
-gdbarch_pseudo_register_write (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
+gdbarch_pseudo_register_write (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->pseudo_register_write != NULL);
@@ -2240,7 +2240,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, const frame_info_ptr &this_frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->dummy_id != NULL);
@@ -2339,7 +2339,7 @@ set_gdbarch_push_dummy_code (struct gdbarch *gdbarch,
}
int
-gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame)
+gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->code_of_frame_writable != NULL);
@@ -2356,7 +2356,7 @@ set_gdbarch_code_of_frame_writable (struct gdbarch *gdbarch,
}
void
-gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all)
+gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->print_registers_info != NULL);
@@ -2373,7 +2373,7 @@ set_gdbarch_print_registers_info (struct gdbarch *gdbarch,
}
void
-gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args)
+gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->print_float_info != NULL);
@@ -2397,7 +2397,7 @@ gdbarch_print_vector_info_p (struct gdbarch *gdbarch)
}
void
-gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args)
+gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->print_vector_info != NULL);
@@ -2472,7 +2472,7 @@ gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch)
}
int
-gdbarch_get_longjmp_target (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR *pc)
+gdbarch_get_longjmp_target (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->get_longjmp_target != NULL);
@@ -2523,7 +2523,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, const frame_info_ptr &frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->register_to_value != NULL);
@@ -2540,7 +2540,7 @@ set_gdbarch_register_to_value (struct gdbarch *gdbarch,
}
void
-gdbarch_value_to_register (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, const gdb_byte *buf)
+gdbarch_value_to_register (struct gdbarch *gdbarch, const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->value_to_register != NULL);
@@ -2656,7 +2656,7 @@ set_gdbarch_return_value_as_value (struct gdbarch *gdbarch,
}
CORE_ADDR
-gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, frame_info_ptr cur_frame)
+gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, const frame_info_ptr &cur_frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->get_return_buf_addr != NULL);
@@ -3048,7 +3048,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, const frame_info_ptr &next_frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->unwind_pc != NULL);
@@ -3065,7 +3065,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, const frame_info_ptr &next_frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->unwind_sp != NULL);
@@ -3089,7 +3089,7 @@ gdbarch_frame_num_args_p (struct gdbarch *gdbarch)
}
int
-gdbarch_frame_num_args (struct gdbarch *gdbarch, frame_info_ptr frame)
+gdbarch_frame_num_args (struct gdbarch *gdbarch, const frame_info_ptr &frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->frame_num_args != NULL);
@@ -3348,7 +3348,7 @@ gdbarch_single_step_through_delay_p (struct gdbarch *gdbarch)
}
int
-gdbarch_single_step_through_delay (struct gdbarch *gdbarch, frame_info_ptr frame)
+gdbarch_single_step_through_delay (struct gdbarch *gdbarch, const frame_info_ptr &frame)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->single_step_through_delay != NULL);
@@ -3382,7 +3382,7 @@ set_gdbarch_print_insn (struct gdbarch *gdbarch,
}
CORE_ADDR
-gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc)
+gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->skip_trampoline_code != NULL);
@@ -3723,7 +3723,7 @@ gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch)
}
CORE_ADDR
-gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, frame_info_ptr frame, int argi, struct type *type)
+gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->fetch_pointer_argument != NULL);
@@ -5414,7 +5414,7 @@ set_gdbarch_type_align (struct gdbarch *gdbarch,
}
std::string
-gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc)
+gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc)
{
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->get_pc_address_flags != NULL);
diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
index d76b820c1b55..762d48a0187f 100644
--- a/gdb/gdbarch_components.py
+++ b/gdb/gdbarch_components.py
@@ -414,7 +414,7 @@ never be called.
""",
type="struct value *",
name="pseudo_register_read_value",
- params=[("frame_info_ptr", "next_frame"), ("int", "cookednum")],
+ params=[("const frame_info_ptr &", "next_frame"), ("int", "cookednum")],
predicate=True,
)
@@ -428,7 +428,7 @@ NEXT_FRAME.
type="void",
name="pseudo_register_write",
params=[
- ("frame_info_ptr", "next_frame"),
+ ("const frame_info_ptr &", "next_frame"),
("int", "pseudo_reg_num"),
("gdb::array_view<const gdb_byte>", "buf"),
],
@@ -628,7 +628,7 @@ frame.
""",
type="struct frame_id",
name="dummy_id",
- params=[("frame_info_ptr", "this_frame")],
+ params=[("const frame_info_ptr &", "this_frame")],
predefault="default_dummy_id",
invalid=False,
)
@@ -689,7 +689,7 @@ Return true if the code of FRAME is writable.
""",
type="int",
name="code_of_frame_writable",
- params=[("frame_info_ptr", "frame")],
+ params=[("const frame_info_ptr &", "frame")],
predefault="default_code_of_frame_writable",
invalid=False,
)
@@ -699,7 +699,7 @@ Method(
name="print_registers_info",
params=[
("struct ui_file *", "file"),
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("int", "regnum"),
("int", "all"),
],
@@ -712,7 +712,7 @@ Method(
name="print_float_info",
params=[
("struct ui_file *", "file"),
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("const char *", "args"),
],
predefault="default_print_float_info",
@@ -724,7 +724,7 @@ Method(
name="print_vector_info",
params=[
("struct ui_file *", "file"),
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("const char *", "args"),
],
predicate=True,
@@ -767,7 +767,7 @@ FRAME corresponds to the longjmp frame.
""",
type="int",
name="get_longjmp_target",
- params=[("frame_info_ptr", "frame"), ("CORE_ADDR *", "pc")],
+ params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR *", "pc")],
predicate=True,
)
@@ -789,7 +789,7 @@ Function(
type="int",
name="register_to_value",
params=[
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("int", "regnum"),
("struct type *", "type"),
("gdb_byte *", "buf"),
@@ -803,7 +803,7 @@ Function(
type="void",
name="value_to_register",
params=[
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("int", "regnum"),
("struct type *", "type"),
("const gdb_byte *", "buf"),
@@ -923,7 +923,7 @@ convention".
May return 0 when unable to determine that address.""",
type="CORE_ADDR",
name="get_return_buf_addr",
- params=[("struct type *", "val_type"), ("frame_info_ptr", "cur_frame")],
+ params=[("struct type *", "val_type"), ("const frame_info_ptr &", "cur_frame")],
predefault="default_get_return_buf_addr",
invalid=False,
)
@@ -1157,7 +1157,7 @@ Value(
Method(
type="CORE_ADDR",
name="unwind_pc",
- params=[("frame_info_ptr", "next_frame")],
+ params=[("const frame_info_ptr &", "next_frame")],
predefault="default_unwind_pc",
invalid=False,
)
@@ -1165,7 +1165,7 @@ Method(
Method(
type="CORE_ADDR",
name="unwind_sp",
- params=[("frame_info_ptr", "next_frame")],
+ params=[("const frame_info_ptr &", "next_frame")],
predefault="default_unwind_sp",
invalid=False,
)
@@ -1177,7 +1177,7 @@ frame-base. Enable frame-base before frame-unwind.
""",
type="int",
name="frame_num_args",
- params=[("frame_info_ptr", "frame")],
+ params=[("const frame_info_ptr &", "frame")],
predicate=True,
)
@@ -1357,7 +1357,7 @@ further single-step is needed before the instruction finishes.
""",
type="int",
name="single_step_through_delay",
- params=[("frame_info_ptr", "frame")],
+ params=[("const frame_info_ptr &", "frame")],
predicate=True,
)
@@ -1376,7 +1376,7 @@ disassembler. Perhaps objdump can handle it?
Function(
type="CORE_ADDR",
name="skip_trampoline_code",
- params=[("frame_info_ptr", "frame"), ("CORE_ADDR", "pc")],
+ params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR", "pc")],
predefault="generic_skip_trampoline_code",
invalid=False,
)
@@ -1596,7 +1596,7 @@ Fetch the pointer to the ith function argument.
type="CORE_ADDR",
name="fetch_pointer_argument",
params=[
- ("frame_info_ptr", "frame"),
+ ("const frame_info_ptr &", "frame"),
("int", "argi"),
("struct type *", "type"),
],
@@ -2744,7 +2744,7 @@ Return a string containing any flags for the given PC in the given FRAME.
""",
type="std::string",
name="get_pc_address_flags",
- params=[("frame_info_ptr", "frame"), ("CORE_ADDR", "pc")],
+ params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR", "pc")],
predefault="default_get_pc_address_flags",
invalid=False,
)
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
index faefe9259436..133bf28f6487 100644
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -1225,7 +1225,7 @@ gnuv3_get_type_from_type_info (struct value *type_info_ptr)
of the routine we are thunking to and continue to there instead. */
static CORE_ADDR
-gnuv3_skip_trampoline (frame_info_ptr frame, CORE_ADDR stop_pc)
+gnuv3_skip_trampoline (const frame_info_ptr &frame, CORE_ADDR stop_pc)
{
CORE_ADDR real_stop_pc, method_stop_pc, func_addr;
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
index da5b10517ada..36cbd9d4aa60 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct h8300_frame_cache *cache = h8300_frame_cache (this_frame, this_cache);
return cache->base;
@@ -991,7 +991,7 @@ h8300sx_register_name (struct gdbarch *gdbarch, int regno)
static void
h8300_print_register (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, int regno)
+ const frame_info_ptr &frame, int regno)
{
LONGEST rval;
const char *name = gdbarch_register_name (gdbarch, regno);
@@ -1068,7 +1068,7 @@ h8300_print_register (struct gdbarch *gdbarch, struct ui_file *file,
static void
h8300_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, int regno, int cpregs)
+ const frame_info_ptr &frame, int regno, int cpregs)
{
if (regno < 0)
{
diff --git a/gdb/hppa-bsd-tdep.c b/gdb/hppa-bsd-tdep.c
index 78e3f3eb6727..b1df3d17aa4d 100644
--- a/gdb/hppa-bsd-tdep.c
+++ b/gdb/hppa-bsd-tdep.c
@@ -104,7 +104,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)
+ const frame_info_ptr &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 4f94b4168107..db0c36801316 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 f6995e77b2af..ccf32c790906 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,
+ const frame_info_ptr &,
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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 32e46b831cbc..ab7dd56a240d 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1829,7 +1829,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -1850,7 +1850,7 @@ struct hppa_frame_cache
};
static struct hppa_frame_cache *
-hppa_frame_cache (frame_info_ptr this_frame, void **this_cache)
+hppa_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2251,7 +2251,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct hppa_frame_cache *info;
@@ -2264,7 +2264,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct hppa_frame_cache *info = hppa_frame_cache (this_frame, this_cache);
@@ -2275,7 +2275,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
if (hppa_find_unwind_entry_in_block (this_frame))
return 1;
@@ -2303,7 +2303,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2376,7 +2376,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct hppa_frame_cache *info =
@@ -2386,7 +2386,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct hppa_frame_cache *info
@@ -2415,7 +2415,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct hppa_stub_unwind_cache *info;
@@ -2436,7 +2436,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -2448,7 +2448,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct hppa_stub_unwind_cache *info
@@ -2463,7 +2463,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -2489,7 +2489,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, const frame_info_ptr &next_frame)
{
ULONGEST ipsw;
CORE_ADDR pc;
@@ -2675,7 +2675,7 @@ hppa_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
/* Get the ARGIth function argument for the current function. */
static CORE_ADDR
-hppa_fetch_pointer_argument (frame_info_ptr frame, int argi,
+hppa_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
struct type *type)
{
return get_frame_register_unsigned (frame, HPPA_R0_REGNUM + 26 - argi);
@@ -2706,7 +2706,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 (const frame_info_ptr &this_frame,
trad_frame_saved_reg saved_regs[],
int regnum)
{
@@ -2884,7 +2884,7 @@ hppa_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc)
systems: $$dyncall, import stubs and PLT stubs. */
CORE_ADDR
-hppa_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+hppa_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
struct type *func_ptr_type = builtin_type (gdbarch)->builtin_func_ptr;
diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h
index 2372dd6dd12d..0f706536cc9d 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) (const frame_info_ptr &this_frame, CORE_ADDR base,
trad_frame_saved_reg *saved_regs) = nullptr;
/* These are solib-dependent methods. They are really HPUX only, but
@@ -201,17 +201,17 @@ 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 (const frame_info_ptr &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);
+ const frame_info_ptr &next_frame);
extern int hppa_in_solib_call_trampoline (struct gdbarch *gdbarch,
CORE_ADDR pc);
-extern CORE_ADDR hppa_skip_trampoline_code (frame_info_ptr, CORE_ADDR pc);
+extern CORE_ADDR hppa_skip_trampoline_code (const frame_info_ptr &, CORE_ADDR pc);
#endif /* hppa-tdep.h */
diff --git a/gdb/i386-bsd-tdep.c b/gdb/i386-bsd-tdep.c
index eb20bc6e2b54..8470f2b6d2f9 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 (const frame_info_ptr &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 8da6b4df2b78..fc0a3dd3909e 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 (const frame_info_ptr &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)
+ const frame_info_ptr &this_frame)
{
return i386_sigtramp_p (this_frame);
}
diff --git a/gdb/i386-darwin-tdep.h b/gdb/i386-darwin-tdep.h
index 8f955f6828b7..0b867fab94c1 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 *, const frame_info_ptr &);
#endif /* I386_DARWIN_TDEP_H */
diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
index ea1db3abd6ba..2b9ef77e5e6d 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,
+ const frame_info_ptr &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 9ff471475131..aa1898693b61 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 996dda0077f8..a2f937690c2e 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
+ const frame_info_ptr &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 (const frame_info_ptr &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 270413e59d87..9596435e9d10 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,
+ const frame_info_ptr &,
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,
+ const frame_info_ptr &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 5e959df4df36..f4bb70cc5a08 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 (const frame_info_ptr &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 (const frame_info_ptr &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 38ba280e4056..e1480ec6cc41 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
ULONGEST cs;
diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c
index ae4e2946789c..bc8df378219d 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 (const frame_info_ptr &this_frame)
{
CORE_ADDR sp, ucontext_addr;
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index d8691f038454..b487a3f74788 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
@@ -2230,7 +2230,7 @@ i386_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static int
i386_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache, bool override_p)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2263,7 +2263,7 @@ i386_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
static int
i386_epilogue_override_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
return i386_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
@@ -2272,7 +2272,7 @@ i386_epilogue_override_frame_sniffer (const struct frame_unwind *self,
static int
i386_epilogue_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
return i386_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
@@ -2280,7 +2280,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct i386_frame_cache *cache;
CORE_ADDR sp;
@@ -2315,7 +2315,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct i386_frame_cache *cache =
@@ -2328,7 +2328,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -2342,7 +2342,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
/* Make sure we've initialized the cache. */
@@ -2435,7 +2435,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
if (frame_relative_level (this_frame) == 0)
@@ -2475,7 +2475,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
@@ -2524,7 +2524,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct i386_frame_cache *cache =
@@ -2537,7 +2537,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct i386_frame_cache *cache =
@@ -2553,7 +2553,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
/* Make sure we've initialized the cache. */
@@ -2564,7 +2564,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
gdbarch *arch = get_frame_arch (this_frame);
@@ -2606,7 +2606,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
@@ -2622,7 +2622,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, const frame_info_ptr &this_frame)
{
CORE_ADDR fp;
@@ -2649,7 +2649,7 @@ i386_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
success. */
static int
-i386_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+i386_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_byte buf[4];
CORE_ADDR sp, jb_addr;
@@ -3395,7 +3395,7 @@ i386_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
the MMX registers need to be mapped onto floating point registers. */
static int
-i386_mmx_regnum_to_fp_regnum (frame_info_ptr next_frame, int regnum)
+i386_mmx_regnum_to_fp_regnum (const frame_info_ptr &next_frame, int regnum)
{
gdbarch *arch = frame_unwind_arch (next_frame);
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (arch);
@@ -3413,7 +3413,7 @@ i386_mmx_regnum_to_fp_regnum (frame_info_ptr next_frame, int regnum)
the data into an already-allocated value. */
value *
-i386_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
+i386_pseudo_register_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num)
{
if (i386_mmx_regnum_p (gdbarch, pseudo_reg_num))
@@ -3517,7 +3517,7 @@ i386_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
}
void
-i386_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
+i386_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
const int pseudo_reg_num,
gdb::array_view<const gdb_byte> buf)
{
@@ -3750,7 +3750,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 (const frame_info_ptr &frame, int regnum,
struct type *type, gdb_byte *to,
int *optimizedp, int *unavailablep)
{
@@ -3790,7 +3790,7 @@ i386_register_to_value (frame_info_ptr frame, int regnum,
REGNUM in frame FRAME. */
static void
-i386_value_to_register (frame_info_ptr frame, int regnum,
+i386_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *type, const gdb_byte *from)
{
int len = type->length ();
@@ -3944,7 +3944,7 @@ i386_iterate_over_regset_sections (struct gdbarch *gdbarch,
/* Stuff for WIN32 PE style DLL's but is pretty generic really. */
CORE_ADDR
-i386_pe_skip_trampoline_code (frame_info_ptr frame,
+i386_pe_skip_trampoline_code (const frame_info_ptr &frame,
CORE_ADDR pc, char *name)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -3975,7 +3975,7 @@ i386_pe_skip_trampoline_code (frame_info_ptr frame,
routine. */
int
-i386_sigtramp_p (frame_info_ptr this_frame)
+i386_sigtramp_p (const frame_info_ptr &this_frame)
{
CORE_ADDR pc = get_frame_pc (this_frame);
const char *name;
@@ -4011,7 +4011,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR pc = get_frame_pc (this_frame);
const char *name;
@@ -4026,7 +4026,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 (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -4582,7 +4582,7 @@ i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
/* Get the ARGIth function argument for the current function. */
static CORE_ADDR
-i386_fetch_pointer_argument (frame_info_ptr frame, int argi,
+i386_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
struct type *type)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index e7699f0f1894..a85e0a984a0f 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -227,10 +227,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) (const frame_info_ptr &) = nullptr;
/* Get address of sigcontext for sigtramp. */
- CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
+ CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
/* Offset of registers in `struct sigcontext'. */
int *sc_reg_offset = 0;
@@ -377,11 +377,11 @@ extern struct type *i386_pseudo_register_type (struct gdbarch *gdbarch,
int regnum);
extern value *i386_pseudo_register_read_value (gdbarch *gdbarch,
- frame_info_ptr next_frame,
+ const frame_info_ptr &next_frame,
int regnum);
extern void i386_pseudo_register_write (gdbarch *gdbarch,
- frame_info_ptr next_frame, int regnum,
+ const frame_info_ptr &next_frame, int regnum,
gdb::array_view<const gdb_byte> buf);
extern int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
@@ -398,7 +398,7 @@ extern int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
#define I386_MAX_INSN_LEN (16)
/* Functions exported from i386-tdep.c. */
-extern CORE_ADDR i386_pe_skip_trampoline_code (frame_info_ptr frame,
+extern CORE_ADDR i386_pe_skip_trampoline_code (const frame_info_ptr &frame,
CORE_ADDR pc, char *name);
extern CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch,
CORE_ADDR pc);
@@ -417,7 +417,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 (const frame_info_ptr &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/i386-windows-tdep.c b/gdb/i386-windows-tdep.c
index f1cc10fe3c55..cd5c580a3e8d 100644
--- a/gdb/i386-windows-tdep.c
+++ b/gdb/i386-windows-tdep.c
@@ -90,7 +90,7 @@ static int i386_windows_gregset_reg_offset[] =
#define I386_WINDOWS_SIZEOF_GREGSET 716
static CORE_ADDR
-i386_windows_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+i386_windows_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
return i386_pe_skip_trampoline_code (frame, pc, NULL);
}
diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
index d73e3ba40ae1..3d979e279a1e 100644
--- a/gdb/i387-tdep.c
+++ b/gdb/i387-tdep.c
@@ -202,7 +202,7 @@ print_i387_control_word (int control_p,
void
i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, const char *args)
+ const frame_info_ptr &frame, const char *args)
{
i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
ULONGEST fctrl;
@@ -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 (const frame_info_ptr &frame, int regnum,
struct type *type, gdb_byte *to,
int *optimizedp, int *unavailablep)
{
@@ -380,7 +380,7 @@ i387_register_to_value (frame_info_ptr frame, int regnum,
REGNUM in frame FRAME. */
void
-i387_value_to_register (frame_info_ptr frame, int regnum,
+i387_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *type, const gdb_byte *from)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/i387-tdep.h b/gdb/i387-tdep.h
index aa1cce7d9523..30d769478a6c 100644
--- a/gdb/i387-tdep.h
+++ b/gdb/i387-tdep.h
@@ -90,7 +90,7 @@ struct x86_xsave_layout;
extern void i387_print_float_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
const char *args);
/* Return nonzero if a value of type TYPE stored in register REGNUM
@@ -102,14 +102,14 @@ 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 (const frame_info_ptr &frame, int regnum,
struct type *type, gdb_byte *to,
int *optimizedp, int *unavailablep);
/* Write the contents FROM of a value of type TYPE into register
REGNUM in frame FRAME. */
-extern void i387_value_to_register (frame_info_ptr frame, int regnum,
+extern void i387_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *type, const gdb_byte *from);
\f
diff --git a/gdb/ia64-libunwind-tdep.c b/gdb/ia64-libunwind-tdep.c
index a61e90fc5bea..24a5162cdc65 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 (const frame_info_ptr &this_frame, void **this_cache)
{
unw_accessors_t *acc;
unw_addr_space_t as;
@@ -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)
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
unw_cursor_t cursor;
diff --git a/gdb/ia64-libunwind-tdep.h b/gdb/ia64-libunwind-tdep.h
index e490e839fc27..4f064bfc333f 100644
--- a/gdb/ia64-libunwind-tdep.h
+++ b/gdb/ia64-libunwind-tdep.h
@@ -48,19 +48,19 @@ struct libunwind_descr
};
int libunwind_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_cache);
int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum);
void libunwind_frame_dealloc_cache (frame_info_ptr self, void *cache);
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index afff210986ba..88f67ccf0962 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -1219,7 +1219,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 (const frame_info_ptr &frame, int regnum,
struct type *valtype, gdb_byte *out,
int *optimizedp, int *unavailablep)
{
@@ -1239,7 +1239,7 @@ ia64_register_to_value (frame_info_ptr frame, int regnum,
}
static void
-ia64_value_to_register (frame_info_ptr frame, int regnum,
+ia64_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *valtype, const gdb_byte *in)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1361,7 +1361,7 @@ ia64_alloc_frame_cache (void)
static CORE_ADDR
examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
struct ia64_frame_cache *cache)
{
CORE_ADDR next_pc;
@@ -1842,7 +1842,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -1887,7 +1887,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1908,7 +1908,7 @@ ia64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
}
static struct value *
-ia64_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
+ia64_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2176,7 +2176,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 (const frame_info_ptr &this_frame,
struct ia64_frame_cache *cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2230,7 +2230,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2261,7 +2261,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2282,7 +2282,7 @@ ia64_sigtramp_frame_this_id (frame_info_ptr this_frame,
}
static struct value *
-ia64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
+ia64_sigtramp_frame_prev_register (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct ia64_frame_cache *cache =
@@ -2335,7 +2335,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
gdbarch *arch = get_frame_arch (this_frame);
@@ -2365,7 +2365,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct ia64_frame_cache *cache = ia64_frame_cache (this_frame, this_cache);
@@ -2541,7 +2541,7 @@ ia64_access_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum,
unw_fpreg_t *val, int write, void *arg)
{
int regnum = ia64_uw2gdb_regnum (uw_regnum);
- frame_info_ptr this_frame = (frame_info_ptr) arg;
+ frame_info_ptr this_frame = (const frame_info_ptr &) arg;
/* We never call any libunwind routines that need to write registers. */
gdb_assert (!write);
@@ -2894,7 +2894,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2928,7 +2928,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
int reg = regnum;
@@ -3001,7 +3001,7 @@ ia64_libunwind_frame_prev_register (frame_info_ptr this_frame,
static int
ia64_libunwind_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
if (libunwind_is_initialized ()
@@ -3024,7 +3024,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -3060,7 +3060,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3087,7 +3087,7 @@ ia64_libunwind_sigtramp_frame_prev_register (frame_info_ptr this_frame,
static int
ia64_libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
if (libunwind_is_initialized ())
@@ -3864,7 +3864,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, const frame_info_ptr &this_frame)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
gdb_byte buf[8];
@@ -3886,7 +3886,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, const frame_info_ptr &next_frame)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
gdb_byte buf[8];
@@ -3911,7 +3911,7 @@ ia64_print_insn (bfd_vma memaddr, struct disassemble_info *info)
/* The default "size_of_register_frame" gdbarch_tdep routine for ia64. */
static int
-ia64_size_of_register_frame (frame_info_ptr this_frame, ULONGEST cfm)
+ia64_size_of_register_frame (const frame_info_ptr &this_frame, ULONGEST cfm)
{
return (cfm & 0x7f);
}
diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h
index a623a7e58aef..64be38b4d766 100644
--- a/gdb/ia64-tdep.h
+++ b/gdb/ia64-tdep.h
@@ -240,7 +240,7 @@ struct ia64_gdbarch_tdep : gdbarch_tdep_base
Normally, the size of the register frame is always obtained by
extracting the lowest 7 bits ("cfm & 0x7f"). */
- int (*size_of_register_frame) (frame_info_ptr this_frame, ULONGEST cfm)
+ int (*size_of_register_frame) (const frame_info_ptr &this_frame, ULONGEST cfm)
= nullptr;
/* Determine the function address FADDR belongs to a shared library.
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 4e17a6b06295..c1fdbb300c67 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1743,7 +1743,7 @@ finish_backward (struct finish_command_fsm *sm)
frame that called the function we're about to step out of. */
static void
-finish_forward (struct finish_command_fsm *sm, frame_info_ptr frame)
+finish_forward (struct finish_command_fsm *sm, const frame_info_ptr &frame)
{
struct frame_id frame_id = get_frame_id (frame);
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1768,9 +1768,10 @@ finish_forward (struct finish_command_fsm *sm, frame_info_ptr frame)
/* Skip frames for "finish". */
static frame_info_ptr
-skip_finish_frames (frame_info_ptr frame)
+skip_finish_frames (const frame_info_ptr &initial_frame)
{
frame_info_ptr start;
+ frame_info_ptr frame = initial_frame;
do
{
@@ -2256,7 +2257,7 @@ default_print_one_register_info (struct ui_file *file,
void
default_print_registers_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int regnum, int print_all)
{
int i;
@@ -2416,7 +2417,7 @@ info_registers_command (const char *addr_exp, int from_tty)
static void
print_vector_info (struct ui_file *file,
- frame_info_ptr frame, const char *args)
+ const frame_info_ptr &frame, const char *args)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -2953,7 +2954,7 @@ interrupt_command (const char *args, int from_tty)
void
default_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, const char *args)
+ const frame_info_ptr &frame, const char *args)
{
int regnum;
int printed_something = 0;
diff --git a/gdb/inferior.h b/gdb/inferior.h
index f577bb1642d0..7be28423aeb1 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -156,7 +156,7 @@ extern void reopen_exec_file (void);
extern void default_print_registers_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int regnum, int all);
/* Default implementation of gdbarch_print_float_info. Print
@@ -164,7 +164,7 @@ extern void default_print_registers_info (struct gdbarch *gdbarch,
extern void default_print_float_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
const char *args);
/* Try to determine whether TTY is GDB's input terminal. Returns
diff --git a/gdb/infrun.c b/gdb/infrun.c
index fa68ab8296e9..bbb98f6dcdb3 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -88,9 +88,9 @@ static void follow_inferior_reset_breakpoints (void);
static bool currently_stepping (struct thread_info *tp);
-static void insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr);
+static void insert_hp_step_resume_breakpoint_at_frame (const frame_info_ptr &);
-static void insert_step_resume_breakpoint_at_caller (frame_info_ptr);
+static void insert_step_resume_breakpoint_at_caller (const frame_info_ptr &);
static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR);
@@ -3838,7 +3838,7 @@ static void handle_step_into_function_backward (struct gdbarch *gdbarch,
struct execution_control_state *ecs);
static void handle_signal_stop (struct execution_control_state *ecs);
static void check_exception_resume (struct execution_control_state *,
- frame_info_ptr);
+ const frame_info_ptr &);
static void end_stepping_range (struct execution_control_state *ecs);
static void stop_waiting (struct execution_control_state *ecs);
@@ -4771,7 +4771,7 @@ fetch_inferior_event ()
/* See infrun.h. */
void
-set_step_info (thread_info *tp, frame_info_ptr frame,
+set_step_info (thread_info *tp, const frame_info_ptr &frame,
struct symtab_and_line sal)
{
/* This can be removed once this function no longer implicitly relies on the
@@ -5003,8 +5003,10 @@ adjust_pc_after_break (struct thread_info *thread,
}
static bool
-stepped_in_from (frame_info_ptr frame, struct frame_id step_frame_id)
+stepped_in_from (const frame_info_ptr &initial_frame, frame_id step_frame_id)
{
+ frame_info_ptr frame = initial_frame;
+
for (frame = get_prev_frame (frame);
frame != nullptr;
frame = get_prev_frame (frame))
@@ -8742,7 +8744,7 @@ insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch,
RETURN_FRAME.pc. */
static void
-insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr return_frame)
+insert_hp_step_resume_breakpoint_at_frame (const frame_info_ptr &return_frame)
{
gdb_assert (return_frame != nullptr);
@@ -8773,7 +8775,7 @@ insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr return_frame)
of frame_unwind_caller_id for an example). */
static void
-insert_step_resume_breakpoint_at_caller (frame_info_ptr next_frame)
+insert_step_resume_breakpoint_at_caller (const frame_info_ptr &next_frame)
{
/* We shouldn't have gotten here if we don't know where the call site
is. */
@@ -8820,7 +8822,7 @@ insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
static void
insert_exception_resume_breakpoint (struct thread_info *tp,
const struct block *b,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
struct symbol *sym)
{
try
@@ -8863,7 +8865,7 @@ insert_exception_resume_breakpoint (struct thread_info *tp,
static void
insert_exception_resume_from_probe (struct thread_info *tp,
const struct bound_probe *probe,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
struct value *arg_value;
CORE_ADDR handler;
@@ -8892,7 +8894,7 @@ insert_exception_resume_from_probe (struct thread_info *tp,
static void
check_exception_resume (struct execution_control_state *ecs,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
struct bound_probe probe;
struct symbol *func;
diff --git a/gdb/infrun.h b/gdb/infrun.h
index ba72212d5622..6339fd997e15 100644
--- a/gdb/infrun.h
+++ b/gdb/infrun.h
@@ -207,7 +207,7 @@ extern int stepping_past_nonsteppable_watchpoint (void);
/* Record in TP the frame and location we're currently stepping through. */
extern void set_step_info (thread_info *tp,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
struct symtab_and_line sal);
/* Notify interpreters and observers that the current inferior has stopped with
diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
index 02dbcd12af1f..9f3deef8f030 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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
/* Use get_frame_register_value instead of
@@ -208,7 +208,7 @@ 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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR this_pc;
@@ -441,7 +441,7 @@ inline_skipped_symbol (thread_info *thread)
skip_inline_frames). */
int
-frame_inlined_callees (frame_info_ptr this_frame)
+frame_inlined_callees (const frame_info_ptr &this_frame)
{
frame_info_ptr next_frame;
int inline_count = 0;
diff --git a/gdb/inline-frame.h b/gdb/inline-frame.h
index e19b60e010f6..bbe617c7c5b2 100644
--- a/gdb/inline-frame.h
+++ b/gdb/inline-frame.h
@@ -68,6 +68,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 (const frame_info_ptr &this_frame);
#endif /* !defined (INLINE_FRAME_H) */
diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c
index 937a3513df44..4177de059c0d 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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 f1dbf39f73fd..3ca9cdabf9da 100644
--- a/gdb/jit.c
+++ b/gdb/jit.c
@@ -1008,7 +1008,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)
+ const frame_info_ptr &this_frame, void **cache)
{
struct jit_unwind_private *priv_data;
struct gdb_unwind_callbacks callbacks;
@@ -1054,7 +1054,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 (const frame_info_ptr &this_frame, void **cache,
struct frame_id *this_id)
{
struct jit_unwind_private priv;
@@ -1083,7 +1083,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 (const frame_info_ptr &this_frame, void **cache, int reg)
{
struct jit_unwind_private *priv = (struct jit_unwind_private *) *cache;
struct gdbarch *gdbarch;
diff --git a/gdb/language.h b/gdb/language.h
index 5bef965c2c86..c2eae4f74343 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -321,7 +321,7 @@ struct language_defn
virtual struct value *read_var_value (struct symbol *var,
const struct block *var_block,
- frame_info_ptr frame) const;
+ const frame_info_ptr &frame) const;
/* Return information about whether TYPE should be passed
(and returned) by reference at the language level. The default
diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
index 12e9b5ad4fd6..b4605e48c6a3 100644
--- a/gdb/lm32-tdep.c
+++ b/gdb/lm32-tdep.c
@@ -379,7 +379,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
{
CORE_ADDR current_pc;
ULONGEST prev_sp;
@@ -425,7 +425,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct lm32_frame_cache *cache = lm32_frame_cache (this_frame, this_cache);
@@ -438,7 +438,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct lm32_frame_cache *info;
@@ -458,7 +458,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 (const frame_info_ptr &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 f1471d53ff4c..5ea648acd813 100644
--- a/gdb/loongarch-linux-tdep.c
+++ b/gdb/loongarch-linux-tdep.c
@@ -446,7 +446,7 @@ const struct regset loongarch_lbtregset =
static void
loongarch_linux_rt_sigframe_init (const struct tramp_frame *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -521,7 +521,7 @@ loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch,
instruction to be executed. */
static CORE_ADDR
-loongarch_linux_syscall_next_pc (frame_info_ptr frame)
+loongarch_linux_syscall_next_pc (const frame_info_ptr &frame)
{
const CORE_ADDR pc = get_frame_pc (frame);
ULONGEST a7 = get_frame_register_unsigned (frame, LOONGARCH_A7_REGNUM);
diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c
index 0f4622a55be3..0b38e751d165 100644
--- a/gdb/loongarch-tdep.c
+++ b/gdb/loongarch-tdep.c
@@ -113,7 +113,7 @@ loongarch_insn_is_sc (insn_t insn)
static CORE_ADDR
loongarch_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc,
- CORE_ADDR limit_pc, frame_info_ptr this_frame,
+ CORE_ADDR limit_pc, const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache)
{
CORE_ADDR cur_pc = start_pc, prologue_end = 0;
@@ -390,7 +390,7 @@ loongarch_software_single_step (struct regcache *regcache)
/* Callback function for user_reg_add. */
static struct value *
-value_of_loongarch_user_reg (frame_info_ptr frame, const void *baton)
+value_of_loongarch_user_reg (const frame_info_ptr &frame, const void *baton)
{
return value_of_register ((long long) baton,
get_next_frame_sentinel_okay (frame));
@@ -407,7 +407,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct trad_frame_cache *cache;
CORE_ADDR pc;
@@ -429,7 +429,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 (const frame_info_ptr &this_frame, void **prologue_cache,
struct frame_id *this_id)
{
struct trad_frame_cache *info;
@@ -441,7 +441,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 (const frame_info_ptr &this_frame,
void **prologue_cache, int regnum)
{
struct trad_frame_cache *info;
diff --git a/gdb/loongarch-tdep.h b/gdb/loongarch-tdep.h
index bfe398898c00..5c8108182ad6 100644
--- a/gdb/loongarch-tdep.h
+++ b/gdb/loongarch-tdep.h
@@ -41,7 +41,7 @@ struct loongarch_gdbarch_tdep : gdbarch_tdep_base
struct loongarch_gdbarch_features abi_features;
/* Return the expected next PC if FRAME is stopped at a syscall instruction. */
- CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
+ CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
};
#endif /* LOONGARCH_TDEP_H */
diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
index 8da15fefe800..0895f7bd0c4b 100644
--- a/gdb/m32c-tdep.c
+++ b/gdb/m32c-tdep.c
@@ -1854,7 +1854,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (! *this_prologue_cache)
@@ -1878,7 +1878,7 @@ m32c_analyze_frame_prologue (frame_info_ptr this_frame,
static CORE_ADDR
-m32c_frame_base (frame_info_ptr this_frame,
+m32c_frame_base (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct m32c_prologue *p
@@ -1918,7 +1918,7 @@ m32c_frame_base (frame_info_ptr this_frame,
static void
-m32c_this_id (frame_info_ptr this_frame,
+m32c_this_id (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -1931,7 +1931,7 @@ m32c_this_id (frame_info_ptr this_frame,
static struct value *
-m32c_prev_register (frame_info_ptr this_frame,
+m32c_prev_register (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
gdbarch *arch = get_frame_arch (this_frame);
@@ -2309,7 +2309,7 @@ m32c_return_value (struct gdbarch *gdbarch,
code sequence seems more fragile. */
static CORE_ADDR
-m32c_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR stop_pc)
+m32c_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR stop_pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
m32c_gdbarch_tdep *tdep = gdbarch_tdep<m32c_gdbarch_tdep> (gdbarch);
diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c
index ec054fa263ef..b74d2f3f161b 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, const frame_info_ptr &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, const frame_info_ptr &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)
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 73855947e632..0bd6b499e6f0 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 a8466e31b58e..d80b190f2c0f 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
{
ULONGEST tos;
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -997,7 +997,7 @@ m68hc11_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
/* Get and print the register from the given frame. */
static void
m68hc11_print_register (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, int regno)
+ const frame_info_ptr &frame, int regno)
{
LONGEST rval;
@@ -1084,7 +1084,7 @@ m68hc11_print_register (struct gdbarch *gdbarch, struct ui_file *file,
/* Same as 'info reg' but prints the registers in a different way. */
static void
m68hc11_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, int regno, int cpregs)
+ const frame_info_ptr &frame, int regno, int cpregs)
{
if (regno >= 0)
{
diff --git a/gdb/m68k-linux-tdep.c b/gdb/m68k-linux-tdep.c
index 9004b2e55b44..eca4ede099f7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 1ae5c33e8420..abfc605aabb6 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -205,7 +205,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 (const frame_info_ptr &frame, int regnum,
struct type *type, gdb_byte *to,
int *optimizedp, int *unavailablep)
{
@@ -232,7 +232,7 @@ m68k_register_to_value (frame_info_ptr frame, int regnum,
REGNUM in frame FRAME. */
static void
-m68k_value_to_register (frame_info_ptr frame, int regnum,
+m68k_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *type, const gdb_byte *from)
{
gdb_byte to[M68K_MAX_REGISTER_SIZE];
@@ -900,7 +900,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, const frame_info_ptr &next_frame)
{
gdb_byte buf[8];
@@ -911,7 +911,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -976,7 +976,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
@@ -990,7 +990,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
@@ -1019,7 +1019,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
@@ -1035,7 +1035,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, const frame_info_ptr &this_frame)
{
CORE_ADDR fp;
@@ -1052,7 +1052,7 @@ m68k_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
This routine returns true on success. */
static int
-m68k_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+m68k_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_byte *buf;
CORE_ADDR sp, jb_addr;
diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
index 573711e8ba43..f455d3eb51d6 100644
--- a/gdb/mep-tdep.c
+++ b/gdb/mep-tdep.c
@@ -1913,7 +1913,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (! *this_prologue_cache)
@@ -1943,7 +1943,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct mep_prologue *p
@@ -1971,7 +1971,7 @@ mep_frame_base (frame_info_ptr this_frame,
static void
-mep_frame_this_id (frame_info_ptr this_frame,
+mep_frame_this_id (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -1981,7 +1981,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct mep_prologue *p
diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
index d4202b99514a..09c31b6a9a4c 100644
--- a/gdb/mi/mi-cmd-stack.c
+++ b/gdb/mi/mi-cmd-stack.c
@@ -44,7 +44,7 @@ enum what_to_list { locals, arguments, all };
static void list_args_or_locals (const frame_print_options &fp_opts,
enum what_to_list what,
enum print_values values,
- frame_info_ptr fi,
+ const frame_info_ptr &fi,
int skip_unavailable);
/* True if we want to allow Python-based frame filters. */
@@ -62,7 +62,7 @@ mi_cmd_enable_frame_filters (const char *command, const char *const *argv,
/* Like apply_ext_lang_frame_filter, but take a print_values */
static enum ext_lang_bt_status
-mi_apply_ext_lang_frame_filter (frame_info_ptr frame,
+mi_apply_ext_lang_frame_filter (const frame_info_ptr &frame,
frame_filter_flags flags,
enum print_values print_values,
struct ui_out *out,
@@ -577,7 +577,7 @@ list_arg_or_local (const struct frame_arg *arg, enum what_to_list what,
static void
list_args_or_locals (const frame_print_options &fp_opts,
enum what_to_list what, enum print_values values,
- frame_info_ptr fi, int skip_unavailable)
+ const frame_info_ptr &fi, int skip_unavailable)
{
const struct block *block;
const char *name_of_result;
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index db670e318f89..f4ab17915ecb 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -89,7 +89,7 @@ static void mi_execute_async_cli_command (const char *cli_command,
const char *const *argv, int argc);
static bool register_changed_p (int regnum, readonly_detached_regcache *,
readonly_detached_regcache *);
-static void output_register (frame_info_ptr, int regnum, int format,
+static void output_register (const frame_info_ptr &, int regnum, int format,
int skip_unavailable);
/* Controls whether the frontend wants MI in async mode. */
@@ -1097,7 +1097,7 @@ mi_cmd_data_list_register_values (const char *command, const char *const *argv,
unavailable. */
static void
-output_register (frame_info_ptr frame, int regnum, int format,
+output_register (const frame_info_ptr &frame, int regnum, int format,
int skip_unavailable)
{
struct ui_out *uiout = current_uiout;
diff --git a/gdb/microblaze-linux-tdep.c b/gdb/microblaze-linux-tdep.c
index 7d620a3688b9..6236ab0a0447 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 (const frame_info_ptr &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,
+ const frame_info_ptr &next_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
index fc83634d1e67..07261bd4d22f 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &next_frame,
void **this_cache)
{
struct microblaze_frame_cache *cache =
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 1b85424586fc..2a43175a170d 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1564,7 +1564,7 @@ lookup_solib_trampoline_symbol_by_pc (CORE_ADDR pc)
a duplicate function in case this matters someday. */
CORE_ADDR
-find_solib_trampoline_target (frame_info_ptr frame, CORE_ADDR pc)
+find_solib_trampoline_target (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct minimal_symbol *tsymbol = lookup_solib_trampoline_symbol_by_pc (pc);
diff --git a/gdb/mips-fbsd-tdep.c b/gdb/mips-fbsd-tdep.c
index 97ad5e79cab5..8464a92bf4af 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &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 9ecf698113b1..0b5e7867788d 100644
--- a/gdb/mips-linux-tdep.c
+++ b/gdb/mips-linux-tdep.c
@@ -94,7 +94,7 @@ enum
#define MIPS_LINUX_JB_PC 0
static int
-mips_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+mips_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
CORE_ADDR jb_addr;
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -247,7 +247,7 @@ mips_fill_gregset_wrapper (const struct regset *regset,
#define MIPS64_LINUX_JB_PC 0
static int
-mips64_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+mips64_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
CORE_ADDR jb_addr;
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -714,21 +714,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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
CORE_ADDR *pc);
static int micromips_linux_sigframe_validate (const struct tramp_frame *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &this_frame,
CORE_ADDR *pc);
#define MIPS_NR_LINUX 4000
@@ -957,7 +957,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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -1150,7 +1150,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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -1235,7 +1235,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,
+ const frame_info_ptr &this_frame,
CORE_ADDR *pc)
{
return mips_pc_is_mips (*pc);
@@ -1245,7 +1245,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,
+ const frame_info_ptr &this_frame,
CORE_ADDR *pc)
{
if (mips_pc_is_micromips (get_frame_arch (this_frame), *pc))
@@ -1290,7 +1290,7 @@ mips_linux_restart_reg_p (struct gdbarch *gdbarch)
instruction to be executed. */
static CORE_ADDR
-mips_linux_syscall_next_pc (frame_info_ptr frame)
+mips_linux_syscall_next_pc (const frame_info_ptr &frame)
{
CORE_ADDR pc = get_frame_pc (frame);
ULONGEST v0 = get_frame_register_unsigned (frame, MIPS_V0_REGNUM);
diff --git a/gdb/mips-netbsd-tdep.c b/gdb/mips-netbsd-tdep.c
index 1452109090f9..8d3604a8b905 100644
--- a/gdb/mips-netbsd-tdep.c
+++ b/gdb/mips-netbsd-tdep.c
@@ -254,7 +254,7 @@ static const unsigned char sigtramp_retcode_mipseb[RETCODE_SIZE] =
NBSD_MIPS_JB_ELEMENT_SIZE (gdbarch))
static int
-mipsnbsd_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+mipsnbsd_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
index e54440e20b5d..7b367898f043 100644
--- a/gdb/mips-sde-tdep.c
+++ b/gdb/mips-sde-tdep.c
@@ -33,7 +33,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
const struct mips_regnum *regs = mips_regnum (gdbarch);
@@ -121,7 +121,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct trad_frame_cache *this_trad_cache
@@ -133,7 +133,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 (const frame_info_ptr &this_frame,
void **this_cache,
int prev_regnum)
{
@@ -147,7 +147,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -176,7 +176,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct trad_frame_cache *this_trad_cache
= mips_sde_frame_cache (this_frame, this_cache);
@@ -193,7 +193,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 (const frame_info_ptr &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 bf0b66c4b002..8339d2f1d4c6 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -74,7 +74,7 @@ static int mips16_insn_at_pc_has_delay_slot (struct gdbarch *gdbarch,
CORE_ADDR addr, int mustbe32);
static void mips_print_float_info (struct gdbarch *, struct ui_file *,
- frame_info_ptr, const char *);
+ const frame_info_ptr &, const char *);
/* A useful bit in the CP0 status register (MIPS_PS_REGNUM). */
/* This bit is set if we are emulating 32-bit FPRs on a 64-bit chip. */
@@ -562,7 +562,7 @@ mips_xfer_register (struct gdbarch *gdbarch, struct regcache *regcache,
physical 64-bit registers, but should treat them as 32-bit registers. */
static int
-mips2_fp_compat (frame_info_ptr frame)
+mips2_fp_compat (const frame_info_ptr &frame)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
/* MIPS1 and MIPS2 have only 32 bit FPRs, and the FR bit is not
@@ -942,7 +942,7 @@ mips_convert_register_p (struct gdbarch *gdbarch,
}
static int
-mips_register_to_value (frame_info_ptr frame, int regnum,
+mips_register_to_value (const frame_info_ptr &frame, int regnum,
struct type *type, gdb_byte *to,
int *optimizedp, int *unavailablep)
{
@@ -984,7 +984,7 @@ mips_register_to_value (frame_info_ptr frame, int regnum,
}
static void
-mips_value_to_register (frame_info_ptr frame, int regnum,
+mips_value_to_register (const frame_info_ptr &frame, int regnum,
struct type *type, const gdb_byte *from)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1409,7 +1409,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, const frame_info_ptr &next_frame)
{
CORE_ADDR pc;
@@ -1431,7 +1431,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, const frame_info_ptr &next_frame)
{
return frame_unwind_register_signed
(next_frame, gdbarch_num_regs (gdbarch) + MIPS_SP_REGNUM);
@@ -1443,7 +1443,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, const frame_info_ptr &this_frame)
{
return frame_id_build
(get_frame_register_signed (this_frame,
@@ -2526,7 +2526,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,
+ const frame_info_ptr &this_frame,
struct mips_frame_cache *this_cache)
{
int prev_non_prologue_insn = 0;
@@ -2862,7 +2862,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct mips_frame_cache *cache;
@@ -2898,7 +2898,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2910,7 +2910,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2920,7 +2920,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2941,7 +2941,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
@@ -2958,7 +2958,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 (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -2987,7 +2987,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,
+ const frame_info_ptr &this_frame,
struct mips_frame_cache *this_cache)
{
CORE_ADDR end_prologue_addr;
@@ -3296,7 +3296,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct mips_frame_cache *cache;
@@ -3333,7 +3333,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3345,7 +3345,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3355,7 +3355,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -3377,7 +3377,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
@@ -3394,7 +3394,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 (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -3432,7 +3432,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,
+ const frame_info_ptr &this_frame,
struct mips_frame_cache *this_cache)
{
int prev_non_prologue_insn;
@@ -3677,7 +3677,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct mips_frame_cache *cache;
@@ -3714,7 +3714,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3726,7 +3726,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3736,7 +3736,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
CORE_ADDR pc = get_frame_pc (this_frame);
if (mips_pc_is_mips (pc))
@@ -3756,7 +3756,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
@@ -3773,7 +3773,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR pc = get_frame_pc (this_frame);
if (mips_pc_is_mips (pc))
@@ -3783,7 +3783,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 (const frame_info_ptr &this_frame, void **this_cache)
{
CORE_ADDR pc;
CORE_ADDR start_addr;
@@ -3818,7 +3818,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct trad_frame_cache *this_trad_cache
@@ -3827,7 +3827,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct trad_frame_cache *this_trad_cache
@@ -3837,7 +3837,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
gdb_byte dummy[4];
CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -3873,7 +3873,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
struct trad_frame_cache *this_trad_cache
@@ -3890,7 +3890,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 (const frame_info_ptr &this_frame)
{
if (mips_stub_frame_sniffer (&mips_stub_frame_unwind, this_frame, NULL))
return &mips_stub_frame_base;
@@ -6256,7 +6256,7 @@ mips_o64_return_value (struct gdbarch *gdbarch, struct value *function,
into rare_buffer. */
static void
-mips_read_fp_register_single (frame_info_ptr frame, int regno,
+mips_read_fp_register_single (const frame_info_ptr &frame, int regno,
gdb_byte *rare_buffer)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -6290,7 +6290,7 @@ mips_read_fp_register_single (frame_info_ptr frame, int regno,
register. */
static void
-mips_read_fp_register_double (frame_info_ptr frame, int regno,
+mips_read_fp_register_double (const frame_info_ptr &frame, int regno,
gdb_byte *rare_buffer)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -6328,7 +6328,7 @@ mips_read_fp_register_double (frame_info_ptr frame, int regno,
}
static void
-mips_print_fp_register (struct ui_file *file, frame_info_ptr frame,
+mips_print_fp_register (struct ui_file *file, const frame_info_ptr &frame,
int regnum)
{ /* Do values for FP (float) regs. */
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -6393,7 +6393,7 @@ mips_print_fp_register (struct ui_file *file, frame_info_ptr frame,
}
static void
-mips_print_register (struct ui_file *file, frame_info_ptr frame,
+mips_print_register (struct ui_file *file, const frame_info_ptr &frame,
int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -6448,7 +6448,7 @@ print_fpu_flags (struct ui_file *file, int flags)
static void
mips_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, const char *args)
+ const frame_info_ptr &frame, const char *args)
{
int fcsr = mips_regnum (gdbarch)->fp_control_status;
enum mips_fpu_type type = mips_get_fpu_type (gdbarch);
@@ -6515,7 +6515,7 @@ mips_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
Print regs in pretty columns. */
static int
-print_fp_register_row (struct ui_file *file, frame_info_ptr frame,
+print_fp_register_row (struct ui_file *file, const frame_info_ptr &frame,
int regnum)
{
gdb_printf (file, " ");
@@ -6528,7 +6528,7 @@ print_fp_register_row (struct ui_file *file, frame_info_ptr frame,
/* Print a row's worth of GP (int) registers, with name labels above. */
static int
-print_gp_register_row (struct ui_file *file, frame_info_ptr frame,
+print_gp_register_row (struct ui_file *file, const frame_info_ptr &frame,
int start_regnum)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -6631,7 +6631,7 @@ print_gp_register_row (struct ui_file *file, frame_info_ptr frame,
static void
mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
- frame_info_ptr frame, int regnum, int all)
+ const frame_info_ptr &frame, int regnum, int all)
{
if (regnum != -1) /* Do one specified register. */
{
@@ -6663,7 +6663,7 @@ mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
static int
mips_single_step_through_delay (struct gdbarch *gdbarch,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
CORE_ADDR pc = get_frame_pc (frame);
enum mips_isa isa;
@@ -7569,7 +7569,7 @@ mips_is_stub_mode (const char *mode)
The limit on the search is arbitrarily set to 20 instructions. FIXME. */
static CORE_ADDR
-mips_get_mips16_fn_stub_pc (frame_info_ptr frame, CORE_ADDR pc)
+mips_get_mips16_fn_stub_pc (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -7692,7 +7692,7 @@ mips_get_mips16_fn_stub_pc (frame_info_ptr frame, CORE_ADDR pc)
gory details. */
static CORE_ADDR
-mips_skip_mips16_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+mips_skip_mips16_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
CORE_ADDR start_addr;
@@ -7820,7 +7820,7 @@ mips_in_return_stub (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name)
so that $t9 has the correct value at function entry. */
static CORE_ADDR
-mips_skip_pic_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+mips_skip_pic_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -7873,7 +7873,7 @@ mips_skip_pic_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
}
static CORE_ADDR
-mips_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+mips_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
CORE_ADDR requested_pc = pc;
CORE_ADDR target_pc;
@@ -8074,7 +8074,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 (const frame_info_ptr &frame, const void *baton)
{
const int *reg_p = (const int *) baton;
return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
diff --git a/gdb/mips-tdep.h b/gdb/mips-tdep.h
index b64f37cebbba..eec1fb56f4e1 100644
--- a/gdb/mips-tdep.h
+++ b/gdb/mips-tdep.h
@@ -125,7 +125,7 @@ struct mips_gdbarch_tdep : gdbarch_tdep_base
/* Return the expected next PC if FRAME is stopped at a syscall
instruction. */
- CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
+ CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
};
/* Register numbers of various important registers. */
diff --git a/gdb/mips64-obsd-tdep.c b/gdb/mips64-obsd-tdep.c
index 6ea49c16a56b..cacb8bbee50a 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,
+ const frame_info_ptr &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 276e01cdf8ac..4554cb182314 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index 4d65fed38e76..f8c5a0906ef5 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct mn10300_prologue *p
diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c
index 4a80355ada55..812c92d1e0af 100644
--- a/gdb/moxie-tdep.c
+++ b/gdb/moxie-tdep.c
@@ -514,7 +514,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct moxie_frame_cache *cache;
CORE_ADDR current_pc;
@@ -551,7 +551,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
@@ -567,7 +567,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
@@ -598,7 +598,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 (const frame_info_ptr &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 6bbb1d43300f..e07e3cc4be2b 100644
--- a/gdb/msp430-tdep.c
+++ b/gdb/msp430-tdep.c
@@ -458,7 +458,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (!*this_prologue_cache)
@@ -486,7 +486,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
{
struct msp430_prologue *p
= msp430_analyze_frame_prologue (this_frame, this_prologue_cache);
@@ -498,7 +498,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
*this_id = frame_id_build (msp430_frame_base (this_frame,
@@ -509,7 +509,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct msp430_prologue *p
@@ -805,7 +805,7 @@ msp430_in_return_stub (struct gdbarch *gdbarch, CORE_ADDR pc,
/* Implement the "skip_trampoline_code" gdbarch method. */
static CORE_ADDR
-msp430_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+msp430_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct bound_minimal_symbol bms;
const char *stub_name;
diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c
index d4be42ce777e..e453cd0f6d9a 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 (const frame_info_ptr &frame, const void *baton)
{
return value_of_register ((int) (intptr_t) baton,
get_next_frame_sentinel_okay (frame));
@@ -902,7 +902,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct nds32_frame_cache *cache;
@@ -953,7 +953,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
@@ -968,7 +968,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
@@ -1002,7 +1002,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
@@ -1288,7 +1288,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)
+ const frame_info_ptr &this_frame, void **this_cache)
{
if (frame_relative_level (this_frame) == 0)
return nds32_stack_frame_destroyed_p (get_frame_arch (this_frame),
@@ -1303,7 +1303,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct nds32_frame_cache *cache;
@@ -1335,7 +1335,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
struct nds32_frame_cache *cache
@@ -1351,7 +1351,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct nds32_frame_cache *cache
@@ -1825,7 +1825,7 @@ nds32_return_value (struct gdbarch *gdbarch, struct value *func_type,
/* Implement the "get_longjmp_target" gdbarch method. */
static int
-nds32_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+nds32_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
gdb_byte buf[4];
CORE_ADDR jb_addr;
diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c
index 1ff097781069..9d2d4fff04a2 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,
+ const frame_info_ptr &next_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -187,7 +187,7 @@ static struct tramp_frame nios2_r2_linux_rt_sigreturn_tramp_frame =
instruction to be executed. */
static CORE_ADDR
-nios2_linux_syscall_next_pc (frame_info_ptr frame,
+nios2_linux_syscall_next_pc (const frame_info_ptr &frame,
const struct nios2_opcode *op)
{
CORE_ADDR pc = get_frame_pc (frame);
diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
index 196f50bc8694..0a8eeb88bb5a 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)
+ const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
+ const frame_info_ptr &this_frame, void **cache)
{
gdb_byte dummy[4];
CORE_ADDR pc = get_frame_address_in_block (this_frame);
@@ -2218,7 +2218,7 @@ nios2_software_single_step (struct regcache *regcache)
/* Implement the get_longjump_target gdbarch method. */
static int
-nios2_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+nios2_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
nios2_gdbarch_tdep *tdep = gdbarch_tdep<nios2_gdbarch_tdep> (gdbarch);
diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h
index ae68131736af..57e0de7076d0 100644
--- a/gdb/nios2-tdep.h
+++ b/gdb/nios2-tdep.h
@@ -73,7 +73,7 @@ struct nios2_gdbarch_tdep : gdbarch_tdep_base
{
/* Assumes FRAME is stopped at a syscall (trap) instruction; returns
the expected next PC. */
- CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame,
+ CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame,
const struct nios2_opcode *op) = nullptr;
/* Returns true if PC points to a kernel helper function. */
diff --git a/gdb/observable.h b/gdb/observable.h
index 0e9226982772..2aa3ef3fd4ee 100644
--- a/gdb/observable.h
+++ b/gdb/observable.h
@@ -217,7 +217,7 @@ extern observable<ptid_t /* thread */, CORE_ADDR /* address */>
inferior_call_post;
/* A register in the inferior has been modified by the gdb user. */
-extern observable<frame_info_ptr /* frame */, int /* regnum */>
+extern observable<const frame_info_ptr &/* frame */, int /* regnum */>
register_changed;
/* The user-selected inferior, thread and/or frame has changed. The
diff --git a/gdb/or1k-linux-tdep.c b/gdb/or1k-linux-tdep.c
index 5b65559bdeb0..75ab8459e754 100644
--- a/gdb/or1k-linux-tdep.c
+++ b/gdb/or1k-linux-tdep.c
@@ -62,7 +62,7 @@ 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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func);
@@ -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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
index c8365dc9d721..ffcb50f4bcd1 100644
--- a/gdb/or1k-tdep.c
+++ b/gdb/or1k-tdep.c
@@ -378,7 +378,7 @@ or1k_delay_slot_p (struct gdbarch *gdbarch, CORE_ADDR pc)
static int
or1k_single_step_through_delay (struct gdbarch *gdbarch,
- frame_info_ptr this_frame)
+ const frame_info_ptr &this_frame)
{
ULONGEST val;
CORE_ADDR ppc;
@@ -558,7 +558,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, const frame_info_ptr &next_frame)
{
CORE_ADDR pc;
@@ -578,7 +578,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, const frame_info_ptr &next_frame)
{
CORE_ADDR sp;
@@ -889,7 +889,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 (const frame_info_ptr &this_frame, void **prologue_cache)
{
struct gdbarch *gdbarch;
struct trad_frame_cache *info;
@@ -1102,7 +1102,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 (const frame_info_ptr &this_frame,
void **prologue_cache, struct frame_id *this_id)
{
struct trad_frame_cache *info = or1k_frame_cache (this_frame,
@@ -1114,7 +1114,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 (const frame_info_ptr &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 e70056a2ac80..719ddc71d130 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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 a7c1104b29f4..2824cb628c3d 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -338,7 +338,7 @@ powerpc_linux_in_dynsym_resolve_code (CORE_ADDR pc)
stub sequence. */
static CORE_ADDR
-ppc_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+ppc_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
unsigned int insnbuf[POWERPC32_PLT_CHECK_LEN];
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1169,7 +1169,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 (const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func, LONGEST offset,
int bias)
@@ -1241,7 +1241,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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -1253,7 +1253,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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -1265,7 +1265,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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -1277,7 +1277,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,
+ const frame_info_ptr &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 0245969e8648..58f5678d5d9c 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,
+ const frame_info_ptr &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 d9e21e3a3269..b845e67bcaab 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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct trad_frame_cache *cache =
diff --git a/gdb/ppc-sysv-tdep.c b/gdb/ppc-sysv-tdep.c
index 59365fc490c7..ebbf1cf4295f 100644
--- a/gdb/ppc-sysv-tdep.c
+++ b/gdb/ppc-sysv-tdep.c
@@ -2163,7 +2163,8 @@ ppc64_sysv_abi_return_value (struct gdbarch *gdbarch, struct value *function,
}
CORE_ADDR
-ppc_sysv_get_return_buf_addr (struct type *val_type, frame_info_ptr cur_frame)
+ppc_sysv_get_return_buf_addr (struct type *val_type,
+ const frame_info_ptr &cur_frame)
{
/* The PowerPC ABI specifies aggregates that are not returned by value
are returned in a storage buffer provided by the caller. The
diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h
index d4a62d2e33c2..db31c7f199ac 100644
--- a/gdb/ppc-tdep.h
+++ b/gdb/ppc-tdep.h
@@ -177,7 +177,7 @@ extern void ppc_collect_vsxregset (const struct regset *regset,
/* Implementation of the gdbarch get_return_buf_addr hook. */
-extern CORE_ADDR ppc_sysv_get_return_buf_addr (type*, frame_info_ptr);
+extern CORE_ADDR ppc_sysv_get_return_buf_addr (type*, const frame_info_ptr &);
/* Private data that this module attaches to struct gdbarch. */
@@ -424,7 +424,7 @@ struct ppc_insn_pattern
int optional; /* If non-zero, this insn may be absent. */
};
-extern int ppc_insns_match_pattern (frame_info_ptr frame, CORE_ADDR pc,
+extern int ppc_insns_match_pattern (const frame_info_ptr &frame, CORE_ADDR pc,
const struct ppc_insn_pattern *pattern,
unsigned int *insns);
extern CORE_ADDR ppc_insn_d_field (unsigned int insn);
diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c
index d415836c69df..5797d55f00b7 100644
--- a/gdb/ppc64-tdep.c
+++ b/gdb/ppc64-tdep.c
@@ -85,7 +85,7 @@
Return the function's entry point. */
static CORE_ADDR
-ppc64_plt_entry_point (frame_info_ptr frame, CORE_ADDR plt_off)
+ppc64_plt_entry_point (const frame_info_ptr &frame, CORE_ADDR plt_off)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -108,7 +108,7 @@ ppc64_plt_entry_point (frame_info_ptr frame, CORE_ADDR plt_off)
}
static CORE_ADDR
-ppc64_plt_pcrel_entry_point (frame_info_ptr frame, CORE_ADDR plt_off,
+ppc64_plt_pcrel_entry_point (const frame_info_ptr &frame, CORE_ADDR plt_off,
CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -546,7 +546,7 @@ static const struct ppc_insn_pattern ppc64_standard_linkage12[] =
dynamic linker lazy symbol resolution stubs.) */
static CORE_ADDR
-ppc64_standard_linkage1_target (frame_info_ptr frame, unsigned int *insn)
+ppc64_standard_linkage1_target (const frame_info_ptr &frame, unsigned int *insn)
{
CORE_ADDR plt_off = ((ppc_insn_d_field (insn[0]) << 16)
+ ppc_insn_ds_field (insn[2]));
@@ -555,7 +555,7 @@ ppc64_standard_linkage1_target (frame_info_ptr frame, unsigned int *insn)
}
static CORE_ADDR
-ppc64_standard_linkage2_target (frame_info_ptr frame, unsigned int *insn)
+ppc64_standard_linkage2_target (const frame_info_ptr &frame, unsigned int *insn)
{
CORE_ADDR plt_off = ((ppc_insn_d_field (insn[1]) << 16)
+ ppc_insn_ds_field (insn[3]));
@@ -564,7 +564,7 @@ ppc64_standard_linkage2_target (frame_info_ptr frame, unsigned int *insn)
}
static CORE_ADDR
-ppc64_standard_linkage3_target (frame_info_ptr frame, unsigned int *insn)
+ppc64_standard_linkage3_target (const frame_info_ptr &frame, unsigned int *insn)
{
CORE_ADDR plt_off = ppc_insn_ds_field (insn[1]);
@@ -572,7 +572,7 @@ ppc64_standard_linkage3_target (frame_info_ptr frame, unsigned int *insn)
}
static CORE_ADDR
-ppc64_standard_linkage4_target (frame_info_ptr frame, unsigned int *insn)
+ppc64_standard_linkage4_target (const frame_info_ptr &frame, unsigned int *insn)
{
CORE_ADDR plt_off = ((ppc_insn_d_field (insn[1]) << 16)
+ ppc_insn_ds_field (insn[2]));
@@ -581,7 +581,7 @@ ppc64_standard_linkage4_target (frame_info_ptr frame, unsigned int *insn)
}
static CORE_ADDR
-ppc64_pcrel_linkage1_target (frame_info_ptr frame, unsigned int *insn,
+ppc64_pcrel_linkage1_target (const frame_info_ptr &frame, unsigned int *insn,
CORE_ADDR pc)
{
/* insn[0] is for the std instruction. */
@@ -591,7 +591,7 @@ ppc64_pcrel_linkage1_target (frame_info_ptr frame, unsigned int *insn,
}
static CORE_ADDR
-ppc64_pcrel_linkage2_target (frame_info_ptr frame, unsigned int *insn,
+ppc64_pcrel_linkage2_target (const frame_info_ptr &frame, unsigned int *insn,
CORE_ADDR pc)
{
CORE_ADDR plt_off;
@@ -611,7 +611,7 @@ ppc64_pcrel_linkage2_target (frame_info_ptr frame, unsigned int *insn,
check whether we are in the middle of a PLT stub. */
static CORE_ADDR
-ppc64_skip_trampoline_code_1 (frame_info_ptr frame, CORE_ADDR pc)
+ppc64_skip_trampoline_code_1 (const frame_info_ptr &frame, CORE_ADDR pc)
{
#define MAX(a,b) ((a) > (b) ? (a) : (b))
unsigned int insns[MAX (MAX (MAX (ARRAY_SIZE (ppc64_standard_linkage1),
@@ -707,7 +707,7 @@ ppc64_skip_trampoline_code_1 (frame_info_ptr frame, CORE_ADDR pc)
ppc_elfv2_skip_entrypoint. */
CORE_ADDR
-ppc64_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+ppc64_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/ppc64-tdep.h b/gdb/ppc64-tdep.h
index 4dc6e6a87091..ff0e3fdd033e 100644
--- a/gdb/ppc64-tdep.h
+++ b/gdb/ppc64-tdep.h
@@ -24,7 +24,7 @@ struct gdbarch;
class frame_info_ptr;
struct target_ops;
-extern CORE_ADDR ppc64_skip_trampoline_code (frame_info_ptr frame,
+extern CORE_ADDR ppc64_skip_trampoline_code (const frame_info_ptr &frame,
CORE_ADDR pc);
extern CORE_ADDR ppc64_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 7f47f489a943..43c0f447fa8a 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -2330,7 +2330,7 @@ clear_dangling_display_expressions (struct objfile *objfile)
void
print_variable_and_value (const char *name, struct symbol *var,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
struct ui_file *stream, int indent)
{
diff --git a/gdb/probe.c b/gdb/probe.c
index a68283ab5ce7..4d68e129636e 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -786,7 +786,7 @@ ignore_probes_command (const char *arg, int from_tty)
/* See comments in probe.h. */
struct value *
-probe_safe_evaluate_at_pc (frame_info_ptr frame, unsigned n)
+probe_safe_evaluate_at_pc (const frame_info_ptr &frame, unsigned n)
{
struct bound_probe probe;
unsigned n_args;
diff --git a/gdb/probe.h b/gdb/probe.h
index 31b0b8b8f739..41e728ad049e 100644
--- a/gdb/probe.h
+++ b/gdb/probe.h
@@ -143,7 +143,7 @@ class probe
corresponding to it. The argument number is represented N.
This function can throw an exception. */
virtual struct value *evaluate_argument (unsigned n,
- frame_info_ptr frame) = 0;
+ const frame_info_ptr &frame) = 0;
/* Compile the Nth argument of the probe to an agent expression.
The argument number is represented by N. */
@@ -301,7 +301,7 @@ extern struct cmd_list_element **info_probes_cmdlist_get (void);
probe at that location, or if the probe does not have enough arguments,
this returns NULL. */
-extern struct value *probe_safe_evaluate_at_pc (frame_info_ptr frame,
+extern struct value *probe_safe_evaluate_at_pc (const frame_info_ptr &frame,
unsigned n);
/* Return true if the PROVIDER/NAME probe from OBJFILE_NAME needs to be
diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
index 30dd054305b6..388c513e5e9b 100644
--- a/gdb/python/py-event.h
+++ b/gdb/python/py-event.h
@@ -55,7 +55,7 @@ enum inferior_call_kind
extern int emit_inferior_call_event (inferior_call_kind kind,
ptid_t thread, CORE_ADDR addr);
-extern int emit_register_changed_event (frame_info_ptr frame,
+extern int emit_register_changed_event (const frame_info_ptr &frame,
int regnum);
extern int emit_memory_changed_event (CORE_ADDR addr, ssize_t len);
extern int evpy_emit_event (PyObject *event,
diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c
index a1061fc0d729..7467f845b78f 100644
--- a/gdb/python/py-frame.c
+++ b/gdb/python/py-frame.c
@@ -361,7 +361,7 @@ frapy_function (PyObject *self, PyObject *args)
Sets a Python exception and returns NULL on error. */
PyObject *
-frame_info_to_frame_object (frame_info_ptr frame)
+frame_info_to_frame_object (const frame_info_ptr &frame)
{
gdbpy_ref<frame_object> frame_obj (PyObject_New (frame_object,
&frame_object_type));
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
index fd2757d686d6..768e3a6e0c81 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -416,7 +416,7 @@ enumerate_args (PyObject *iter,
enum ext_lang_frame_args args_type,
bool raw_frame_args,
int print_args_field,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
struct value_print_options opts;
@@ -548,7 +548,7 @@ enumerate_locals (PyObject *iter,
int indent,
enum ext_lang_frame_args args_type,
int print_args_field,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
struct value_print_options opts;
@@ -636,7 +636,7 @@ static enum ext_lang_bt_status
py_mi_print_variables (PyObject *filter, struct ui_out *out,
struct value_print_options *opts,
enum ext_lang_frame_args args_type,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
bool raw_frame_args_p)
{
gdbpy_ref<> args_iter (get_py_iter_from_func (filter, "frame_args"));
@@ -671,7 +671,7 @@ py_print_locals (PyObject *filter,
struct ui_out *out,
enum ext_lang_frame_args args_type,
int indent,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
gdbpy_ref<> locals_iter (get_py_iter_from_func (filter, "frame_locals"));
if (locals_iter == NULL)
@@ -697,7 +697,7 @@ py_print_args (PyObject *filter,
struct ui_out *out,
enum ext_lang_frame_args args_type,
bool raw_frame_args,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
gdbpy_ref<> args_iter (get_py_iter_from_func (filter, "frame_args"));
if (args_iter == NULL)
@@ -1082,7 +1082,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags,
frame FRAME. */
static PyObject *
-bootstrap_python_frame_filters (frame_info_ptr frame,
+bootstrap_python_frame_filters (const frame_info_ptr &frame,
int frame_low, int frame_high)
{
gdbpy_ref<> frame_obj (frame_info_to_frame_object (frame));
@@ -1137,7 +1137,7 @@ bootstrap_python_frame_filters (frame_info_ptr frame,
enum ext_lang_bt_status
gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
- frame_info_ptr frame, frame_filter_flags flags,
+ const frame_info_ptr &frame, frame_filter_flags flags,
enum ext_lang_frame_args args_type,
struct ui_out *out, int frame_low, int frame_high)
{
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
index 834f7274d1e7..caf6c1bdd53e 100644
--- a/gdb/python/py-inferior.c
+++ b/gdb/python/py-inferior.c
@@ -159,7 +159,7 @@ python_on_memory_change (struct inferior *inferior, CORE_ADDR addr, ssize_t len,
command). */
static void
-python_on_register_change (frame_info_ptr frame, int regnum)
+python_on_register_change (const frame_info_ptr &frame, int regnum)
{
gdbpy_enter enter_py (current_inferior ()->arch ());
diff --git a/gdb/python/py-infevents.c b/gdb/python/py-infevents.c
index 39677af24f56..5b87576ac733 100644
--- a/gdb/python/py-infevents.c
+++ b/gdb/python/py-infevents.c
@@ -62,7 +62,7 @@ create_inferior_call_event_object (inferior_call_kind flag, ptid_t ptid,
register number. */
static gdbpy_ref<>
-create_register_changed_event_object (frame_info_ptr frame,
+create_register_changed_event_object (const frame_info_ptr &frame,
int regnum)
{
gdbpy_ref<> event = create_event_object (®ister_changed_event_object_type);
@@ -151,7 +151,7 @@ emit_memory_changed_event (CORE_ADDR addr, ssize_t len)
will create a new Python register changed event object. */
int
-emit_register_changed_event (frame_info_ptr frame, int regnum)
+emit_register_changed_event (const frame_info_ptr &frame, int regnum)
{
if (evregpy_no_listeners_p (gdb_py_events.register_changed))
return 0;
diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
index c55b5aa85ec8..56f925bc57f0 100644
--- a/gdb/python/py-unwind.c
+++ b/gdb/python/py-unwind.c
@@ -769,7 +769,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 (const frame_info_ptr &this_frame, void **cache_ptr,
struct frame_id *this_id)
{
*this_id = ((cached_frame_info *) *cache_ptr)->frame_id;
@@ -779,7 +779,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 (const frame_info_ptr &this_frame, void **cache_ptr,
int regnum)
{
PYUW_SCOPED_DEBUG_ENTER_EXIT;
@@ -802,7 +802,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, const frame_info_ptr &this_frame,
void **cache_ptr)
{
PYUW_SCOPED_DEBUG_ENTER_EXIT;
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 7c05007cbab5..c68aff5340e7 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -384,7 +384,7 @@ extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
const struct language_defn *language);
extern enum ext_lang_bt_status gdbpy_apply_frame_filter
(const struct extension_language_defn *,
- frame_info_ptr frame, frame_filter_flags flags,
+ const frame_info_ptr &frame, frame_filter_flags flags,
enum ext_lang_frame_args args_type,
struct ui_out *out, int frame_low, int frame_high);
extern void gdbpy_preserve_values (const struct extension_language_defn *,
@@ -444,7 +444,7 @@ PyObject *block_to_block_object (const struct block *block,
struct objfile *objfile);
PyObject *value_to_value_object (struct value *v);
PyObject *type_to_type_object (struct type *);
-PyObject *frame_info_to_frame_object (frame_info_ptr frame);
+PyObject *frame_info_to_frame_object (const frame_info_ptr &frame);
PyObject *symtab_to_linetable_object (PyObject *symtab);
gdbpy_ref<> pspace_to_pspace_object (struct program_space *);
PyObject *pspy_get_printers (PyObject *, void *);
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 030547ad51fd..6350400c318a 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -1649,7 +1649,7 @@ 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 (const frame_info_ptr &frame)
{
struct btrace_frame_cache *cache;
void **slot;
@@ -1667,7 +1667,7 @@ 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 (const frame_info_ptr &frame)
{
const struct btrace_frame_cache *cache;
struct btrace_frame_cache pattern;
@@ -1686,7 +1686,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 (const frame_info_ptr &this_frame,
void **this_cache)
{
const struct btrace_frame_cache *cache;
@@ -1705,7 +1705,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
const struct btrace_frame_cache *cache;
@@ -1735,7 +1735,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 (const frame_info_ptr &this_frame,
void **this_cache,
int regnum)
{
@@ -1781,7 +1781,7 @@ 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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
const struct btrace_function *bfun;
@@ -1836,7 +1836,7 @@ 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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
const struct btrace_function *bfun, *callee;
diff --git a/gdb/riscv-fbsd-tdep.c b/gdb/riscv-fbsd-tdep.c
index ca56a39cb71c..205f7a950df5 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,
+ const frame_info_ptr &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 9dfbe789a699..0267dc65e58e 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -163,7 +163,7 @@ riscv_linux_sigframe_init (const struct tramp_frame *self,
instruction to be executed. */
static CORE_ADDR
-riscv_linux_syscall_next_pc (frame_info_ptr frame)
+riscv_linux_syscall_next_pc (const frame_info_ptr &frame)
{
const CORE_ADDR pc = get_frame_pc (frame);
const ULONGEST a7 = get_frame_register_unsigned (frame, RISCV_A7_REGNUM);
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index 9a7cfa35afd9..68ef3233e8d9 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -165,7 +165,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 (const frame_info_ptr &frame, const void *baton)
{
const int *reg_p = (const int *) baton;
return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
@@ -1135,7 +1135,7 @@ riscv_register_type (struct gdbarch *gdbarch, int regnum)
static void
riscv_print_one_register_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int regnum)
{
const char *name = gdbarch_register_name (gdbarch, regnum);
@@ -1504,7 +1504,7 @@ riscv_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
static void
riscv_print_registers_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int regnum, int print_all)
{
if (regnum != -1)
@@ -3806,7 +3806,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 (const frame_info_ptr &this_frame, void **this_cache)
{
CORE_ADDR pc, start_addr;
struct riscv_unwind_cache *cache;
@@ -3866,7 +3866,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 (const frame_info_ptr &this_frame,
void **prologue_cache,
struct frame_id *this_id)
{
@@ -3887,7 +3887,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 (const frame_info_ptr &this_frame,
void **prologue_cache,
int regnum)
{
diff --git a/gdb/riscv-tdep.h b/gdb/riscv-tdep.h
index ea6b25938ec1..4bdc2e7a3d5d 100644
--- a/gdb/riscv-tdep.h
+++ b/gdb/riscv-tdep.h
@@ -112,7 +112,7 @@ struct riscv_gdbarch_tdep : gdbarch_tdep_base
/* Return the expected next PC assuming FRAME is stopped at a syscall
instruction. */
- CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
+ CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
};
diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c
index aecda0ed2cc1..1e439f363564 100644
--- a/gdb/rl78-tdep.c
+++ b/gdb/rl78-tdep.c
@@ -1079,7 +1079,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, const frame_info_ptr &next_frame)
{
return rl78_addr_bits_remove
(arch, frame_unwind_register_unsigned (next_frame,
@@ -1092,7 +1092,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (!*this_prologue_cache)
@@ -1119,7 +1119,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
{
struct rl78_prologue *p
= rl78_analyze_frame_prologue (this_frame, this_prologue_cache);
@@ -1131,7 +1131,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, struct frame_id *this_id)
{
*this_id = frame_id_build (rl78_frame_base (this_frame,
@@ -1142,7 +1142,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct rl78_prologue *p
@@ -1316,7 +1316,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, const frame_info_ptr &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 6fdbf63d6a86..db76af6984b9 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -240,7 +240,7 @@ static const struct regset rs6000_aix_vsxregset = {
};
static struct trad_frame_cache *
-aix_sighandle_frame_cache (frame_info_ptr this_frame,
+aix_sighandle_frame_cache (const frame_info_ptr &this_frame,
void **this_cache)
{
LONGEST backchain;
@@ -296,7 +296,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -306,7 +306,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct trad_frame_cache *this_trad_cache
@@ -316,7 +316,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,
+ const frame_info_ptr &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 f61e0843c1c7..baae79427e74 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 (const frame_info_ptr &curfrm,
struct gdbarch *gdbarch, CORE_ADDR pc)
{
ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -816,7 +816,7 @@ rs6000_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
/* Get the ith function argument for the current function. */
static CORE_ADDR
-rs6000_fetch_pointer_argument (frame_info_ptr frame, int argi,
+rs6000_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
struct type *type)
{
return get_frame_register_unsigned (frame, 3 + argi);
@@ -2316,7 +2316,7 @@ rs6000_in_solib_return_trampoline (struct gdbarch *gdbarch,
code that should be skipped. */
static CORE_ADDR
-rs6000_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+rs6000_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -2698,7 +2698,7 @@ ieee_128_float_regnum_adjust (struct gdbarch *gdbarch, struct type *type,
}
static int
-rs6000_register_to_value (frame_info_ptr frame,
+rs6000_register_to_value (const frame_info_ptr &frame,
int regnum,
struct type *type,
gdb_byte *to,
@@ -2727,7 +2727,7 @@ rs6000_register_to_value (frame_info_ptr frame,
}
static void
-rs6000_value_to_register (frame_info_ptr frame,
+rs6000_value_to_register (const frame_info_ptr &frame,
int regnum,
struct type *type,
const gdb_byte *from)
@@ -3617,7 +3617,7 @@ struct rs6000_frame_cache
};
static struct rs6000_frame_cache *
-rs6000_frame_cache (frame_info_ptr this_frame, void **this_cache)
+rs6000_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
{
struct rs6000_frame_cache *cache;
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3810,7 +3810,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
@@ -3830,7 +3830,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
@@ -3853,7 +3853,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct rs6000_frame_cache *cache;
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -3934,7 +3934,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 (const frame_info_ptr &this_frame,
void **this_cache, struct frame_id *this_id)
{
CORE_ADDR pc;
@@ -3952,7 +3952,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct rs6000_frame_cache *info =
@@ -3965,7 +3965,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
if (frame_relative_level (this_frame) == 0)
@@ -3991,7 +3991,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
this_cache);
@@ -4006,7 +4006,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 (const frame_info_ptr &this_frame)
{
return &rs6000_frame_base;
}
@@ -4017,7 +4017,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)
+ const frame_info_ptr &this_frame)
{
ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
@@ -8647,7 +8647,7 @@ show_powerpc_exact_watchpoints (struct ui_file *file, int from_tty,
/* Read a PPC instruction from memory. */
static unsigned int
-read_insn (frame_info_ptr frame, CORE_ADDR pc)
+read_insn (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -8669,7 +8669,7 @@ read_insn (frame_info_ptr frame, CORE_ADDR pc)
necessarily the i'th instruction in memory. */
int
-ppc_insns_match_pattern (frame_info_ptr frame, CORE_ADDR pc,
+ppc_insns_match_pattern (const frame_info_ptr &frame, CORE_ADDR pc,
const struct ppc_insn_pattern *pattern,
unsigned int *insns)
{
diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c
index 5ea01e79bb5b..53ad5d5c92b2 100644
--- a/gdb/rx-tdep.c
+++ b/gdb/rx-tdep.c
@@ -383,7 +383,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 (const frame_info_ptr &this_frame,
enum rx_frame_type frame_type,
void **this_prologue_cache)
{
@@ -412,7 +412,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 (const frame_info_ptr &this_frame, void **this_cache)
{
const char *name;
CORE_ADDR pc, start_pc, lim_pc;
@@ -466,7 +466,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 (const frame_info_ptr &this_frame, void **this_cache)
{
enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
struct rx_prologue *p
@@ -493,7 +493,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
*this_id = frame_id_build (rx_frame_base (this_frame, this_cache),
@@ -503,7 +503,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
@@ -577,7 +577,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,
+ const frame_info_ptr &this_frame,
void **this_cache,
int (*sniff_p)(enum rx_frame_type) )
{
@@ -610,7 +610,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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
return rx_frame_sniffer_common (self, this_frame, this_cache,
@@ -621,7 +621,7 @@ rx_frame_sniffer (const struct frame_unwind *self,
static int
rx_exception_sniffer (const struct frame_unwind *self,
- frame_info_ptr this_frame,
+ const frame_info_ptr &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 4b2ed85c1670..60cbc26afffd 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **prologue_cache, int regnum)
{
struct trad_frame_cache *info = s12z_frame_cache (this_frame,
@@ -491,7 +491,7 @@ static const char ccw_bits[] =
static void
s12z_print_ccw_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int reg)
{
value *v = value_of_register (reg, get_next_frame_sentinel_okay (frame));
@@ -524,7 +524,7 @@ s12z_print_ccw_info (struct gdbarch *gdbarch,
static void
s12z_print_registers_info (struct gdbarch *gdbarch,
struct ui_file *file,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
int regnum, int print_all)
{
const int numregs = (gdbarch_num_regs (gdbarch)
diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
index 4f73d5a4c017..945b3c7cee72 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 134bf984e5b6..1fd08ddf018e 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -1991,7 +1991,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, const frame_info_ptr &this_frame)
{
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
CORE_ADDR sp = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
@@ -2175,7 +2175,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, const frame_info_ptr &next_frame)
{
s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
ULONGEST pc;
@@ -2186,7 +2186,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, const frame_info_ptr &next_frame)
{
ULONGEST sp;
sp = frame_unwind_register_unsigned (next_frame, S390_SP_REGNUM);
@@ -2196,7 +2196,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 (const frame_info_ptr &this_frame, int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
@@ -2267,7 +2267,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
return s390_unwind_pseudo_register (this_frame, regnum);
@@ -2278,7 +2278,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)
+ const frame_info_ptr &this_frame)
{
/* The condition code (and thus PSW mask) is call-clobbered. */
if (regnum == S390_PSWM_REGNUM)
@@ -2312,7 +2312,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 (const frame_info_ptr &this_frame,
trad_frame_saved_reg saved_regs[],
int regnum)
{
@@ -2337,7 +2337,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 (const frame_info_ptr &this_frame,
struct s390_unwind_cache *info)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2524,7 +2524,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 (const frame_info_ptr &this_frame,
struct s390_unwind_cache *info)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2581,7 +2581,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct s390_unwind_cache *info;
@@ -2615,7 +2615,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -2635,7 +2635,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct s390_unwind_cache *info
@@ -2670,7 +2670,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2698,7 +2698,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -2710,7 +2710,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct s390_stub_unwind_cache *info
@@ -2722,7 +2722,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block;
@@ -2753,7 +2753,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct s390_unwind_cache *info
= s390_frame_unwind_cache (this_frame, this_cache);
@@ -2761,7 +2761,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 (const frame_info_ptr &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 58a7d08c9b0b..10f775f468f8 100644
--- a/gdb/s390-tdep.h
+++ b/gdb/s390-tdep.h
@@ -316,7 +316,7 @@ enum
/* Frame unwinding. */
extern struct value *s390_trad_frame_prev_register
- (frame_info_ptr this_frame, struct trad_frame_saved_reg saved_regs[],
+ (const frame_info_ptr &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 6b6cbeb3a3f2..ca7c28952f36 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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
int regnum)
{
@@ -59,7 +59,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 (const frame_info_ptr &this_frame,
void **this_prologue_cache,
struct frame_id *this_id)
{
@@ -70,7 +70,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 (const frame_info_ptr &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 8fee028bb42e..c78d363400ad 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 (const frame_info_ptr &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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index 3a4ff96428a6..16e513eb4053 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -1755,7 +1755,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)
+ const frame_info_ptr &this_frame)
{
/* Mark the PC as the destination for the return address. */
if (regnum == gdbarch_pc_regnum (gdbarch))
@@ -1825,7 +1825,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct sh_frame_cache *cache;
@@ -1892,7 +1892,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1917,7 +1917,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
@@ -1940,7 +1940,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
@@ -1955,7 +1955,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 (const frame_info_ptr &this_frame)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct sh_frame_cache *cache;
@@ -1969,7 +1969,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct sh_frame_cache *cache;
@@ -1983,7 +1983,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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block;
diff --git a/gdb/sol2-tdep.c b/gdb/sol2-tdep.c
index de6794635a57..4ee2d0ac3460 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 (const frame_info_ptr &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 d669b484d0da..a189666f05ee 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 (const frame_info_ptr &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 430522b97029..1590cbdc4f05 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -159,7 +159,7 @@ sparc32_linux_sigframe_init (const struct tramp_frame *self,
address. */
static CORE_ADDR
-sparc32_linux_step_trap (frame_info_ptr frame, unsigned long insn)
+sparc32_linux_step_trap (const frame_info_ptr &frame, unsigned long insn)
{
if (insn == 0x91d02010)
{
diff --git a/gdb/sparc-netbsd-tdep.c b/gdb/sparc-netbsd-tdep.c
index 486381f497b4..d2b1a4bfd140 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR pc = get_frame_pc (this_frame);
@@ -264,7 +264,7 @@ static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind =
address. */
CORE_ADDR
-sparcnbsd_step_trap (frame_info_ptr frame, unsigned long insn)
+sparcnbsd_step_trap (const frame_info_ptr &frame, unsigned long insn)
{
if ((X_I (insn) == 0 && X_RS1 (insn) == 0 && X_RS2 (insn) == 0)
|| (X_I (insn) == 1 && X_RS1 (insn) == 0 && (insn & 0x7f) == 0))
diff --git a/gdb/sparc-obsd-tdep.c b/gdb/sparc-obsd-tdep.c
index 2155a30e20b1..8cdbc8aae6e7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 a0a6c4cd7177..525784401038 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
return sol2_sigtramp_p (this_frame);
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index f84e168ab9fd..5eec3615f536 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
{
CORE_ADDR sp;
@@ -1549,7 +1549,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 (const frame_info_ptr &this_frame)
{
CORE_ADDR pc = get_frame_address_in_block (this_frame);
struct symbol *sym = find_pc_function (pc);
@@ -1562,7 +1562,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)
+ const frame_info_ptr &this_frame)
{
int off;
@@ -1721,7 +1721,7 @@ sparc_analyze_control_transfer (struct regcache *regcache,
}
static CORE_ADDR
-sparc_step_trap (frame_info_ptr frame, unsigned long insn)
+sparc_step_trap (const frame_info_ptr &frame, unsigned long insn)
{
return 0;
}
diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h
index c4ea4ff9d558..2d8c50768be0 100644
--- a/gdb/sparc-tdep.h
+++ b/gdb/sparc-tdep.h
@@ -85,7 +85,7 @@ struct sparc_gdbarch_tdep : gdbarch_tdep_base
size_t plt_entry_size = 0;
/* Alternative location for trap return. Used for single-stepping. */
- CORE_ADDR (*step_trap) (frame_info_ptr frame, unsigned long insn)
+ CORE_ADDR (*step_trap) (const frame_info_ptr &frame, unsigned long insn)
= nullptr;
/* ISA-specific data types. */
@@ -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 (const frame_info_ptr &this_frame, void **this_cache);
extern struct sparc_frame_cache *
- sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache);
+ sparc32_frame_cache (const frame_info_ptr &this_frame, void **this_cache);
extern int
sparc_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc);
@@ -255,13 +255,13 @@ extern const struct sparc_gregmap sparc32nbsd_gregmap;
/* Return the address of a system call's alternative return
address. */
-extern CORE_ADDR sparcnbsd_step_trap (frame_info_ptr frame,
+extern CORE_ADDR sparcnbsd_step_trap (const frame_info_ptr &frame,
unsigned long insn);
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 (const frame_info_ptr &next_frame);
#endif /* sparc-tdep.h */
diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c
index 8c97ce87209f..c992c8c8f6fb 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 ba9d694776f3..33da5321d81a 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,
+ const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -176,7 +176,7 @@ sparc64_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
address. */
static CORE_ADDR
-sparc64_linux_step_trap (frame_info_ptr frame, unsigned long insn)
+sparc64_linux_step_trap (const frame_info_ptr &frame, unsigned long insn)
{
/* __NR_rt_sigreturn is 101 */
if ((insn == 0x91d0206d)
@@ -306,7 +306,7 @@ sparc64_linux_get_syscall_number (struct gdbarch *gdbarch,
/* Implement the "get_longjmp_target" gdbarch method. */
static int
-sparc64_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+sparc64_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
CORE_ADDR jb_addr;
diff --git a/gdb/sparc64-netbsd-tdep.c b/gdb/sparc64-netbsd-tdep.c
index 82405f8b62ba..fe97689ae157 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)
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 7f22c4b0fc0f..3837074a9fb7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
CORE_ADDR pc;
diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
index 95db72bcbe72..7cef98bb681c 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_cache)
{
return sol2_sigtramp_p (this_frame);
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
index 39ad976eaaeb..8a90dd00d16f 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -1063,13 +1063,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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct sparc_frame_cache *cache =
@@ -1083,7 +1083,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 (const frame_info_ptr &this_frame, void **this_cache,
int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1147,7 +1147,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct sparc_frame_cache *cache =
sparc64_frame_cache (this_frame, this_cache);
@@ -1766,7 +1766,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)
+ const frame_info_ptr &this_frame)
{
switch (regnum)
{
diff --git a/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h
index 8e097f1e86ff..6fcd91ee8d35 100644
--- a/gdb/sparc64-tdep.h
+++ b/gdb/sparc64-tdep.h
@@ -131,7 +131,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);
+ const frame_info_ptr &next_frame);
extern const struct sparc_fpregmap sparc64_bsd_fpregmap;
diff --git a/gdb/stack.c b/gdb/stack.c
index ab4d52849051..23e3891a0600 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -215,14 +215,14 @@ static const gdb::option::option_def backtrace_command_option_defs[] = {
/* Prototypes for local functions. */
-static void print_frame_local_vars (frame_info_ptr frame,
+static void print_frame_local_vars (const frame_info_ptr &frame,
bool quiet,
const char *regexp, const char *t_regexp,
int num_tabs, struct ui_file *stream);
static void print_frame (struct ui_out *uiout,
const frame_print_options &opts,
- frame_info_ptr frame, int print_level,
+ const frame_info_ptr &frame, int print_level,
enum print_what print_what, int print_args,
struct symtab_and_line sal);
@@ -315,7 +315,7 @@ static last_displayed_symtab_info_type last_displayed_symtab_info;
/* See stack.h. */
bool
-frame_show_address (frame_info_ptr frame,
+frame_show_address (const frame_info_ptr &frame,
struct symtab_and_line sal)
{
/* If there is a line number, but no PC, then there is no location
@@ -338,7 +338,7 @@ frame_show_address (frame_info_ptr frame,
/* See frame.h. */
void
-print_stack_frame_to_uiout (struct ui_out *uiout, frame_info_ptr frame,
+print_stack_frame_to_uiout (struct ui_out *uiout, const frame_info_ptr &frame,
int print_level, enum print_what print_what,
int set_current_sal)
{
@@ -354,7 +354,7 @@ print_stack_frame_to_uiout (struct ui_out *uiout, frame_info_ptr frame,
source line, the actual PC is printed at the beginning. */
void
-print_stack_frame (frame_info_ptr frame, int print_level,
+print_stack_frame (const frame_info_ptr &frame, int print_level,
enum print_what print_what,
int set_current_sal)
{
@@ -382,7 +382,7 @@ print_stack_frame (frame_info_ptr frame, int print_level,
argument (not just the first nameless argument). */
static void
-print_frame_nameless_args (frame_info_ptr frame, long start, int num,
+print_frame_nameless_args (const frame_info_ptr &frame, long start, int num,
int first, struct ui_file *stream)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -504,7 +504,7 @@ print_frame_arg (const frame_print_options &fp_opts,
exception. */
void
-read_frame_local (struct symbol *sym, frame_info_ptr frame,
+read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
struct frame_arg *argp)
{
argp->sym = sym;
@@ -526,7 +526,7 @@ read_frame_local (struct symbol *sym, frame_info_ptr frame,
void
read_frame_arg (const frame_print_options &fp_opts,
- symbol *sym, frame_info_ptr frame,
+ symbol *sym, const frame_info_ptr &frame,
struct frame_arg *argp, struct frame_arg *entryargp)
{
struct value *val = NULL, *entryval = NULL;
@@ -721,7 +721,7 @@ read_frame_arg (const frame_print_options &fp_opts,
static void
print_frame_args (const frame_print_options &fp_opts,
- struct symbol *func, frame_info_ptr frame,
+ struct symbol *func, const frame_info_ptr &frame,
int num, struct ui_file *stream)
{
struct ui_out *uiout = current_uiout;
@@ -920,7 +920,7 @@ print_frame_args (const frame_print_options &fp_opts,
line is in the center of the next 'list'. */
void
-set_current_sal_from_frame (frame_info_ptr frame)
+set_current_sal_from_frame (const frame_info_ptr &frame)
{
symtab_and_line sal = find_frame_sal (frame);
if (sal.symtab != NULL)
@@ -986,7 +986,7 @@ print_frame_info_to_print_what (const char *print_frame_info)
/* Print the PC from FRAME, plus any flags, to UIOUT. */
static void
-print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, frame_info_ptr frame,
+print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, const frame_info_ptr &frame,
CORE_ADDR pc)
{
uiout->field_core_addr ("addr", gdbarch, pc);
@@ -1021,7 +1021,7 @@ get_user_print_what_frame_info (std::optional<enum print_what> *what)
static void
do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
- frame_info_ptr frame, int print_level,
+ const frame_info_ptr &frame, int print_level,
enum print_what print_what, int print_args,
int set_current_sal)
{
@@ -1189,7 +1189,7 @@ do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
void
print_frame_info (const frame_print_options &fp_opts,
- frame_info_ptr frame, int print_level,
+ const frame_info_ptr &frame, int print_level,
enum print_what print_what, int print_args,
int set_current_sal)
{
@@ -1269,7 +1269,7 @@ get_last_displayed_sal ()
corresponding to FRAME. */
gdb::unique_xmalloc_ptr<char>
-find_frame_funname (frame_info_ptr frame, enum language *funlang,
+find_frame_funname (const frame_info_ptr &frame, enum language *funlang,
struct symbol **funcp)
{
struct symbol *func;
@@ -1324,7 +1324,7 @@ find_frame_funname (frame_info_ptr frame, enum language *funlang,
static void
print_frame (struct ui_out *uiout,
const frame_print_options &fp_opts,
- frame_info_ptr frame, int print_level,
+ const frame_info_ptr &frame, int print_level,
enum print_what print_what, int print_args,
struct symtab_and_line sal)
{
@@ -1478,7 +1478,7 @@ frame_selection_by_function_completer (struct cmd_list_element *ignore,
level 1') then SELECTED_FRAME_P will be false. */
static void
-info_frame_command_core (frame_info_ptr fi, bool selected_frame_p)
+info_frame_command_core (const frame_info_ptr &fi, bool selected_frame_p)
{
struct symbol *func;
struct symtab *s;
@@ -1836,7 +1836,7 @@ trailing_outermost_frame (int count)
SELECT_FRAME. */
static void
-select_frame_command_core (frame_info_ptr fi, bool ignored)
+select_frame_command_core (const frame_info_ptr &fi, bool ignored)
{
frame_info_ptr prev_frame = get_selected_frame ();
select_frame (fi);
@@ -1849,7 +1849,7 @@ select_frame_command_core (frame_info_ptr fi, bool ignored)
reprint the current frame summary). */
static void
-frame_command_core (frame_info_ptr fi, bool ignored)
+frame_command_core (const frame_info_ptr &fi, bool ignored)
{
frame_info_ptr prev_frame = get_selected_frame ();
select_frame (fi);
@@ -1873,7 +1873,7 @@ frame_command_core (frame_info_ptr fi, bool ignored)
'frame' will all cause SELECTED_FRAME_P to be true. In all other cases
SELECTED_FRAME_P is false. */
-template <void (*FPTR) (frame_info_ptr fi, bool selected_frame_p)>
+template <void (*FPTR) (const frame_info_ptr &fi, bool selected_frame_p)>
class frame_command_helper
{
public:
@@ -2338,7 +2338,7 @@ prepare_reg (const char *regexp, std::optional<compiled_regex> *reg)
explaining why no local variables could be printed. */
static void
-print_frame_local_vars (frame_info_ptr frame,
+print_frame_local_vars (const frame_info_ptr &frame,
bool quiet,
const char *regexp, const char *t_regexp,
int num_tabs, struct ui_file *stream)
@@ -2500,7 +2500,7 @@ iterate_over_block_arg_vars (const struct block *b,
explaining why no argument variables could be printed. */
static void
-print_frame_arg_vars (frame_info_ptr frame,
+print_frame_arg_vars (const frame_info_ptr &frame,
bool quiet,
const char *regexp, const char *t_regexp,
struct ui_file *stream)
diff --git a/gdb/stack.h b/gdb/stack.h
index eb52c1d193fe..e7242c710367 100644
--- a/gdb/stack.h
+++ b/gdb/stack.h
@@ -20,7 +20,7 @@
#ifndef STACK_H
#define STACK_H
-gdb::unique_xmalloc_ptr<char> find_frame_funname (frame_info_ptr frame,
+gdb::unique_xmalloc_ptr<char> find_frame_funname (const frame_info_ptr &frame,
enum language *funlang,
struct symbol **funcp);
@@ -43,7 +43,7 @@ void get_user_print_what_frame_info (std::optional<enum print_what> *what);
/* Return true if we should display the address in addition to the location,
because we are in the middle of a statement. */
-bool frame_show_address (frame_info_ptr frame, struct symtab_and_line sal);
+bool frame_show_address (const frame_info_ptr &frame, struct symtab_and_line sal);
/* Forget the last sal we displayed. */
diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
index e5796f2ff76d..b54e4d2d10a7 100644
--- a/gdb/stap-probe.c
+++ b/gdb/stap-probe.c
@@ -151,7 +151,7 @@ class stap_probe : public probe
/* See probe.h. */
struct value *evaluate_argument (unsigned n,
- frame_info_ptr frame) override;
+ const frame_info_ptr &frame) override;
/* See probe.h. */
void compile_to_ax (struct agent_expr *aexpr,
@@ -1438,7 +1438,7 @@ stap_probe::can_evaluate_arguments () const
corresponding to it. Assertion is thrown if N does not exist. */
struct value *
-stap_probe::evaluate_argument (unsigned n, frame_info_ptr frame)
+stap_probe::evaluate_argument (unsigned n, const frame_info_ptr &frame)
{
struct stap_probe_arg *arg;
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/std-regs.c b/gdb/std-regs.c
index 8901f326c8dd..755e0c987e6e 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 (const frame_info_ptr &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 (const frame_info_ptr &frame, const void *baton)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -73,7 +73,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 (const frame_info_ptr &frame, const void *baton)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -84,7 +84,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 (const frame_info_ptr &frame, const void *baton)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
diff --git a/gdb/symtab.h b/gdb/symtab.h
index ca5a5b0f7fde..5bd63979132c 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1114,13 +1114,13 @@ struct symbol_computed_ops
FRAME may be zero. */
struct value *(*read_variable) (struct symbol * symbol,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
/* Read variable SYMBOL like read_variable at (callee) FRAME's function
entry. SYMBOL should be a function parameter, otherwise
NO_ENTRY_VALUE_ERROR will be thrown. */
struct value *(*read_variable_at_entry) (struct symbol *symbol,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
/* Find the "symbol_needs_kind" value for the given symbol. This
value determines whether reading the symbol needs memory (e.g., a
@@ -1192,7 +1192,7 @@ struct symbol_block_ops
computed with DW_AT_static_link and this method must be used to compute
the corresponding DW_AT_frame_base attribute. */
CORE_ADDR (*get_frame_base) (struct symbol *framefunc,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
/* Return the block for this function. So far, this is used to
implement function aliases. So, if this is set, then it's not
@@ -2350,7 +2350,7 @@ struct gnu_ifunc_fns
extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
-extern CORE_ADDR find_solib_trampoline_target (frame_info_ptr, CORE_ADDR);
+extern CORE_ADDR find_solib_trampoline_target (const frame_info_ptr &, CORE_ADDR);
struct symtab_and_line
{
diff --git a/gdb/tic6x-linux-tdep.c b/gdb/tic6x-linux-tdep.c
index 870ba368fda1..a9de60cf662a 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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
@@ -149,7 +149,7 @@ static struct tramp_frame tic6x_linux_rt_sigreturn_tramp_frame =
instruction to be executed. */
static CORE_ADDR
-tic6x_linux_syscall_next_pc (frame_info_ptr frame)
+tic6x_linux_syscall_next_pc (const frame_info_ptr &frame)
{
ULONGEST syscall_number = get_frame_register_unsigned (frame,
TIC6X_B0_REGNUM);
diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c
index c81f0100a27a..aa115095df79 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)
+ const frame_info_ptr &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)
+ const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &this_frame,
void **this_prologue_cache)
{
CORE_ADDR addr_in_block;
@@ -1103,7 +1103,7 @@ tic6x_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
/* This is the implementation of gdbarch method get_longjmp_target. */
static int
-tic6x_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+tic6x_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
diff --git a/gdb/tic6x-tdep.h b/gdb/tic6x-tdep.h
index 61978ea76813..886e1b8b3098 100644
--- a/gdb/tic6x-tdep.h
+++ b/gdb/tic6x-tdep.h
@@ -50,7 +50,7 @@ struct tic6x_gdbarch_tdep : gdbarch_tdep_base
{
/* Return the expected next PC if FRAME is stopped at a syscall
instruction. */
- CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
+ CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
const gdb_byte *breakpoint = nullptr; /* Breakpoint instruction. */
diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c
index efd2e9f8f23b..e0ff0fc2a86c 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,
+ const frame_info_ptr &this_frame,
struct trad_frame_cache *this_cache,
CORE_ADDR func)
{
diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c
index 8264937788f0..c25933be5585 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)
+ const frame_info_ptr &next_frame)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR next_addr;
@@ -774,7 +774,7 @@ tilegx_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
/* This is the implementation of gdbarch method get_longjmp_target. */
static int
-tilegx_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
+tilegx_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct tilegx_frame_cache *cache =
tilegx_frame_cache (this_frame, this_cache);
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 7005ca83455c..418d9ea2203a 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -206,7 +206,7 @@ set_tracepoint_num (int num)
the traceframe context (line, function, file). */
static void
-set_traceframe_context (frame_info_ptr trace_frame)
+set_traceframe_context (const frame_info_ptr &trace_frame)
{
CORE_ADDR trace_pc;
struct symbol *traceframe_fun;
diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
index 78bfb2fdd4e4..8b63927b133c 100644
--- a/gdb/trad-frame.c
+++ b/gdb/trad-frame.c
@@ -36,7 +36,7 @@ struct trad_frame_cache
};
struct trad_frame_cache *
-trad_frame_cache_zalloc (frame_info_ptr this_frame)
+trad_frame_cache_zalloc (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
+ const frame_info_ptr &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 96d2953a2674..ca8792baa17d 100644
--- a/gdb/trad-frame.h
+++ b/gdb/trad-frame.h
@@ -31,7 +31,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 (const frame_info_ptr &);
/* This frame's ID. */
void trad_frame_set_id (struct trad_frame_cache *this_trad_cache,
@@ -59,7 +59,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,
+ const frame_info_ptr &this_frame,
int regnum);
/* Describes the kind of encoding a stored register has. */
@@ -194,12 +194,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 (const frame_info_ptr &);
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 (const frame_info_ptr &this_frame,
trad_frame_saved_reg this_saved_regs[],
int regnum);
diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c
index 51abd347db42..0e730e66b583 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
+ const frame_info_ptr &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,
+ const frame_info_ptr &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 36185c1f4e0b..d9e54f5981a2 100644
--- a/gdb/tramp-frame.h
+++ b/gdb/tramp-frame.h
@@ -66,7 +66,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,
+ const frame_info_ptr &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 +74,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,
+ const frame_info_ptr &this_frame,
CORE_ADDR *pc);
/* Given the current frame in THIS_FRAME and a frame cache in FRAME_CACHE,
diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
index 45c60db99203..5dc27c32daac 100644
--- a/gdb/tui/tui-disasm.c
+++ b/gdb/tui/tui-disasm.c
@@ -490,7 +490,7 @@ tui_disasm_window::addr_is_displayed (CORE_ADDR addr) const
}
void
-tui_disasm_window::maybe_update (frame_info_ptr fi, symtab_and_line sal)
+tui_disasm_window::maybe_update (const frame_info_ptr &fi, symtab_and_line sal)
{
CORE_ADDR low;
diff --git a/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h
index 9c4eabbb0929..0aef091069b7 100644
--- a/gdb/tui/tui-disasm.h
+++ b/gdb/tui/tui-disasm.h
@@ -41,7 +41,7 @@ struct tui_disasm_window : public tui_source_window_base
bool location_matches_p (struct bp_location *loc, int line_no) override;
- void maybe_update (frame_info_ptr fi, symtab_and_line sal) override;
+ void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) override;
void erase_source_content () override
{
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
index 28d0b742ed76..289a25996889 100644
--- a/gdb/tui/tui-hooks.c
+++ b/gdb/tui/tui-hooks.c
@@ -66,7 +66,7 @@ tui_all_objfiles_removed (program_space *pspace)
/* Observer for the register_changed notification. */
static void
-tui_register_changed (frame_info_ptr frame, int regno)
+tui_register_changed (const frame_info_ptr &frame, int regno)
{
frame_info_ptr fi;
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index 504aed4b81f9..e7c1839656c8 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -85,7 +85,7 @@ tab_expansion_file::write (const char *buf, long length_buf)
representation of it. */
static std::string
-tui_register_format (frame_info_ptr frame, int regnum)
+tui_register_format (const frame_info_ptr &frame, int regnum)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -406,7 +406,7 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
given a particular frame. If the values have changed, they are
updated with the new value and highlighted. */
void
-tui_data_window::check_register_values (frame_info_ptr frame)
+tui_data_window::check_register_values (const frame_info_ptr &frame)
{
if (frame == nullptr)
set_register_group (nullptr);
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 9d9cae40fe07..07b951316b6b 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -74,7 +74,7 @@ struct tui_data_window : public tui_win_info
return DATA_NAME;
}
- void check_register_values (frame_info_ptr frame);
+ void check_register_values (const frame_info_ptr &frame);
void set_register_group (const reggroup *group);
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 635cb2f35a65..fa956b29a195 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -199,7 +199,7 @@ tui_source_window::line_is_displayed (int line) const
}
void
-tui_source_window::maybe_update (frame_info_ptr fi, symtab_and_line sal)
+tui_source_window::maybe_update (const frame_info_ptr &fi, symtab_and_line sal)
{
int start_line = (sal.line - ((height - box_size ()) / 2)) + 1;
if (start_line <= 0)
diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
index 0bf43b663e73..6d4ad4e39c27 100644
--- a/gdb/tui/tui-source.h
+++ b/gdb/tui/tui-source.h
@@ -46,7 +46,7 @@ struct tui_source_window : public tui_source_window_base
bool showing_source_p (const char *filename) const;
- void maybe_update (frame_info_ptr fi, symtab_and_line sal) override;
+ void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) override;
void erase_source_content () override
{
diff --git a/gdb/tui/tui-status.c b/gdb/tui/tui-status.c
index df4675fe5dfb..aac391d3babc 100644
--- a/gdb/tui/tui-status.c
+++ b/gdb/tui/tui-status.c
@@ -213,7 +213,7 @@ tui_status_window::make_status_line () const
name is demangled if demangling is turned on. Returns a pointer to
a static area holding the result. */
static char*
-tui_get_function_from_frame (frame_info_ptr fi)
+tui_get_function_from_frame (const frame_info_ptr &fi)
{
static char name[256];
string_file stream;
@@ -267,7 +267,7 @@ tui_status_window::rerender ()
refresh. */
void
-tui_show_frame_info (frame_info_ptr fi)
+tui_show_frame_info (const frame_info_ptr &fi)
{
bool status_changed_p;
diff --git a/gdb/tui/tui-status.h b/gdb/tui/tui-status.h
index efef5375e86e..0af446641042 100644
--- a/gdb/tui/tui-status.h
+++ b/gdb/tui/tui-status.h
@@ -51,6 +51,6 @@ struct tui_status_window
};
extern void tui_show_status_content (void);
-extern void tui_show_frame_info (frame_info_ptr);
+extern void tui_show_frame_info (const frame_info_ptr &);
#endif /* TUI_TUI_STATUS_H */
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index 628fc22c03ca..646597306f26 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -159,7 +159,7 @@ struct tui_source_window_base : public tui_win_info
/* Update the window to display the given location. Does nothing if
the location is already displayed. */
- virtual void maybe_update (frame_info_ptr fi, symtab_and_line sal) = 0;
+ virtual void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) = 0;
void update_source_window_as_is (struct gdbarch *gdbarch,
const struct symtab_and_line &sal);
diff --git a/gdb/unittests/frame_info_ptr-selftests.c b/gdb/unittests/frame_info_ptr-selftests.c
index f0981b836dd3..f09d1c8ba015 100644
--- a/gdb/unittests/frame_info_ptr-selftests.c
+++ b/gdb/unittests/frame_info_ptr-selftests.c
@@ -36,7 +36,7 @@ validate_user_created_frame (frame_id id)
}
static frame_info_ptr
-user_created_frame_callee (frame_info_ptr frame)
+user_created_frame_callee (const frame_info_ptr &frame)
{
validate_user_created_frame (get_frame_id (frame));
diff --git a/gdb/user-regs.c b/gdb/user-regs.c
index 61c8f8bd2c02..d1b510a79278 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) (const frame_info_ptr &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, const frame_info_ptr &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 cbe0cded2d5e..baa3581a0baf 100644
--- a/gdb/user-regs.h
+++ b/gdb/user-regs.h
@@ -56,9 +56,9 @@ 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) (const frame_info_ptr &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, const frame_info_ptr &frame);
/* 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 5b22ee2f4c42..4c1fd383a84f 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
diff --git a/gdb/valops.c b/gdb/valops.c
index 399d0f109e14..be907440a59b 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -976,7 +976,7 @@ value_one (struct type *type)
e.g. in case the type is a variable length array. */
static struct value *
-get_value_at (struct type *type, CORE_ADDR addr, frame_info_ptr frame,
+get_value_at (struct type *type, CORE_ADDR addr, const frame_info_ptr &frame,
int lazy)
{
struct value *val;
@@ -1029,7 +1029,7 @@ value_at_non_lval (struct type *type, CORE_ADDR addr)
e.g. in case the type is a variable length array. */
struct value *
-value_at_lazy (struct type *type, CORE_ADDR addr, frame_info_ptr frame)
+value_at_lazy (struct type *type, CORE_ADDR addr, const frame_info_ptr &frame)
{
return get_value_at (type, addr, frame, 1);
}
diff --git a/gdb/value.c b/gdb/value.c
index bea34e556a60..c7e940badb97 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -962,11 +962,11 @@ value::allocate (struct type *type)
/* See value.h */
value *
-value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
- struct type *type)
+value::allocate_register_lazy (const frame_info_ptr &initial_next_frame,
+ int regnum, struct type *type)
{
if (type == nullptr)
- type = register_type (frame_unwind_arch (next_frame), regnum);
+ type = register_type (frame_unwind_arch (initial_next_frame), regnum);
value *result = value::allocate_lazy (type);
@@ -978,6 +978,7 @@ value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
NEXT_FRAME will not have a valid frame id yet. Find the next non-inline
frame (possibly the sentinel frame). This is where registers are unwound
from anyway. */
+ frame_info_ptr next_frame = initial_next_frame;
while (get_frame_type (next_frame) == INLINE_FRAME)
next_frame = get_next_frame_sentinel_okay (next_frame);
@@ -992,7 +993,7 @@ value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
/* See value.h */
value *
-value::allocate_register (frame_info_ptr next_frame, int regnum,
+value::allocate_register (const frame_info_ptr &next_frame, int regnum,
struct type *type)
{
value *result = value::allocate_register_lazy (next_frame, regnum, type);
@@ -3598,7 +3599,7 @@ struct value *
value_from_contents_and_address (struct type *type,
const gdb_byte *valaddr,
CORE_ADDR address,
- frame_info_ptr frame)
+ const frame_info_ptr &frame)
{
gdb::array_view<const gdb_byte> view;
if (valaddr != nullptr)
@@ -4070,7 +4071,7 @@ value::fetch_lazy ()
/* See value.h. */
value *
-pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
+pseudo_from_raw_part (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_num, int raw_offset)
{
value *pseudo_reg_val
@@ -4084,7 +4085,7 @@ pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
/* See value.h. */
void
-pseudo_to_raw_part (frame_info_ptr next_frame,
+pseudo_to_raw_part (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_num, int raw_offset)
{
@@ -4101,7 +4102,7 @@ pseudo_to_raw_part (frame_info_ptr next_frame,
/* See value.h. */
value *
-pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
+pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_1_num, int raw_reg_2_num)
{
value *pseudo_reg_val
@@ -4126,7 +4127,7 @@ pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
/* See value.h. */
void
-pseudo_to_concat_raw (frame_info_ptr next_frame,
+pseudo_to_concat_raw (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_1_num, int raw_reg_2_num)
{
@@ -4149,7 +4150,7 @@ pseudo_to_concat_raw (frame_info_ptr next_frame,
/* See value.h. */
value *
-pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
+pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_1_num, int raw_reg_2_num,
int raw_reg_3_num)
{
@@ -4180,7 +4181,7 @@ pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
/* See value.h. */
void
-pseudo_to_concat_raw (frame_info_ptr next_frame,
+pseudo_to_concat_raw (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_1_num, int raw_reg_2_num, int raw_reg_3_num)
{
diff --git a/gdb/value.h b/gdb/value.h
index c7d3866038ab..e8d3c9fd907a 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -162,13 +162,14 @@ struct value
/* Allocate a lazy value representing register REGNUM in the frame previous
to NEXT_FRAME. If TYPE is non-nullptr, use it as the value type.
Otherwise, use `register_type` to obtain the type. */
- static struct value *allocate_register_lazy (frame_info_ptr next_frame,
- int regnum, type *type = nullptr);
+ static struct value *allocate_register_lazy (const frame_info_ptr &next_frame,
+ int regnum,
+ type *type = nullptr);
/* Same as `allocate_register_lazy`, but make the value non-lazy.
The caller is responsible for filling the value's contents. */
- static struct value *allocate_register (frame_info_ptr next_frame,
+ static struct value *allocate_register (const frame_info_ptr &next_frame,
int regnum, type *type = nullptr);
/* Create a computed lvalue, with type TYPE, function pointers
@@ -1110,7 +1111,7 @@ extern struct value *value_at (struct type *type, CORE_ADDR addr);
properties. */
extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr,
- frame_info_ptr frame = nullptr);
+ const frame_info_ptr &frame = nullptr);
/* Like value_at, but ensures that the result is marked not_lval.
This can be important if the memory is "volatile". */
@@ -1120,7 +1121,7 @@ extern struct value *value_from_contents_and_address_unresolved
(struct type *, const gdb_byte *, CORE_ADDR);
extern struct value *value_from_contents_and_address
(struct type *, const gdb_byte *, CORE_ADDR,
- frame_info_ptr frame = nullptr);
+ const frame_info_ptr &frame = nullptr);
extern struct value *value_from_contents (struct type *, const gdb_byte *);
extern value *default_value_from_register (gdbarch *gdbarch, type *type,
@@ -1128,10 +1129,10 @@ extern value *default_value_from_register (gdbarch *gdbarch, type *type,
const frame_info_ptr &this_frame);
extern struct value *value_from_register (struct type *type, int regnum,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
extern CORE_ADDR address_from_register (int regnum,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
extern struct value *value_of_variable (struct symbol *var,
const struct block *b);
@@ -1142,11 +1143,11 @@ extern struct value *address_of_variable (struct symbol *var,
/* Return a value with the contents of register REGNUM as found in the frame
previous to NEXT_FRAME. */
-extern value *value_of_register (int regnum, frame_info_ptr next_frame);
+extern value *value_of_register (int regnum, const frame_info_ptr &next_frame);
/* Same as the above, but the value is not fetched. */
-extern value *value_of_register_lazy (frame_info_ptr next_frame, int regnum);
+extern value *value_of_register_lazy (const frame_info_ptr &next_frame, int regnum);
/* Return the symbol's reading requirement. */
@@ -1159,7 +1160,7 @@ extern int symbol_read_needs_frame (struct symbol *);
extern struct value *read_var_value (struct symbol *var,
const struct block *var_block,
- frame_info_ptr frame);
+ const frame_info_ptr &frame);
extern struct value *allocate_repeat_value (struct type *type, int count);
@@ -1556,7 +1557,7 @@ extern int val_print_string (struct type *elttype, const char *encoding,
extern void print_variable_and_value (const char *name,
struct symbol *var,
- frame_info_ptr frame,
+ const frame_info_ptr &frame,
struct ui_file *stream,
int indent);
@@ -1667,13 +1668,13 @@ struct scoped_array_length_limiting
The size of the pseudo register specifies how many bytes to use. The
offset plus the size must not overflow the raw register's size. */
-value *pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
+value *pseudo_from_raw_part (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_num, int raw_offset);
/* Write PSEUDO_BUF, the contents of a pseudo register, to part of raw register
RAW_REG_NUM starting at RAW_OFFSET. */
-void pseudo_to_raw_part (frame_info_ptr next_frame,
+void pseudo_to_raw_part (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_num, int raw_offset);
@@ -1683,26 +1684,26 @@ void pseudo_to_raw_part (frame_info_ptr next_frame,
The sum of the sizes of raw registers must be equal to the size of the
pseudo register. */
-value *pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
+value *pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_1_num, int raw_reg_2_num);
/* Write PSEUDO_BUF, the contents of a pseudo register, to the two raw registers
RAW_REG_1_NUM and RAW_REG_2_NUM. */
-void pseudo_to_concat_raw (frame_info_ptr next_frame,
+void pseudo_to_concat_raw (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_1_num, int raw_reg_2_num);
/* Same as the above, but with three raw registers. */
-value *pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
+value *pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
int raw_reg_1_num, int raw_reg_2_num,
int raw_reg_3_num);
/* Write PSEUDO_BUF, the contents of a pseudo register, to the three raw
registers RAW_REG_1_NUM, RAW_REG_2_NUM and RAW_REG_3_NUM. */
-void pseudo_to_concat_raw (frame_info_ptr next_frame,
+void pseudo_to_concat_raw (const frame_info_ptr &next_frame,
gdb::array_view<const gdb_byte> pseudo_buf,
int raw_reg_1_num, int raw_reg_2_num,
int raw_reg_3_num);
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 979dc1786e0a..125f3423be57 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
{
return get_frame_register_unsigned (this_frame, VAX_AP_REGNUM);
}
@@ -423,7 +423,7 @@ static const struct frame_base vax_frame_base =
/* Return number of arguments for FRAME. */
static int
-vax_frame_num_args (frame_info_ptr frame)
+vax_frame_num_args (const frame_info_ptr &frame)
{
CORE_ADDR args;
diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
index b19c9491fd0f..16c6d41a961b 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)
+ const frame_info_ptr &this_frame)
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
CORE_ADDR next_addr;
@@ -581,7 +581,7 @@ xstormy16_find_jmp_table_entry (struct gdbarch *gdbarch, CORE_ADDR faddr)
}
static CORE_ADDR
-xstormy16_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
+xstormy16_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
CORE_ADDR tmp = xstormy16_resolve_jmp_table_entry (gdbarch, pc);
@@ -653,7 +653,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 (const frame_info_ptr &this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct xstormy16_frame_cache *cache;
@@ -689,7 +689,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 (const frame_info_ptr &this_frame,
void **this_cache, int regnum)
{
struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
@@ -707,7 +707,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 (const frame_info_ptr &this_frame, void **this_cache,
struct frame_id *this_id)
{
struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
@@ -721,7 +721,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 (const frame_info_ptr &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 2563d65f91e2..d116b34fd819 100644
--- a/gdb/xtensa-tdep.c
+++ b/gdb/xtensa-tdep.c
@@ -1026,7 +1026,7 @@ 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, const frame_info_ptr &next_frame)
{
gdb_byte buf[8];
CORE_ADDR pc;
@@ -1044,7 +1044,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, const frame_info_ptr &this_frame)
{
CORE_ADDR pc, fp;
xtensa_gdbarch_tdep *tdep = gdbarch_tdep<xtensa_gdbarch_tdep> (gdbarch);
@@ -1217,16 +1217,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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
{
xtensa_frame_cache_t *cache;
CORE_ADDR ra, wb, ws, pc, sp, ps;
@@ -1392,7 +1392,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 (const frame_info_ptr &this_frame,
void **this_cache,
struct frame_id *this_id)
{
@@ -1406,7 +1406,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 (const frame_info_ptr &this_frame,
void **this_cache,
int regnum)
{
@@ -1509,7 +1509,7 @@ xtensa_unwind =
};
static CORE_ADDR
-xtensa_frame_base_address (frame_info_ptr this_frame, void **this_cache)
+xtensa_frame_base_address (const frame_info_ptr &this_frame, void **this_cache)
{
struct xtensa_frame_cache *cache =
xtensa_frame_cache (this_frame, this_cache);
@@ -2543,7 +2543,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 (const frame_info_ptr &this_frame,
xtensa_frame_cache_t *cache, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2892,7 +2892,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 (const frame_info_ptr &this_frame,
xtensa_frame_cache_t *cache,
CORE_ADDR pc)
{
diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c
index f03eafdc6f72..f2d000f53030 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
void **this_prologue_cache, int regnum)
{
struct z80_unwind_cache *info
base-commit: b47cef7ca8a2fa55acdab367c87c1ea076aec4b2
--
2.43.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gdb: pass frames as `const frame_info_ptr &`
2024-02-19 18:07 [PATCH] gdb: pass frames as `const frame_info_ptr &` Simon Marchi
@ 2024-02-20 11:24 ` Andrew Burgess
2024-02-20 15:44 ` Simon Marchi
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Burgess @ 2024-02-20 11:24 UTC (permalink / raw)
To: Simon Marchi, gdb-patches; +Cc: Simon Marchi
Thank you for this!
I've wanted this change since frame_info_ptr was first added, but never
got around to actually writing the patch.
I haven't looked through every line of this, but I did flick through,
and what I saw looks good. I also applied the patch and did a build
with no issues, except...
... you've introduced trailing whitespace in 5 places! I've marked them
all in the patch below.
I'd be happy to see this merged.
Approved-By: Andrew Burgess <aburgess@redhat.com>
Thanks,
Andrew
Simon Marchi <simon.marchi@polymtl.ca> writes:
> From: Simon Marchi <simon.marchi@efficios.com>
>
> We currently pass frames to function by value, as `frame_info_ptr`.
> This is somewhat expensive:
>
> - the size of `frame_info_ptr` is 64 bytes, which is a bit big to pass
> by value
> - the constructors and destructor link/unlink the object in the global
> `frame_info_ptr::frame_list` list. This is an `intrusive_list`, so
> it's not so bad: it's just assigning a few points, there's no memory
> allocation as if it was `std::list`, but still it's useless to do
> that over and over.
>
> As suggested by Tom Tromey, change many function signatures to accept
> `const frame_info_ptr &` instead of `frame_info_ptr`.
>
> Some functions reassign their `frame_info_ptr` parameter, like:
>
> void
> the_func (frame_info_ptr frame)
> {
> for (; frame != nullptr; frame = get_prev_frame (frame))
> {
> ...
> }
> }
>
> I wondered what to do about them, do I leave them as-is or change them
> (and need to introduce a separate local variable that can be
> re-assigned). I opted for the later for consistency. It might not be
> clear why some functions take `const frame_info_ptr &` while others take
> `frame_info_ptr`. Also, if a function took a `frame_info_ptr` because
> it did re-assign its parameter, I doubt that we would think to change it
> to `const frame_info_ptr &` should the implementation change such that
> it doesn't need to take `frame_info_ptr` anymore. It seems better to
> have a simple rule and apply it everywhere.
>
> Change-Id: I59d10addef687d157f82ccf4d54f5dde9a963fd0
> ---
> gdb/aarch64-fbsd-tdep.c | 6 +-
> gdb/aarch64-linux-tdep.c | 8 +-
> gdb/aarch64-tdep.c | 46 +++---
> gdb/ada-lang.c | 10 +-
> gdb/ada-lang.h | 2 +-
> 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 | 22 +--
> 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 | 42 +++---
> gdb/amd64-windows-tdep.c | 12 +-
> gdb/amdgpu-tdep.c | 8 +-
> gdb/arc-linux-tdep.c | 4 +-
> gdb/arc-tdep.c | 20 +--
> gdb/arc-tdep.h | 4 +-
> gdb/arch-utils.c | 9 +-
> gdb/arch-utils.h | 8 +-
> gdb/arm-fbsd-tdep.c | 2 +-
> gdb/arm-linux-tdep.c | 12 +-
> gdb/arm-obsd-tdep.c | 2 +-
> gdb/arm-tdep.c | 74 +++++-----
> gdb/arm-tdep.h | 4 +-
> gdb/arm-wince-tdep.c | 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/cp-abi.c | 2 +-
> gdb/cp-abi.h | 4 +-
> gdb/cris-tdep.c | 36 ++---
> gdb/csky-linux-tdep.c | 4 +-
> gdb/csky-tdep.c | 22 +--
> gdb/dtrace-probe.c | 4 +-
> gdb/dummy-frame.c | 8 +-
> gdb/dummy-frame.h | 2 +-
> gdb/dwarf2/ada-imported.c | 2 +-
> gdb/dwarf2/call-site.h | 4 +-
> gdb/dwarf2/expr.c | 8 +-
> gdb/dwarf2/expr.h | 4 +-
> gdb/dwarf2/frame-tailcall.c | 23 +--
> gdb/dwarf2/frame-tailcall.h | 4 +-
> gdb/dwarf2/frame.c | 40 +++---
> gdb/dwarf2/frame.h | 25 ++--
> gdb/dwarf2/loc.c | 51 +++----
> gdb/dwarf2/loc.h | 26 ++--
> gdb/extension-priv.h | 2 +-
> gdb/extension.c | 2 +-
> gdb/extension.h | 2 +-
> gdb/findvar.c | 24 ++--
> gdb/frame-base.c | 8 +-
> gdb/frame-base.h | 10 +-
> gdb/frame-unwind.c | 24 ++--
> gdb/frame-unwind.h | 51 ++++---
> gdb/frame.c | 171 ++++++++++++-----------
> gdb/frame.h | 142 +++++++++----------
> gdb/frv-linux-tdep.c | 10 +-
> gdb/frv-tdep.c | 10 +-
> gdb/ft32-tdep.c | 8 +-
> gdb/gdbarch-gen.h | 72 +++++-----
> gdb/gdbarch.c | 36 ++---
> gdb/gdbarch_components.py | 36 ++---
> gdb/gnu-v3-abi.c | 2 +-
> gdb/h8300-tdep.c | 12 +-
> gdb/hppa-bsd-tdep.c | 2 +-
> gdb/hppa-linux-tdep.c | 8 +-
> gdb/hppa-netbsd-tdep.c | 4 +-
> gdb/hppa-tdep.c | 32 ++---
> gdb/hppa-tdep.h | 8 +-
> 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 | 64 ++++-----
> gdb/i386-tdep.h | 12 +-
> gdb/i386-windows-tdep.c | 2 +-
> gdb/i387-tdep.c | 6 +-
> gdb/i387-tdep.h | 6 +-
> gdb/ia64-libunwind-tdep.c | 10 +-
> gdb/ia64-libunwind-tdep.h | 8 +-
> gdb/ia64-tdep.c | 44 +++---
> gdb/ia64-tdep.h | 2 +-
> gdb/infcmd.c | 11 +-
> gdb/inferior.h | 4 +-
> gdb/infrun.c | 22 +--
> gdb/infrun.h | 2 +-
> gdb/inline-frame.c | 8 +-
> gdb/inline-frame.h | 2 +-
> gdb/iq2000-tdep.c | 10 +-
> gdb/jit.c | 6 +-
> gdb/language.h | 2 +-
> gdb/lm32-tdep.c | 8 +-
> gdb/loongarch-linux-tdep.c | 4 +-
> gdb/loongarch-tdep.c | 10 +-
> gdb/loongarch-tdep.h | 2 +-
> gdb/m32c-tdep.c | 10 +-
> gdb/m32r-linux-tdep.c | 14 +-
> gdb/m32r-tdep.c | 8 +-
> gdb/m68hc11-tdep.c | 16 +--
> gdb/m68k-linux-tdep.c | 12 +-
> gdb/m68k-tdep.c | 18 +--
> gdb/mep-tdep.c | 8 +-
> gdb/mi/mi-cmd-stack.c | 6 +-
> gdb/mi/mi-main.c | 4 +-
> gdb/microblaze-linux-tdep.c | 4 +-
> gdb/microblaze-tdep.c | 10 +-
> gdb/minsyms.c | 2 +-
> gdb/mips-fbsd-tdep.c | 4 +-
> gdb/mips-linux-tdep.c | 22 +--
> gdb/mips-netbsd-tdep.c | 2 +-
> gdb/mips-sde-tdep.c | 12 +-
> gdb/mips-tdep.c | 96 ++++++-------
> gdb/mips-tdep.h | 2 +-
> gdb/mips64-obsd-tdep.c | 2 +-
> gdb/mn10300-linux-tdep.c | 4 +-
> gdb/mn10300-tdep.c | 8 +-
> gdb/moxie-tdep.c | 8 +-
> gdb/msp430-tdep.c | 10 +-
> gdb/nds32-tdep.c | 20 +--
> gdb/nios2-linux-tdep.c | 4 +-
> gdb/nios2-tdep.c | 22 +--
> gdb/nios2-tdep.h | 2 +-
> gdb/observable.h | 2 +-
> gdb/or1k-linux-tdep.c | 4 +-
> gdb/or1k-tdep.c | 12 +-
> gdb/ppc-fbsd-tdep.c | 8 +-
> gdb/ppc-linux-tdep.c | 12 +-
> gdb/ppc-netbsd-tdep.c | 2 +-
> gdb/ppc-obsd-tdep.c | 8 +-
> gdb/ppc-sysv-tdep.c | 3 +-
> gdb/ppc-tdep.h | 4 +-
> gdb/ppc64-tdep.c | 20 +--
> gdb/ppc64-tdep.h | 2 +-
> gdb/printcmd.c | 2 +-
> gdb/probe.c | 2 +-
> gdb/probe.h | 4 +-
> gdb/python/py-event.h | 2 +-
> gdb/python/py-frame.c | 2 +-
> gdb/python/py-framefilter.c | 14 +-
> gdb/python/py-inferior.c | 2 +-
> gdb/python/py-infevents.c | 4 +-
> gdb/python/py-unwind.c | 6 +-
> gdb/python/python-internal.h | 4 +-
> gdb/record-btrace.c | 14 +-
> gdb/riscv-fbsd-tdep.c | 2 +-
> gdb/riscv-linux-tdep.c | 6 +-
> gdb/riscv-tdep.c | 12 +-
> gdb/riscv-tdep.h | 2 +-
> gdb/rl78-tdep.c | 12 +-
> gdb/rs6000-aix-tdep.c | 8 +-
> gdb/rs6000-tdep.c | 34 ++---
> gdb/rx-tdep.c | 16 +--
> gdb/s12z-tdep.c | 10 +-
> gdb/s390-linux-tdep.c | 8 +-
> gdb/s390-tdep.c | 36 ++---
> 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 | 6 +-
> gdb/sparc-netbsd-tdep.c | 12 +-
> gdb/sparc-obsd-tdep.c | 8 +-
> gdb/sparc-sol2-tdep.c | 8 +-
> gdb/sparc-tdep.c | 18 +--
> gdb/sparc-tdep.h | 10 +-
> gdb/sparc64-fbsd-tdep.c | 8 +-
> gdb/sparc64-linux-tdep.c | 8 +-
> 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 | 2 +-
> gdb/stack.c | 42 +++---
> gdb/stack.h | 4 +-
> gdb/stap-probe.c | 4 +-
> gdb/std-regs.c | 8 +-
> gdb/symtab.h | 8 +-
> gdb/tic6x-linux-tdep.c | 4 +-
> gdb/tic6x-tdep.c | 22 +--
> gdb/tic6x-tdep.h | 2 +-
> gdb/tilegx-linux-tdep.c | 2 +-
> gdb/tilegx-tdep.c | 12 +-
> gdb/tracepoint.c | 2 +-
> gdb/trad-frame.c | 8 +-
> gdb/trad-frame.h | 8 +-
> gdb/tramp-frame.c | 10 +-
> gdb/tramp-frame.h | 4 +-
> gdb/tui/tui-disasm.c | 2 +-
> gdb/tui/tui-disasm.h | 2 +-
> gdb/tui/tui-hooks.c | 2 +-
> gdb/tui/tui-regs.c | 4 +-
> gdb/tui/tui-regs.h | 2 +-
> gdb/tui/tui-source.c | 2 +-
> gdb/tui/tui-source.h | 2 +-
> gdb/tui/tui-status.c | 4 +-
> gdb/tui/tui-status.h | 2 +-
> gdb/tui/tui-winsource.h | 2 +-
> gdb/unittests/frame_info_ptr-selftests.c | 2 +-
> gdb/user-regs.c | 4 +-
> gdb/user-regs.h | 4 +-
> gdb/v850-tdep.c | 10 +-
> gdb/valops.c | 4 +-
> gdb/value.c | 23 +--
> gdb/value.h | 35 ++---
> gdb/vax-tdep.c | 14 +-
> gdb/xstormy16-tdep.c | 12 +-
> gdb/xtensa-tdep.c | 20 +--
> gdb/z80-tdep.c | 6 +-
> 224 files changed, 1351 insertions(+), 1339 deletions(-)
>
> diff --git a/gdb/aarch64-fbsd-tdep.c b/gdb/aarch64-fbsd-tdep.c
> index 2b043c0e7350..44ca6c90c818 100644
> --- a/gdb/aarch64-fbsd-tdep.c
> +++ b/gdb/aarch64-fbsd-tdep.c
> @@ -88,9 +88,9 @@ 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,
> - struct trad_frame_cache *this_cache,
> - CORE_ADDR func)
> + const frame_info_ptr &this_frame,
> + struct trad_frame_cache *this_cache,
> + CORE_ADDR func)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c
> index 7812ec5b7a1e..4ebc173a0a00 100644
> --- a/gdb/aarch64-linux-tdep.c
> +++ b/gdb/aarch64-linux-tdep.c
> @@ -381,8 +381,8 @@ aarch64_linux_restore_vregs (struct gdbarch *gdbarch,
> SIGNAL_FRAME. */
>
> static void
> -aarch64_linux_read_signal_frame_info (frame_info_ptr this_frame,
> - struct aarch64_linux_sigframe &signal_frame)
> +aarch64_linux_read_signal_frame_info (const frame_info_ptr &this_frame,
> + aarch64_linux_sigframe &signal_frame)
> {
> signal_frame.sp = get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
> signal_frame.sigcontext_address
> @@ -570,7 +570,7 @@ aarch64_linux_read_signal_frame_info (frame_info_ptr this_frame,
>
> static void
> aarch64_linux_sigframe_init (const struct tramp_frame *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -704,7 +704,7 @@ aarch64_linux_sigframe_init (const struct tramp_frame *self,
> /* Implements the "prev_arch" method of struct tramp_frame. */
>
> static struct gdbarch *
> -aarch64_linux_sigframe_prev_arch (frame_info_ptr this_frame,
> +aarch64_linux_sigframe_prev_arch (const frame_info_ptr &this_frame,
> void **frame_cache)
> {
> struct trad_frame_cache *cache
> diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c
> index b97e2153e14f..d1d5486f90dd 100644
> --- a/gdb/aarch64-tdep.c
> +++ b/gdb/aarch64-tdep.c
> @@ -268,7 +268,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)
> + const frame_info_ptr &this_frame, CORE_ADDR addr)
> {
> if (tdep->has_pauth ()
> && frame_unwind_register_unsigned (this_frame,
> @@ -298,7 +298,7 @@ aarch64_frame_unmask_lr (aarch64_gdbarch_tdep *tdep,
> /* Implement the "get_pc_address_flags" gdbarch method. */
>
> static std::string
> -aarch64_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
> +aarch64_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> if (pc != 0 && get_frame_pc_masked (frame))
> return "PAC";
> @@ -995,7 +995,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 (const frame_info_ptr &this_frame,
> struct aarch64_prologue_cache *cache)
> {
> CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
> @@ -1049,7 +1049,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 (const frame_info_ptr &this_frame,
> struct aarch64_prologue_cache *cache)
> {
> CORE_ADDR unwound_fp;
> @@ -1087,7 +1087,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct aarch64_prologue_cache *cache;
>
> @@ -1114,7 +1114,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct aarch64_prologue_cache *cache
> @@ -1140,7 +1140,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct aarch64_prologue_cache *cache
> @@ -1155,7 +1155,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 (const frame_info_ptr &this_frame,
> void **this_cache, int prev_regnum)
> {
> struct aarch64_prologue_cache *cache
> @@ -1221,7 +1221,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct aarch64_prologue_cache *cache;
>
> @@ -1251,7 +1251,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct aarch64_prologue_cache *cache
> @@ -1266,7 +1266,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct aarch64_prologue_cache *cache
> @@ -1282,7 +1282,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block;
> @@ -1313,7 +1313,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct aarch64_prologue_cache *cache
> = aarch64_make_prologue_cache (this_frame, this_cache);
> @@ -1334,7 +1334,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> gdbarch *arch = get_frame_arch (this_frame);
> @@ -1361,7 +1361,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)
> + const frame_info_ptr &this_frame)
> {
> aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
>
> @@ -2780,7 +2780,7 @@ aarch64_return_value (struct gdbarch *gdbarch, struct value *func_value,
> /* Implement the "get_longjmp_target" gdbarch method. */
>
> static int
> -aarch64_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +aarch64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> CORE_ADDR jb_addr;
> gdb_byte buf[X_REGISTER_SIZE];
> @@ -3105,7 +3105,7 @@ aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
> /* Helper for aarch64_pseudo_read_value. */
>
> static value *
> -aarch64_pseudo_read_value_1 (frame_info_ptr next_frame,
> +aarch64_pseudo_read_value_1 (const frame_info_ptr &next_frame,
> const int pseudo_reg_num, int raw_regnum_offset)
> {
> unsigned v_regnum = AARCH64_V0_REGNUM + raw_regnum_offset;
> @@ -3197,7 +3197,7 @@ aarch64_za_offsets_from_regnum (struct gdbarch *gdbarch, int regnum)
> /* Given REGNUM, a SME pseudo-register number, return its value in RESULT. */
>
> static value *
> -aarch64_sme_pseudo_register_read (gdbarch *gdbarch, frame_info_ptr next_frame,
> +aarch64_sme_pseudo_register_read (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num)
> {
> aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
> @@ -3231,7 +3231,7 @@ aarch64_sme_pseudo_register_read (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* Implement the "pseudo_register_read_value" gdbarch method. */
>
> static value *
> -aarch64_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +aarch64_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num)
> {
> aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
> @@ -3296,7 +3296,7 @@ aarch64_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* Helper for aarch64_pseudo_write. */
>
> static void
> -aarch64_pseudo_write_1 (gdbarch *gdbarch, frame_info_ptr next_frame,
> +aarch64_pseudo_write_1 (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int regnum_offset,
> gdb::array_view<const gdb_byte> buf)
> {
> @@ -3322,7 +3322,7 @@ aarch64_pseudo_write_1 (gdbarch *gdbarch, frame_info_ptr next_frame,
> pseudo-register. */
>
> static void
> -aarch64_sme_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +aarch64_sme_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int regnum,
> gdb::array_view<const gdb_byte> data)
> {
> @@ -3364,7 +3364,7 @@ aarch64_sme_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* Implement the "pseudo_register_write" gdbarch method. */
>
> static void
> -aarch64_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +aarch64_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num,
> gdb::array_view<const gdb_byte> buf)
> {
> @@ -3437,7 +3437,7 @@ aarch64_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* 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 (const frame_info_ptr &frame, const void *baton)
> {
> const int *reg_p = (const int *) baton;
>
> diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
> index a3fd695e0034..3f3985400104 100644
> --- a/gdb/ada-lang.c
> +++ b/gdb/ada-lang.c
> @@ -11720,7 +11720,7 @@ ada_exception_support_info_sniffer (void)
> to most users. */
>
> static int
> -is_known_support_routine (frame_info_ptr frame)
> +is_known_support_routine (const frame_info_ptr &frame)
> {
> enum language func_lang;
> int i;
> @@ -11779,9 +11779,9 @@ is_known_support_routine (frame_info_ptr frame)
> part of the Ada run-time, starting from FI and moving upward. */
>
> void
> -ada_find_printable_frame (frame_info_ptr fi)
> +ada_find_printable_frame (const frame_info_ptr &initial_fi)
> {
> - for (; fi != NULL; fi = get_prev_frame (fi))
> + for (frame_info_ptr fi = initial_fi; fi != nullptr; fi = get_prev_frame (fi))
> {
> if (!is_known_support_routine (fi))
> {
> @@ -12913,7 +12913,7 @@ ada_add_standard_exceptions (compiled_regex *preg,
>
> static void
> ada_add_exceptions_from_frame (compiled_regex *preg,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> std::vector<ada_exc_info> *exceptions)
> {
> const struct block *block = get_frame_block (frame, 0);
> @@ -13339,7 +13339,7 @@ class ada_language : public language_defn
>
> struct value *read_var_value (struct symbol *var,
> const struct block *var_block,
> - frame_info_ptr frame) const override
> + const frame_info_ptr &frame) const override
> {
> /* The only case where default_read_var_value is not sufficient
> is when VAR is a renaming... */
> diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
> index aefd335ff390..5083d004ac98 100644
> --- a/gdb/ada-lang.h
> +++ b/gdb/ada-lang.h
> @@ -341,7 +341,7 @@ extern enum ada_renaming_category ada_parse_renaming (struct symbol *,
> const char **,
> int *, const char **);
>
> -extern void ada_find_printable_frame (frame_info_ptr fi);
> +extern void ada_find_printable_frame (const frame_info_ptr &fi);
>
> extern const char *ada_main_name ();
>
> diff --git a/gdb/alpha-linux-tdep.c b/gdb/alpha-linux-tdep.c
> index 1a19626d9f09..5f5e46d514e4 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 (const frame_info_ptr &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 7691a53148ae..2d13cd3b7c1a 100644
> --- a/gdb/alpha-mdebug-tdep.c
> +++ b/gdb/alpha-mdebug-tdep.c
> @@ -185,7 +185,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 (const frame_info_ptr &this_frame,
Trailing white space.
> void **this_prologue_cache)
> {
> struct alpha_mdebug_unwind_cache *info;
> @@ -262,7 +262,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -275,7 +275,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct alpha_mdebug_unwind_cache *info
> @@ -306,7 +306,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
> @@ -343,7 +343,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct alpha_mdebug_unwind_cache *info
> @@ -353,7 +353,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct alpha_mdebug_unwind_cache *info
> @@ -363,7 +363,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct alpha_mdebug_unwind_cache *info
> @@ -380,7 +380,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 (const frame_info_ptr &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 0213fe5b94f3..569fe42a2a94 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 (const frame_info_ptr &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 b22e584a4e48..610866835c85 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 (const frame_info_ptr &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 cafadae45c74..e5e0860fe241 100644
> --- a/gdb/alpha-tdep.c
> +++ b/gdb/alpha-tdep.c
> @@ -233,7 +233,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 (const frame_info_ptr &frame, int regnum,
> struct type *valtype, gdb_byte *out,
> int *optimizedp, int *unavailablep)
> {
> @@ -260,7 +260,7 @@ alpha_register_to_value (frame_info_ptr frame, int regnum,
> }
>
> static void
> -alpha_value_to_register (frame_info_ptr frame, int regnum,
> +alpha_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *valtype, const gdb_byte *in)
> {
> int reg_size = register_size (get_frame_arch (frame), regnum);
> @@ -840,7 +840,7 @@ alpha_deal_with_atomic_sequence (struct gdbarch *gdbarch, CORE_ADDR pc)
> into the "pc". This routine returns true on success. */
>
> static int
> -alpha_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +alpha_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
> @@ -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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 f9c7e295609a..0423abb25584 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) (const frame_info_ptr &) = 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 bfba7a5284a6..001f5379def2 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 (const frame_info_ptr &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 9144801a5d29..a837bd197ffe 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,
> + const frame_info_ptr &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 fe7f5d4a2597..1deb13b4e9ad 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 d1a7cf3a0492..40500ee5f76c 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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR addr;
>
> diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c
> index 9cca6b12c84e..6b37e8954ee4 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> ULONGEST cs;
> diff --git a/gdb/amd64-sol2-tdep.c b/gdb/amd64-sol2-tdep.c
> index 30a5dfa4c5ea..6cc84017f740 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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR sp, ucontext_addr;
>
> diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
> index a8ff9246b8ad..f5968ab4d0f9 100644
> --- a/gdb/amd64-tdep.c
> +++ b/gdb/amd64-tdep.c
> @@ -348,7 +348,7 @@ amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
> }
>
> static value *
> -amd64_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +amd64_pseudo_register_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int regnum)
> {
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
> @@ -379,7 +379,7 @@ amd64_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> }
>
> static void
> -amd64_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +amd64_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int regnum, gdb::array_view<const gdb_byte> buf)
> {
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
> @@ -2510,7 +2510,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 (const frame_info_ptr &this_frame,
> struct amd64_frame_cache *cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2579,7 +2579,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct amd64_frame_cache *cache;
>
> @@ -2603,7 +2603,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct amd64_frame_cache *cache =
> @@ -2620,7 +2620,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct amd64_frame_cache *cache =
> @@ -2638,7 +2638,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2692,7 +2692,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
> @@ -2732,7 +2732,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct amd64_frame_cache *cache =
> @@ -2745,7 +2745,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct amd64_frame_cache *cache =
> @@ -2763,7 +2763,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> /* Make sure we've initialized the cache. */
> @@ -2774,7 +2774,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> gdbarch *arch = get_frame_arch (this_frame);
> @@ -2816,7 +2816,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct amd64_frame_cache *cache =
> amd64_frame_cache (this_frame, this_cache);
> @@ -2878,7 +2878,7 @@ amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> static int
> amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache, bool override_p)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2911,7 +2911,7 @@ amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
>
> static int
> amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
> @@ -2920,7 +2920,7 @@ amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self,
>
> static int
> amd64_epilogue_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
> @@ -2928,7 +2928,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -2969,7 +2969,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct amd64_frame_cache *cache
> @@ -2982,7 +2982,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -3018,7 +3018,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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR fp;
>
> @@ -3081,7 +3081,7 @@ const struct regset amd64_fpregset =
> success. */
>
> static int
> -amd64_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +amd64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> gdb_byte buf[8];
> CORE_ADDR jb_addr;
> diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c
> index 50304e15cb8a..7c5169fd98c5 100644
> --- a/gdb/amd64-windows-tdep.c
> +++ b/gdb/amd64-windows-tdep.c
> @@ -517,7 +517,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 (const frame_info_ptr &this_frame,
> struct amd64_windows_frame_cache *cache)
> {
> /* According to MSDN an epilogue "must consist of either an add RSP,constant
> @@ -697,7 +697,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 (const frame_info_ptr &this_frame,
> struct amd64_windows_frame_cache *cache,
> CORE_ADDR unwind_info)
> {
> @@ -1077,7 +1077,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -1123,7 +1123,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1169,7 +1169,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct amd64_windows_frame_cache *cache =
> @@ -1235,7 +1235,7 @@ amd64_windows_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
> /* Check Win64 DLL jmp trampolines and find jump destination. */
>
> static CORE_ADDR
> -amd64_windows_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +amd64_windows_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> CORE_ADDR destination = 0;
> struct gdbarch *gdbarch = get_frame_arch (frame);
> diff --git a/gdb/amdgpu-tdep.c b/gdb/amdgpu-tdep.c
> index 44252e559cdc..ac137d9acc44 100644
> --- a/gdb/amdgpu-tdep.c
> +++ b/gdb/amdgpu-tdep.c
> @@ -846,7 +846,7 @@ struct amdgpu_frame_cache
> };
>
> static amdgpu_frame_cache *
> -amdgpu_frame_cache (frame_info_ptr this_frame, void **this_cache)
> +amdgpu_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
> {
> if (*this_cache != nullptr)
> return (struct amdgpu_frame_cache *) *this_cache;
> @@ -862,7 +862,7 @@ amdgpu_frame_cache (frame_info_ptr this_frame, void **this_cache)
> }
>
> static void
> -amdgpu_frame_this_id (frame_info_ptr this_frame, void **this_cache,
> +amdgpu_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
> frame_id *this_id)
> {
> struct amdgpu_frame_cache *cache
> @@ -880,13 +880,13 @@ amdgpu_frame_this_id (frame_info_ptr this_frame, void **this_cache,
> }
>
> static frame_id
> -amdgpu_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
> +amdgpu_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &this_frame)
> {
> return frame_id_build (0, get_frame_pc (this_frame));
> }
>
> static struct value *
> -amdgpu_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
> +amdgpu_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> return frame_unwind_got_register (this_frame, regnum, regnum);
> diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c
> index 03ff49a2b197..ca630ab6df0c 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 (const frame_info_ptr &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 (const frame_info_ptr &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 84e211ce9ad5..12d8aee949fd 100644
> --- a/gdb/arc-tdep.c
> +++ b/gdb/arc-tdep.c
> @@ -998,7 +998,7 @@ arc_store_return_value (struct gdbarch *gdbarch, struct type *type,
> /* Implement the "get_longjmp_target" gdbarch method. */
>
> static int
> -arc_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +arc_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> arc_debug_printf ("called");
>
> @@ -1062,7 +1062,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 (const frame_info_ptr &this_frame, void **prologue_cache)
> {
> return (CORE_ADDR) get_frame_register_unsigned (this_frame, ARC_FP_REGNUM);
> }
> @@ -1643,7 +1643,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 (const frame_info_ptr &this_frame)
> {
> arc_debug_printf ("called");
>
> @@ -1710,7 +1710,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> arc_debug_printf ("called");
> @@ -1755,7 +1755,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> if (*this_cache == NULL)
> @@ -1792,7 +1792,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)
> + const frame_info_ptr &info)
> {
> if (regnum == gdbarch_pc_regnum (gdbarch))
> /* The return address column. */
> @@ -1806,7 +1806,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 (const frame_info_ptr &this_frame)
> {
> arc_debug_printf ("called");
>
> @@ -1845,7 +1845,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> arc_debug_printf ("called");
> @@ -1864,7 +1864,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> arc_debug_printf ("regnum = %d", regnum);
> @@ -1882,7 +1882,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> arc_debug_printf ("called");
> diff --git a/gdb/arc-tdep.h b/gdb/arc-tdep.h
> index 6fc1131a4352..c59490dec004 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) (const frame_info_ptr &) = nullptr;
>
> /* Get address of sigcontext for sigtramp. */
> - CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
> + CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
>
> /* Offset of registers in `struct sigcontext'. */
> const int *sc_reg_offset = nullptr;
> diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
> index 1faa013c16f0..ae3354f65799 100644
> --- a/gdb/arch-utils.c
> +++ b/gdb/arch-utils.c
> @@ -140,7 +140,7 @@ default_get_memtag (struct gdbarch *gdbarch, struct value *address,
> }
>
> CORE_ADDR
> -generic_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +generic_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> return 0;
> }
> @@ -166,7 +166,7 @@ generic_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> int
> default_code_of_frame_writable (struct gdbarch *gdbarch,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> return 1;
> }
> @@ -1079,7 +1079,7 @@ default_type_align (struct gdbarch *gdbarch, struct type *type)
> /* See arch-utils.h. */
>
> std::string
> -default_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
> +default_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> return "";
> }
> @@ -1105,7 +1105,8 @@ default_use_target_description_from_corefile_notes (struct gdbarch *gdbarch,
> }
>
> CORE_ADDR
> -default_get_return_buf_addr (struct type *val_type, frame_info_ptr cur_frame)
> +default_get_return_buf_addr (struct type *val_type,
> + const frame_info_ptr &cur_frame)
> {
> return 0;
> }
> diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
> index 0f37aaf20f82..2dcd8f6dc53b 100644
> --- a/gdb/arch-utils.h
> +++ b/gdb/arch-utils.h
> @@ -158,7 +158,7 @@ struct value *default_get_memtag (struct gdbarch *gdbarch,
> struct value *address,
> memtag_type tag_type);
>
> -extern CORE_ADDR generic_skip_trampoline_code (frame_info_ptr frame,
> +extern CORE_ADDR generic_skip_trampoline_code (const frame_info_ptr &frame,
> CORE_ADDR pc);
>
> extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch,
> @@ -171,7 +171,7 @@ extern int generic_stack_frame_destroyed_p (struct gdbarch *gdbarch,
> CORE_ADDR pc);
>
> extern int default_code_of_frame_writable (struct gdbarch *gdbarch,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> /* By default, registers are not convertible. */
> extern int generic_convert_register_p (struct gdbarch *gdbarch, int regnum,
> @@ -295,7 +295,7 @@ extern ULONGEST default_type_align (struct gdbarch *gdbarch,
> struct type *type);
>
> /* Default implementation of gdbarch get_pc_address_flags method. */
> -extern std::string default_get_pc_address_flags (frame_info_ptr frame,
> +extern std::string default_get_pc_address_flags (const frame_info_ptr &frame,
> CORE_ADDR pc);
>
> /* Default implementation of gdbarch read_core_file_mappings method. */
> @@ -313,7 +313,7 @@ extern bool default_use_target_description_from_corefile_notes
>
> /* Default implementation of gdbarch default_get_return_buf_addr method. */
> extern CORE_ADDR default_get_return_buf_addr (struct type *val_typegdbarch,
> - frame_info_ptr cur_frame);
> + const frame_info_ptr &cur_frame);
>
> /* Default implementation of gdbarch default_dwarf2_omit_typedef_p method. */
> extern bool default_dwarf2_omit_typedef_p (struct type *target_type,
> diff --git a/gdb/arm-fbsd-tdep.c b/gdb/arm-fbsd-tdep.c
> index 143aaf121b71..b485951c3764 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,
> + const frame_info_ptr &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 b559de0fb2d6..cc79247aaf12 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 (const frame_info_ptr &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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -756,7 +756,7 @@ arm_linux_core_read_description (struct gdbarch *gdbarch,
> will return to ARM or Thumb code. Return 0 if it is not a
> rt_sigreturn/sigreturn syscall. */
> static int
> -arm_linux_sigreturn_return_addr (frame_info_ptr frame,
> +arm_linux_sigreturn_return_addr (const frame_info_ptr &frame,
> unsigned long svc_number,
> CORE_ADDR *pc, int *is_thumb)
> {
> @@ -1720,7 +1720,7 @@ arm_linux_syscall_record (struct regcache *regcache, unsigned long svc_number)
> /* Implement the skip_trampoline_code gdbarch method. */
>
> static CORE_ADDR
> -arm_linux_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +arm_linux_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> CORE_ADDR target_pc = arm_skip_stub (frame, pc);
>
> diff --git a/gdb/arm-obsd-tdep.c b/gdb/arm-obsd-tdep.c
> index 9aa2408f36e3..0bdecec3b6fb 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
> index 081e934cf862..3b4ae15df07e 100644
> --- a/gdb/arm-tdep.c
> +++ b/gdb/arm-tdep.c
> @@ -339,7 +339,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, const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -628,7 +628,7 @@ arm_is_thumb (struct regcache *regcache)
> frame. */
>
> int
> -arm_frame_is_thumb (frame_info_ptr frame)
> +arm_frame_is_thumb (const frame_info_ptr &frame)
> {
> /* Check the architecture of FRAME. */
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -2213,7 +2213,7 @@ arm_analyze_prologue (struct gdbarch *gdbarch,
> }
>
> static void
> -arm_scan_prologue (frame_info_ptr this_frame,
> +arm_scan_prologue (const frame_info_ptr &this_frame,
> struct arm_prologue_cache *cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2310,7 +2310,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 (const frame_info_ptr &this_frame)
> {
> int reg;
> struct arm_prologue_cache *cache;
> @@ -2344,7 +2344,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct arm_prologue_cache *cache;
> @@ -2372,7 +2372,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -2400,7 +2400,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int prev_regnum)
> {
> @@ -2794,7 +2794,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 (const frame_info_ptr &this_frame, gdb_byte *entry)
> {
> CORE_ADDR vsp = 0;
> int vsp_valid = 0;
> @@ -3092,7 +3092,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3199,7 +3199,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 (const frame_info_ptr &this_frame)
> {
> struct arm_prologue_cache *cache;
> int reg;
> @@ -3231,7 +3231,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -3259,7 +3259,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> if (*this_cache == NULL)
> @@ -3278,7 +3278,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (frame_relative_level (this_frame) == 0)
> @@ -3335,7 +3335,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 (const frame_info_ptr &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'. */
> @@ -3367,7 +3367,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 (const frame_info_ptr &this_frame)
> {
> struct arm_prologue_cache *cache;
>
> @@ -3386,7 +3386,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -3404,7 +3404,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block;
> @@ -3442,7 +3442,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 (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -3828,7 +3828,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct arm_prologue_cache *cache;
> @@ -3850,7 +3850,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -3871,7 +3871,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int prev_regnum)
> {
> @@ -3936,7 +3936,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3964,7 +3964,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct arm_prologue_cache *cache;
>
> @@ -3997,7 +3997,7 @@ struct arm_dwarf2_prev_register_cache
> };
>
> static struct value *
> -arm_dwarf2_prev_register (frame_info_ptr this_frame, void **this_cache,
> +arm_dwarf2_prev_register (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct gdbarch * gdbarch = get_frame_arch (this_frame);
> @@ -4897,7 +4897,7 @@ print_fpu_flags (struct ui_file *file, int flags)
> (if present) or emulator. */
> static void
> arm_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, const char *args)
> + const frame_info_ptr &frame, const char *args)
> {
> unsigned long status = get_frame_register_unsigned (frame, ARM_FPS_REGNUM);
> int type;
> @@ -5244,7 +5244,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)
> + const frame_info_ptr &this_frame)
> {
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
>
> @@ -9343,7 +9343,7 @@ arm_return_value (struct gdbarch *gdbarch, struct value *function,
>
>
> static int
> -arm_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +arm_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -9415,7 +9415,7 @@ arm_is_sgstubs_section (struct obj_section *sec)
> return the target PC. Otherwise return 0. */
>
> CORE_ADDR
> -arm_skip_stub (frame_info_ptr frame, CORE_ADDR pc)
> +arm_skip_stub (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> const char *name;
> int namelen;
> @@ -9821,7 +9821,7 @@ arm_neon_quad_read (struct gdbarch *gdbarch, readable_regcache *regcache,
> register, in [0, 15]. */
>
> static value *
> -arm_neon_quad_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_neon_quad_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int pseudo_reg_num, int quad_reg_index)
> {
> std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
> @@ -9836,7 +9836,7 @@ arm_neon_quad_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* Read the contents of the MVE pseudo register REGNUM and return it as a
> value. */
> static value *
> -arm_mve_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_mve_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int pseudo_reg_num)
> {
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -9847,7 +9847,7 @@ arm_mve_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> }
>
> static value *
> -arm_pseudo_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num)
> {
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -9909,7 +9909,7 @@ arm_neon_quad_write (struct gdbarch *gdbarch, struct regcache *regcache,
> }
>
> static void
> -arm_neon_quad_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_neon_quad_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int quad_reg_index, gdb::array_view<const gdb_byte> buf)
> {
> std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
> @@ -9923,7 +9923,7 @@ arm_neon_quad_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> /* Store the contents of BUF to the MVE pseudo register REGNUM. */
>
> static void
> -arm_mve_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_mve_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
> {
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
> @@ -9933,7 +9933,7 @@ arm_mve_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> }
>
> static void
> -arm_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +arm_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num,
> gdb::array_view<const gdb_byte> buf)
> {
> @@ -9973,7 +9973,7 @@ arm_pseudo_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> }
>
> static struct value *
> -value_of_arm_user_reg (frame_info_ptr frame, const void *baton)
> +value_of_arm_user_reg (const frame_info_ptr &frame, const void *baton)
> {
> const int *reg_p = (const int *) baton;
> return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
> @@ -10067,7 +10067,7 @@ arm_register_g_packet_guesses (struct gdbarch *gdbarch)
> /* Implement the code_of_frame_writable gdbarch method. */
>
> static int
> -arm_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame)
> +arm_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame)
> {
> arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
>
> @@ -10095,7 +10095,7 @@ arm_gnu_triplet_regexp (struct gdbarch *gdbarch)
> /* Implement the "get_pc_address_flags" gdbarch method. */
>
> static std::string
> -arm_get_pc_address_flags (frame_info_ptr frame, CORE_ADDR pc)
> +arm_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> if (get_frame_pc_masked (frame))
> return "PAC";
> diff --git a/gdb/arm-tdep.h b/gdb/arm-tdep.h
> index 506387b529de..11839b0ff4d0 100644
> --- a/gdb/arm-tdep.h
> +++ b/gdb/arm-tdep.h
> @@ -279,7 +279,7 @@ extern void
> arm_displaced_step_copy_insn_closure *dsc, int regno,
> ULONGEST val, enum pc_write_style write_pc);
>
> -CORE_ADDR arm_skip_stub (frame_info_ptr, CORE_ADDR);
> +CORE_ADDR arm_skip_stub (const frame_info_ptr &, CORE_ADDR);
>
> ULONGEST arm_get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
> int len,
> @@ -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 (const frame_info_ptr &frame);
>
> extern void arm_displaced_step_fixup (struct gdbarch *,
> displaced_step_copy_insn_closure *,
> diff --git a/gdb/arm-wince-tdep.c b/gdb/arm-wince-tdep.c
> index a31da71de082..b722851e7e1a 100644
> --- a/gdb/arm-wince-tdep.c
> +++ b/gdb/arm-wince-tdep.c
> @@ -36,7 +36,7 @@ static const gdb_byte arm_wince_thumb_le_breakpoint[] = { 0xfe, 0xdf };
> #define ARM_WINCE_JB_PC 10
>
> static CORE_ADDR
> -arm_pe_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +arm_pe_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
> index 63b45be7563d..2d38f41cd7fa 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 (const frame_info_ptr &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, const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
> {
> ULONGEST base;
>
> diff --git a/gdb/bfin-linux-tdep.c b/gdb/bfin-linux-tdep.c
> index 35fdf3f2acb5..31aa14765ae8 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
> index 877fd94d7df0..357866ef9532 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 6076ad64a4a8..451818332de3 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 (const frame_info_ptr &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 (const frame_info_ptr &frame)
> {
> const struct block *bl = get_frame_block (frame, 0);
>
> diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c
> index 4409a1e696c9..1b3f3e72c5b7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR sp = get_frame_register_unsigned (this_frame,
> gdbarch_sp_regnum (gdbarch));
> diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
> index a6de59bf292a..882c1a03fe29 100644
> --- a/gdb/cp-abi.c
> +++ b/gdb/cp-abi.c
> @@ -153,7 +153,7 @@ cplus_make_method_ptr (struct type *type, gdb_byte *contents,
> }
>
> CORE_ADDR
> -cplus_skip_trampoline (frame_info_ptr frame,
> +cplus_skip_trampoline (const frame_info_ptr &frame,
> CORE_ADDR stop_pc)
> {
> if (current_cp_abi.skip_trampoline == NULL)
> diff --git a/gdb/cp-abi.h b/gdb/cp-abi.h
> index a993e1dd18a0..fdbe48431290 100644
> --- a/gdb/cp-abi.h
> +++ b/gdb/cp-abi.h
> @@ -204,7 +204,7 @@ extern std::string cplus_typename_from_type_info (struct value *value);
> address of the routine we are thunking to and continue to there
> instead. */
>
> -CORE_ADDR cplus_skip_trampoline (frame_info_ptr frame,
> +CORE_ADDR cplus_skip_trampoline (const frame_info_ptr &frame,
> CORE_ADDR stop_pc);
>
> /* Return a struct that provides pass-by-reference information
> @@ -247,7 +247,7 @@ struct cp_abi_ops
> struct type *(*get_typeid_type) (struct gdbarch *gdbarch);
> struct type *(*get_type_from_type_info) (struct value *value);
> std::string (*get_typename_from_type_info) (struct value *value);
> - CORE_ADDR (*skip_trampoline) (frame_info_ptr, CORE_ADDR);
> + CORE_ADDR (*skip_trampoline) (const frame_info_ptr &, CORE_ADDR);
> struct language_pass_by_ref_info (*pass_by_reference) (struct type *type);
> };
>
> diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
> index 1f108740ad21..02c35da723d4 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> if (cris_sigtramp_start (this_frame)
> @@ -448,7 +448,7 @@ static const struct frame_unwind cris_sigtramp_frame_unwind =
>
> static int
> crisv32_single_step_through_delay (struct gdbarch *gdbarch,
> - frame_info_ptr this_frame)
> + const frame_info_ptr &this_frame)
> {
> cris_gdbarch_tdep *tdep = gdbarch_tdep<cris_gdbarch_tdep> (gdbarch);
> ULONGEST erp;
> @@ -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,
> + const frame_info_ptr &this_frame,
> struct cris_unwind_cache *info);
>
> static CORE_ADDR crisv32_scan_prologue (CORE_ADDR pc,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &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, const frame_info_ptr &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)
> + const frame_info_ptr &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 d3105dc54753..d485f1763178 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c
> index 2aa6c0abcb85..c1ce8a5b02ce 100644
> --- a/gdb/csky-tdep.c
> +++ b/gdb/csky-tdep.c
> @@ -958,7 +958,7 @@ csky_analyze_prologue (struct gdbarch *gdbarch,
> CORE_ADDR start_pc,
> CORE_ADDR limit_pc,
> CORE_ADDR end_pc,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> struct csky_unwind_cache *this_cache,
> lr_type_t lr_type)
> {
> @@ -2063,7 +2063,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR prologue_start, prologue_end, func_end, prev_pc, block_addr;
> struct csky_unwind_cache *cache;
> @@ -2122,7 +2122,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> struct csky_unwind_cache *cache;
> @@ -2143,7 +2143,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct csky_unwind_cache *cache;
> @@ -2172,7 +2172,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 (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> gdb_byte buf[8];
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -2209,7 +2209,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block, pc;
> @@ -2240,7 +2240,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 (const frame_info_ptr &this_frame)
> {
> struct csky_unwind_cache *cache;
>
> @@ -2252,7 +2252,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -2267,7 +2267,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int prev_regnum)
> {
> @@ -2307,7 +2307,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct csky_unwind_cache *cache;
>
> @@ -2330,7 +2330,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)
> + const frame_info_ptr &this_frame)
> {
> if (regnum == gdbarch_pc_regnum (gdbarch))
> reg->how = DWARF2_FRAME_REG_RA;
> diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
> index 8bde53ea8fd1..5757de1cf77d 100644
> --- a/gdb/dtrace-probe.c
> +++ b/gdb/dtrace-probe.c
> @@ -129,7 +129,7 @@ class dtrace_probe : public probe
>
> /* See probe.h. */
> struct value *evaluate_argument (unsigned n,
> - frame_info_ptr frame) override;
> + const frame_info_ptr &frame) override;
>
> /* See probe.h. */
> void compile_to_ax (struct agent_expr *aexpr,
> @@ -708,7 +708,7 @@ dtrace_probe::can_evaluate_arguments () const
>
> struct value *
> dtrace_probe::evaluate_argument (unsigned n,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch = this->get_gdbarch ();
> struct dtrace_probe_arg *arg;
> diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c
> index 309483d95d41..5969ef2cdadd 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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR sp, pc;
>
> diff --git a/gdb/dummy-frame.h b/gdb/dummy-frame.h
> index 753be1aa54c4..7d963ad9beb6 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);
> + const frame_info_ptr &this_frame);
>
> #endif /* !defined (DUMMY_FRAME_H) */
> diff --git a/gdb/dwarf2/ada-imported.c b/gdb/dwarf2/ada-imported.c
> index 1a0bc1d528e2..065e2b90a0f4 100644
> --- a/gdb/dwarf2/ada-imported.c
> +++ b/gdb/dwarf2/ada-imported.c
> @@ -32,7 +32,7 @@ get_imported_name (const struct symbol *sym)
> /* Implement the read_variable method from symbol_computed_ops. */
>
> static struct value *
> -ada_imported_read_variable (struct symbol *symbol, frame_info_ptr frame)
> +ada_imported_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
> {
> const char *name = get_imported_name (symbol);
> bound_minimal_symbol minsym = lookup_minimal_symbol_linkage (name, false);
> diff --git a/gdb/dwarf2/call-site.h b/gdb/dwarf2/call-site.h
> index 5434c8452606..0a0c7e83b813 100644
> --- a/gdb/dwarf2/call-site.h
> +++ b/gdb/dwarf2/call-site.h
> @@ -94,7 +94,7 @@ struct call_site_target
>
> void iterate_over_addresses (struct gdbarch *call_site_gdbarch,
> const struct call_site *call_site,
> - frame_info_ptr caller_frame,
> + const frame_info_ptr &caller_frame,
> iterate_ftype callback) const;
>
> private:
> @@ -201,7 +201,7 @@ struct call_site
> throw NO_ENTRY_VALUE_ERROR. */
>
> void iterate_over_addresses (struct gdbarch *call_site_gdbarch,
> - frame_info_ptr caller_frame,
> + const frame_info_ptr &caller_frame,
> call_site_target::iterate_ftype callback)
> const
> {
> diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c
> index 9cfae104f31c..d0256e7009d9 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 (const frame_info_ptr &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 (const frame_info_ptr &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)
> + const frame_info_ptr &frame)
> {
> piece_closure *c = new piece_closure;
>
> @@ -1076,7 +1076,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, const frame_info_ptr &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 6acd07811f85..b02cc5316406 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, const frame_info_ptr &frame,
> const struct property_addr_info *addr_info = nullptr,
> struct type *type = nullptr,
> struct type *subobj_type = 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 (const frame_info_ptr &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 27a820a6168f..2f6400d62c38 100644
> --- a/gdb/dwarf2/frame-tailcall.c
> +++ b/gdb/dwarf2/frame-tailcall.c
> @@ -90,7 +90,7 @@ 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 (const frame_info_ptr &next_bottom_frame)
> {
> struct tailcall_cache *cache = XCNEW (struct tailcall_cache);
> void **slot;
> @@ -137,7 +137,7 @@ cache_unref (struct tailcall_cache *cache)
> return 0. */
>
> static int
> -frame_is_tailcall (frame_info_ptr fi)
> +frame_is_tailcall (const frame_info_ptr &fi)
> {
> return frame_unwinder_is (fi, &dwarf2_tailcall_frame_unwind);
> }
> @@ -146,12 +146,13 @@ 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 (const frame_info_ptr &initial_fi)
> {
> struct tailcall_cache *cache;
> struct tailcall_cache search;
> void **slot;
>
> + frame_info_ptr fi = initial_fi;
> while (frame_is_tailcall (fi))
> {
> fi = get_next_frame (fi);
> @@ -173,7 +174,7 @@ 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 (const frame_info_ptr &this_frame,
> struct tailcall_cache *cache)
> {
> int retval = (frame_relative_level (this_frame)
> @@ -210,7 +211,7 @@ 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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
> @@ -232,7 +233,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 (const frame_info_ptr &this_frame, struct tailcall_cache *cache)
> {
> int next_levels = existing_next_levels (this_frame, cache);
> struct call_site_chain *chain = cache->chain;
> @@ -264,7 +265,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 (const frame_info_ptr &this_frame,
> void **tailcall_cachep, int regnum)
> {
> struct gdbarch *this_gdbarch = get_frame_arch (this_frame);
> @@ -294,7 +295,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct tailcall_cache *cache = (struct tailcall_cache *) *this_cache;
> @@ -316,7 +317,7 @@ 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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> frame_info_ptr next_frame;
> int next_levels;
> @@ -363,7 +364,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 (const frame_info_ptr &this_frame,
> void **tailcall_cachep,
> const LONGEST *entry_cfa_sp_offsetp)
> {
> @@ -458,7 +459,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 (const frame_info_ptr &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 b0809c8b7131..3f49487ac2a7 100644
> --- a/gdb/dwarf2/frame-tailcall.h
> +++ b/gdb/dwarf2/frame-tailcall.h
> @@ -26,12 +26,12 @@ struct frame_unwind;
> /* The tail call frame unwinder. */
>
> extern void
> - dwarf2_tailcall_sniffer_first (frame_info_ptr this_frame,
> + dwarf2_tailcall_sniffer_first (const frame_info_ptr &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 (const frame_info_ptr &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 fc6704f434ee..530513c2684e 100644
> --- a/gdb/dwarf2/frame.c
> +++ b/gdb/dwarf2/frame.c
> @@ -233,7 +233,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,
> + const frame_info_ptr &this_frame, CORE_ADDR initial,
> int initial_in_stack_memory, dwarf2_per_objfile *per_objfile)
> {
> dwarf_expr_context ctx (per_objfile, addr_size);
> @@ -589,17 +589,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);
> + const frame_info_ptr &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)
> + const frame_info_ptr &)
> = 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 *, const frame_info_ptr &) = nullptr;
>
> /* Convert .eh_frame register number to DWARF register number, or
> adjust .debug_frame register number. */
> @@ -625,7 +625,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)
> + const frame_info_ptr &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
> @@ -666,7 +666,7 @@ void
> dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
> void (*init_reg) (struct gdbarch *, int,
> struct dwarf2_frame_state_reg *,
> - frame_info_ptr))
> + const frame_info_ptr &))
> {
> struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
>
> @@ -678,7 +678,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)
> + const frame_info_ptr &this_frame)
> {
> struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
>
> @@ -691,7 +691,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))
> + const frame_info_ptr &))
> {
> struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
>
> @@ -703,7 +703,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)
> + const frame_info_ptr &this_frame)
> {
> struct dwarf2_frame_ops *ops = get_frame_ops (gdbarch);
>
> @@ -890,7 +890,7 @@ struct dwarf2_frame_cache
> };
>
> static struct dwarf2_frame_cache *
> -dwarf2_frame_cache (frame_info_ptr this_frame, void **this_cache)
> +dwarf2_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> const int num_regs = gdbarch_num_cooked_regs (gdbarch);
> @@ -1120,7 +1120,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct dwarf2_frame_cache *cache
> @@ -1136,7 +1136,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct dwarf2_frame_cache *cache =
> @@ -1151,7 +1151,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1253,7 +1253,7 @@ dwarf2_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
> /* See frame.h. */
>
> void *
> -dwarf2_frame_get_fn_data (frame_info_ptr this_frame, void **this_cache,
> +dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame, void **this_cache,
> fn_prev_register cookie)
> {
> struct dwarf2_frame_fn_data *fn_data = nullptr;
> @@ -1271,7 +1271,7 @@ dwarf2_frame_get_fn_data (frame_info_ptr this_frame, void **this_cache,
> /* See frame.h. */
>
> void *
> -dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame, void **this_cache,
> +dwarf2_frame_allocate_fn_data (const frame_info_ptr &this_frame, void **this_cache,
> fn_prev_register cookie, unsigned long size)
> {
> struct dwarf2_frame_fn_data *fn_data = nullptr;
> @@ -1307,7 +1307,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> if (!dwarf2_frame_unwinders_enabled_p)
> return 0;
> @@ -1383,7 +1383,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct dwarf2_frame_cache *cache =
> dwarf2_frame_cache (this_frame, this_cache);
> @@ -1400,7 +1400,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
>
> @@ -1415,8 +1415,10 @@ 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 (const frame_info_ptr &initial_this_frame)
> {
> + frame_info_ptr this_frame = initial_this_frame;
> +
> if (frame_unwinder_is (this_frame, &record_btrace_tailcall_frame_unwind)
> || frame_unwinder_is (this_frame, &record_btrace_frame_unwind))
> throw_error (NOT_AVAILABLE_ERROR,
> diff --git a/gdb/dwarf2/frame.h b/gdb/dwarf2/frame.h
> index 1ef35ee29482..2167310fbdf0 100644
> --- a/gdb/dwarf2/frame.h
> +++ b/gdb/dwarf2/frame.h
> @@ -66,7 +66,7 @@ enum dwarf2_frame_reg_rule
>
> /* Register state. */
>
> -typedef struct value *(*fn_prev_register) (frame_info_ptr this_frame,
> +typedef struct value *(*fn_prev_register) (const frame_info_ptr &this_frame,
> void **this_cache, int regnum);
>
> struct dwarf2_frame_state_reg
> @@ -207,18 +207,17 @@ extern bool dwarf2_frame_unwinders_enabled_p;
> /* Set the architecture-specific register state initialization
> function for GDBARCH to INIT_REG. */
>
> -extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
> - void (*init_reg) (struct gdbarch *, int,
> - struct dwarf2_frame_state_reg *,
> - frame_info_ptr));
> +extern void dwarf2_frame_set_init_reg (
> + gdbarch *gdbarch, void (*init_reg) (struct gdbarch *, int,
> + dwarf2_frame_state_reg *,
> + const frame_info_ptr &));
>
> /* Set the architecture-specific signal trampoline recognition
> function for GDBARCH to SIGNAL_FRAME_P. */
>
> -extern void
> - dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
> - int (*signal_frame_p) (struct gdbarch *,
> - frame_info_ptr));
> +extern void dwarf2_frame_set_signal_frame_p
> + (gdbarch *gdbarch, int (*signal_frame_p) (struct gdbarch *,
> + const frame_info_ptr &));
>
> /* Set the architecture-specific adjustment of .eh_frame and .debug_frame
> register numbers. */
> @@ -236,11 +235,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 (const frame_info_ptr &this_frame);
>
> /* Compute the DWARF CFA for a frame. */
>
> -CORE_ADDR dwarf2_frame_cfa (frame_info_ptr this_frame);
> +CORE_ADDR dwarf2_frame_cfa (const frame_info_ptr &this_frame);
>
> /* Find the CFA information for PC.
>
> @@ -276,7 +275,7 @@ extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
> COOKIE is the key for the prev_function implementation.
> SIZE is the size of the custom data object to allocate. */
>
> -extern void *dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame,
> +extern void *dwarf2_frame_allocate_fn_data (const frame_info_ptr &this_frame,
> void **this_cache,
> fn_prev_register cookie,
> unsigned long size);
> @@ -291,7 +290,7 @@ extern void *dwarf2_frame_allocate_fn_data (frame_info_ptr this_frame,
> THIS_CACHE is the dwarf2 cache object to store the pointer on.
> COOKIE is the key for the prev_function implementation. */
>
> -extern void *dwarf2_frame_get_fn_data (frame_info_ptr this_frame,
> +extern void *dwarf2_frame_get_fn_data (const frame_info_ptr &this_frame,
> void **this_cache,
> fn_prev_register cookie);
>
> diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c
> index 0f0d14fad3ff..203ad536162a 100644
> --- a/gdb/dwarf2/loc.c
> +++ b/gdb/dwarf2/loc.c
> @@ -48,7 +48,7 @@
> #include "gdbsupport/byte-vector.h"
>
> static struct value *dwarf2_evaluate_loc_desc_full
> - (struct type *type, frame_info_ptr frame, const gdb_byte *data,
> + (struct type *type, const frame_info_ptr &frame, const gdb_byte *data,
> size_t size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
> struct type *subobj_type, LONGEST subobj_byte_offset, bool as_lval = true);
>
> @@ -503,7 +503,7 @@ locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
> LOC_BLOCK functions using a DWARF expression as its DW_AT_frame_base. */
>
> static CORE_ADDR
> -locexpr_get_frame_base (struct symbol *framefunc, frame_info_ptr frame)
> +locexpr_get_frame_base (struct symbol *framefunc, const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch;
> struct type *type;
> @@ -561,7 +561,7 @@ loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc,
> LOC_BLOCK functions using a DWARF location list as its DW_AT_frame_base. */
>
> static CORE_ADDR
> -loclist_get_frame_base (struct symbol *framefunc, frame_info_ptr frame)
> +loclist_get_frame_base (struct symbol *framefunc, const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch;
> struct type *type;
> @@ -649,11 +649,10 @@ show_entry_values_debug (struct ui_file *file, int from_tty,
> /* See gdbtypes.h. */
>
> void
> -call_site_target::iterate_over_addresses
> - (struct gdbarch *call_site_gdbarch,
> - const struct call_site *call_site,
> - frame_info_ptr caller_frame,
> - iterate_ftype callback) const
> +call_site_target::iterate_over_addresses (gdbarch *call_site_gdbarch,
> + const call_site *call_site,
> + const frame_info_ptr &caller_frame,
> + iterate_ftype callback) const
> {
> switch (m_loc_kind)
> {
> @@ -1138,9 +1137,9 @@ 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,
> - enum call_site_parameter_kind kind,
> - union call_site_parameter_u kind_u,
> +dwarf_expr_reg_to_entry_parameter (const frame_info_ptr &initial_frame,
> + call_site_parameter_kind kind,
> + call_site_parameter_u kind_u,
> dwarf2_per_cu_data **per_cu_return,
> dwarf2_per_objfile **per_objfile_return)
> {
> @@ -1152,6 +1151,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
> /* Initialize it just to avoid a GCC false warning. */
> struct call_site_parameter *parameter = NULL;
> CORE_ADDR target_addr;
> + frame_info_ptr frame = initial_frame;
>
> while (get_frame_type (frame) == INLINE_FRAME)
> {
> @@ -1263,7 +1263,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame,
> static struct value *
> dwarf_entry_parameter_to_value (struct call_site_parameter *parameter,
> CORE_ADDR deref_size, struct type *type,
> - frame_info_ptr caller_frame,
> + const frame_info_ptr &caller_frame,
> dwarf2_per_cu_data *per_cu,
> dwarf2_per_objfile *per_objfile)
> {
> @@ -1339,7 +1339,7 @@ static const struct lval_funcs entry_data_value_funcs =
>
> /* See dwarf2/loc.h. */
> struct value *
> -value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame,
> +value_of_dwarf_reg_entry (struct type *type, const frame_info_ptr &frame,
> enum call_site_parameter_kind kind,
> union call_site_parameter_u kind_u)
> {
> @@ -1395,7 +1395,7 @@ value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame,
> cannot resolve the parameter for any reason. */
>
> static struct value *
> -value_of_dwarf_block_entry (struct type *type, frame_info_ptr frame,
> +value_of_dwarf_block_entry (struct type *type, const frame_info_ptr &frame,
> const gdb_byte *block, size_t block_len)
> {
> union call_site_parameter_u kind_u;
> @@ -1456,7 +1456,7 @@ struct value *
> indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
> dwarf2_per_cu_data *per_cu,
> dwarf2_per_objfile *per_objfile,
> - frame_info_ptr frame, struct type *type,
> + const frame_info_ptr &frame, struct type *type,
> bool resolve_abstract_p)
> {
> /* Fetch the location expression of the DIE we're pointing to. */
> @@ -1496,7 +1496,7 @@ indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset,
> SUBOBJ_BYTE_OFFSET within the variable of type TYPE. */
>
> static struct value *
> -dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame,
> +dwarf2_evaluate_loc_desc_full (struct type *type, const frame_info_ptr &frame,
> const gdb_byte *data, size_t size,
> dwarf2_per_cu_data *per_cu,
> dwarf2_per_objfile *per_objfile,
> @@ -1561,7 +1561,7 @@ dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame,
> passes 0 as the byte_offset. */
>
> struct value *
> -dwarf2_evaluate_loc_desc (struct type *type, frame_info_ptr frame,
> +dwarf2_evaluate_loc_desc (struct type *type, const frame_info_ptr &frame,
> const gdb_byte *data, size_t size,
> dwarf2_per_cu_data *per_cu,
> dwarf2_per_objfile *per_objfile, bool as_lval)
> @@ -1584,7 +1584,7 @@ dwarf2_evaluate_loc_desc (struct type *type, frame_info_ptr frame,
>
> static int
> dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> const struct property_addr_info *addr_stack,
> CORE_ADDR *valp,
> gdb::array_view<CORE_ADDR> push_values,
> @@ -1644,9 +1644,9 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
> /* See dwarf2/loc.h. */
>
> bool
> -dwarf2_evaluate_property (const struct dynamic_prop *prop,
> - frame_info_ptr frame,
> - const struct property_addr_info *addr_stack,
> +dwarf2_evaluate_property (const dynamic_prop *prop,
> + const frame_info_ptr &initial_frame,
> + const property_addr_info *addr_stack,
> CORE_ADDR *value,
> gdb::array_view<CORE_ADDR> push_values)
> {
> @@ -1657,6 +1657,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
> Without this here this could happen if the code below selects a
> frame. */
> scoped_restore_current_language save_language;
> + frame_info_ptr frame = initial_frame;
>
> if (frame == NULL && has_stack_frames ())
> frame = get_selected_frame (NULL);
> @@ -3051,7 +3052,7 @@ dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc,
> /* Return the value of SYMBOL in FRAME using the DWARF-2 expression
> evaluator to calculate the location. */
> static struct value *
> -locexpr_read_variable (struct symbol *symbol, frame_info_ptr frame)
> +locexpr_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
> {
> struct dwarf2_locexpr_baton *dlbaton
> = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
> @@ -3069,7 +3070,7 @@ locexpr_read_variable (struct symbol *symbol, frame_info_ptr frame)
> will be thrown. */
>
> static struct value *
> -locexpr_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame)
> +locexpr_read_variable_at_entry (struct symbol *symbol, const frame_info_ptr &frame)
> {
> struct dwarf2_locexpr_baton *dlbaton
> = (struct dwarf2_locexpr_baton *) SYMBOL_LOCATION_BATON (symbol);
> @@ -3884,7 +3885,7 @@ const struct symbol_computed_ops dwarf2_locexpr_funcs = {
> /* Return the value of SYMBOL in FRAME using the DWARF-2 expression
> evaluator to calculate the location. */
> static struct value *
> -loclist_read_variable (struct symbol *symbol, frame_info_ptr frame)
> +loclist_read_variable (struct symbol *symbol, const frame_info_ptr &frame)
> {
> struct dwarf2_loclist_baton *dlbaton
> = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
> @@ -3909,7 +3910,7 @@ loclist_read_variable (struct symbol *symbol, frame_info_ptr frame)
> if it cannot resolve the parameter for any reason. */
>
> static struct value *
> -loclist_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame)
> +loclist_read_variable_at_entry (struct symbol *symbol, const frame_info_ptr &frame)
> {
> struct dwarf2_loclist_baton *dlbaton
> = (struct dwarf2_loclist_baton *) SYMBOL_LOCATION_BATON (symbol);
> diff --git a/gdb/dwarf2/loc.h b/gdb/dwarf2/loc.h
> index fb98e26b72db..4fb743618e7c 100644
> --- a/gdb/dwarf2/loc.h
> +++ b/gdb/dwarf2/loc.h
> @@ -65,9 +65,9 @@ value *compute_var_value (const char *name);
> Function always returns non-NULL, it throws NO_ENTRY_VALUE_ERROR
> otherwise. */
>
> -struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
> - (frame_info_ptr frame, enum call_site_parameter_kind kind,
> - union call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return,
> +call_site_parameter *dwarf_expr_reg_to_entry_parameter
> + (const frame_info_ptr &frame, call_site_parameter_kind kind,
> + call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return,
> dwarf2_per_objfile **per_objfile_return);
>
>
> @@ -76,13 +76,11 @@ struct call_site_parameter *dwarf_expr_reg_to_entry_parameter
> of FRAME. AS_LVAL defines if the resulting struct value is expected to
> be a value or a location description. */
>
> -struct value *dwarf2_evaluate_loc_desc (struct type *type,
> - frame_info_ptr frame,
> - const gdb_byte *data,
> - size_t size,
> - dwarf2_per_cu_data *per_cu,
> - dwarf2_per_objfile *per_objfile,
> - bool as_lval = true);
> +value *dwarf2_evaluate_loc_desc (type *type, const frame_info_ptr &frame,
> + const gdb_byte *data, size_t size,
> + dwarf2_per_cu_data *per_cu,
> + dwarf2_per_objfile *per_objfile,
> + bool as_lval = true);
>
> /* A chain of addresses that might be needed to resolve a dynamic
> property. */
> @@ -121,8 +119,8 @@ struct property_addr_info
> bottom of the stack. */
>
> bool dwarf2_evaluate_property (const struct dynamic_prop *prop,
> - frame_info_ptr frame,
> - const struct property_addr_info *addr_stack,
> + const frame_info_ptr &frame,
> + const property_addr_info *addr_stack,
> CORE_ADDR *value,
> gdb::array_view<CORE_ADDR> push_values = {});
>
> @@ -296,7 +294,7 @@ extern void invalid_synthetic_pointer ();
>
> extern struct value *indirect_synthetic_pointer
> (sect_offset die, LONGEST byte_offset, dwarf2_per_cu_data *per_cu,
> - dwarf2_per_objfile *per_objfile, frame_info_ptr frame,
> + dwarf2_per_objfile *per_objfile, const frame_info_ptr &frame,
> struct type *type, bool resolve_abstract_p = false);
>
> /* Read parameter of TYPE at (callee) FRAME's function entry. KIND and KIND_U
> @@ -307,7 +305,7 @@ extern struct value *indirect_synthetic_pointer
> it cannot resolve the parameter for any reason. */
>
> extern struct value *value_of_dwarf_reg_entry (struct type *type,
> - struct frame_info_ptr frame,
> + const frame_info_ptr &frame,
> enum call_site_parameter_kind kind,
> union call_site_parameter_u kind_u);
> #endif /* DWARF2LOC_H */
> diff --git a/gdb/extension-priv.h b/gdb/extension-priv.h
> index 4eece07ac12f..b709494927d4 100644
> --- a/gdb/extension-priv.h
> +++ b/gdb/extension-priv.h
> @@ -180,7 +180,7 @@ struct extension_language_ops
> or SCR_BT_COMPLETED on success. */
> enum ext_lang_bt_status (*apply_frame_filter)
> (const struct extension_language_defn *,
> - frame_info_ptr frame, frame_filter_flags flags,
> + const frame_info_ptr &frame, frame_filter_flags flags,
> enum ext_lang_frame_args args_type,
> struct ui_out *out, int frame_low, int frame_high);
>
> diff --git a/gdb/extension.c b/gdb/extension.c
> index 2555161c2a79..42e05199d2c8 100644
> --- a/gdb/extension.c
> +++ b/gdb/extension.c
> @@ -525,7 +525,7 @@ apply_ext_lang_val_pretty_printer (struct value *val,
> rather than trying filters in other extension languages. */
>
> enum ext_lang_bt_status
> -apply_ext_lang_frame_filter (frame_info_ptr frame,
> +apply_ext_lang_frame_filter (const frame_info_ptr &frame,
> frame_filter_flags flags,
> enum ext_lang_frame_args args_type,
> struct ui_out *out,
> diff --git a/gdb/extension.h b/gdb/extension.h
> index 6dc19c36fc2a..0514d7930a22 100644
> --- a/gdb/extension.h
> +++ b/gdb/extension.h
> @@ -295,7 +295,7 @@ extern int apply_ext_lang_val_pretty_printer
> const struct language_defn *language);
>
> extern enum ext_lang_bt_status apply_ext_lang_frame_filter
> - (frame_info_ptr frame, frame_filter_flags flags,
> + (const frame_info_ptr &frame, frame_filter_flags flags,
> enum ext_lang_frame_args args_type,
> struct ui_out *out, int frame_low, int frame_high);
>
> diff --git a/gdb/findvar.c b/gdb/findvar.c
> index 2fcfccda1c7a..516a2ca044cc 100644
> --- a/gdb/findvar.c
> +++ b/gdb/findvar.c
> @@ -246,7 +246,7 @@ copy_integer_to_size (gdb_byte *dest, int dest_size, const gdb_byte *source,
> /* See value.h. */
>
> value *
> -value_of_register (int regnum, frame_info_ptr next_frame)
> +value_of_register (int regnum, const frame_info_ptr &next_frame)
> {
> gdbarch *gdbarch = frame_unwind_arch (next_frame);
>
> @@ -263,7 +263,7 @@ value_of_register (int regnum, frame_info_ptr next_frame)
> /* See value.h. */
>
> value *
> -value_of_register_lazy (frame_info_ptr next_frame, int regnum)
> +value_of_register_lazy (const frame_info_ptr &next_frame, int regnum)
> {
> gdbarch *gdbarch = frame_unwind_arch (next_frame);
>
> @@ -377,7 +377,7 @@ symbol_read_needs_frame (struct symbol *sym)
>
> static frame_info_ptr
> get_hosting_frame (struct symbol *var, const struct block *var_block,
> - frame_info_ptr frame)
> + const frame_info_ptr &initial_frame)
> {
> const struct block *frame_block = NULL;
>
> @@ -389,7 +389,7 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
> synthetic symbols. Without block information, we must assume they are
> local to FRAME. In this case, there is nothing to do. */
> else if (var_block == NULL)
> - return frame;
> + return initial_frame;
>
> /* We currently assume that all symbols with a location list need a frame.
> This is true in practice because selecting the location description
> @@ -398,15 +398,16 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
> We want to get <optimized out> instead of <frame required> when evaluating
> them so return a frame instead of raising an error. */
> else if (var_block->is_global_block () || var_block->is_static_block ())
> - return frame;
> + return initial_frame;
>
> /* We have to handle the "my_func::my_local_var" notation. This requires us
> to look for upper frames when we find no block for the current frame: here
> and below, handle when frame_block == NULL. */
> - if (frame != NULL)
> - frame_block = get_frame_block (frame, NULL);
> + if (initial_frame != nullptr)
> + frame_block = get_frame_block (initial_frame, NULL);
>
> /* Climb up the call stack until reaching the frame we are looking for. */
> + frame_info_ptr frame = initial_frame;
> while (frame != NULL && frame_block != var_block)
> {
> /* Stacks can be quite deep: give the user a chance to stop this. */
> @@ -476,12 +477,13 @@ get_hosting_frame (struct symbol *var, const struct block *var_block,
> struct value *
> language_defn::read_var_value (struct symbol *var,
> const struct block *var_block,
> - frame_info_ptr frame) const
> + const frame_info_ptr &frame_param) const
> {
> struct value *v;
> struct type *type = var->type ();
> CORE_ADDR addr;
> enum symbol_needs_kind sym_need;
> + frame_info_ptr frame = frame_param;
>
> /* Call check_typedef on our type to make sure that, if TYPE is
> a TYPE_CODE_TYPEDEF, its length is set to the length of the target type
> @@ -704,7 +706,7 @@ language_defn::read_var_value (struct symbol *var,
>
> struct value *
> read_var_value (struct symbol *var, const struct block *var_block,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> const struct language_defn *lang = language_def (var->language ());
>
> @@ -789,7 +791,7 @@ read_frame_register_value (value *value)
> /* 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, const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> struct type *type1 = check_typedef (type);
> @@ -836,7 +838,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, const frame_info_ptr &frame)
> {
> type *type = builtin_type (get_frame_arch (frame))->builtin_data_ptr;
> value_ref_ptr v = release_value (value_from_register (type, regnum, frame));
> diff --git a/gdb/frame-base.c b/gdb/frame-base.c
> index 9dd04eefa5b3..fda19b57bacb 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 9ca948114665..ae22431d5ef1 100644
> --- a/gdb/frame-base.h
> +++ b/gdb/frame-base.h
> @@ -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) (const frame_info_ptr &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) (const frame_info_ptr &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) (const frame_info_ptr &this_frame,
> void **this_base_cache);
>
> struct frame_base
> @@ -68,7 +68,7 @@ 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) (const frame_info_ptr &this_frame);
>
> /* Append a frame base sniffer to the list. The sniffers are polled
> in the order that they are appended. */
> @@ -86,6 +86,6 @@ 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 (const frame_info_ptr &this_frame);
>
> #endif
> diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c
> index 27aa9e10677d..e9983a9fd74f 100644
> --- a/gdb/frame-unwind.c
> +++ b/gdb/frame-unwind.c
> @@ -123,7 +123,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 (const frame_info_ptr &this_frame, void **this_cache,
> const struct frame_unwind *unwinder)
> {
> int res = 0;
> @@ -183,7 +183,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> FRAME_SCOPED_DEBUG_ENTER_EXIT;
> frame_debug_printf ("this_frame=%d", frame_relative_level (this_frame));
> @@ -217,7 +217,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> return 1;
> @@ -226,7 +226,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct frame_id this_id = get_frame_id (this_frame);
> @@ -240,7 +240,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, const frame_info_ptr &next_frame)
> {
> int pc_regnum = gdbarch_pc_regnum (gdbarch);
> CORE_ADDR pc = frame_unwind_register_unsigned (next_frame, pc_regnum);
> @@ -251,7 +251,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, const frame_info_ptr &next_frame)
> {
> int sp_regnum = gdbarch_sp_regnum (gdbarch);
> return frame_unwind_register_unsigned (next_frame, sp_regnum);
> @@ -263,7 +263,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 (const frame_info_ptr &frame, int regnum)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (frame);
> struct type *type = register_type (gdbarch, regnum);
> @@ -275,7 +275,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 (const frame_info_ptr &frame,
> int regnum, int new_regnum)
> {
> return value_of_register_lazy (get_next_frame_sentinel_okay (frame),
> @@ -286,7 +286,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 (const frame_info_ptr &frame, int regnum, CORE_ADDR addr)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (frame);
> struct value *v = value_at_lazy (register_type (gdbarch, regnum), addr);
> @@ -299,7 +299,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 (const frame_info_ptr &frame, int regnum,
> ULONGEST val)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (frame);
> @@ -313,7 +313,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 (const frame_info_ptr &frame, int regnum, const gdb_byte *buf)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (frame);
> struct value *reg_val;
> @@ -329,7 +329,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 (const frame_info_ptr &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 9e978890e843..53fcd6869e95 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,
> + const frame_info_ptr &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);
> +typedef unwind_stop_reason (frame_unwind_stop_reason_ftype)
> + (const frame_info_ptr &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,
> + const frame_info_ptr &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 (const frame_info_ptr &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);
> + const frame_info_ptr &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);
> + const frame_info_ptr &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) (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id);
>
> @@ -140,9 +140,9 @@ typedef void (frame_this_id_ftype) (frame_info_ptr this_frame,
> with the other unwind methods. Memory for that cache should be
> allocated using FRAME_OBSTACK_ZALLOC(). */
>
> -typedef struct value * (frame_prev_register_ftype)
> - (frame_info_ptr this_frame, void **this_prologue_cache,
> - int regnum);
> +typedef value *(frame_prev_register_ftype) (const frame_info_ptr &this_frame,
> + void **this_prologue_cache,
> + int regnum);
>
> /* Deallocate extra memory associated with the frame cache if any. */
>
> @@ -153,8 +153,8 @@ 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,
> - void **this_prologue_cache);
> +typedef gdbarch *(frame_prev_arch_ftype) (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **this_cache);
>
> /* Helper functions for value-based register unwinding. These return
> @@ -201,39 +201,38 @@ 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,
> - int regnum);
> +value *frame_unwind_got_optimized (const frame_info_ptr &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,
> - int new_regnum);
> +value *frame_unwind_got_register (const frame_info_ptr &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,
> - CORE_ADDR addr);
> +value *frame_unwind_got_memory (const frame_info_ptr &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,
> - ULONGEST val);
> +value *frame_unwind_got_constant (const frame_info_ptr &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,
> - const gdb_byte *buf);
> +value *frame_unwind_got_bytes (const frame_info_ptr &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,
> - CORE_ADDR addr);
> +value *frame_unwind_got_address (const frame_info_ptr &frame, int regnum,
> + CORE_ADDR addr);
>
> #endif
> diff --git a/gdb/frame.c b/gdb/frame.c
> index 72a34fcfedca..9c3f0dfd4f2d 100644
> --- a/gdb/frame.c
> +++ b/gdb/frame.c
> @@ -71,7 +71,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_ptr get_prev_frame_raw (const frame_info_ptr &this_frame);
> static const char *frame_stop_reason_symbol_string (enum unwind_stop_reason reason);
> static frame_info_ptr create_new_frame (frame_id id);
>
> @@ -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 (const frame_info_ptr &frame)
> {
> frame->prev_pc.masked = true;
> }
> @@ -205,7 +205,7 @@ set_frame_previous_pc_masked (frame_info_ptr frame)
> /* See frame.h. */
>
> bool
> -get_frame_pc_masked (frame_info_ptr frame)
> +get_frame_pc_masked (const frame_info_ptr &frame)
> {
> gdb_assert (frame->next != nullptr);
> gdb_assert (frame->next->prev_pc.status == CC_VALUE);
> @@ -528,7 +528,7 @@ frame_info::to_string () const
> Return NULL if FRAME is the start of an artificial-only chain. */
>
> static frame_info_ptr
> -skip_artificial_frames (frame_info_ptr frame)
> +skip_artificial_frames (const frame_info_ptr &initial_frame)
> {
> /* Note we use get_prev_frame_always, and not get_prev_frame. The
> latter will truncate the frame chain, leading to this function
> @@ -537,6 +537,7 @@ skip_artificial_frames (frame_info_ptr frame)
>
> Note that for record targets we may get a frame chain that consists
> of artificial frames only. */
> + frame_info_ptr frame = initial_frame;
> while (get_frame_type (frame) == INLINE_FRAME
> || get_frame_type (frame) == TAILCALL_FRAME)
> {
> @@ -549,8 +550,9 @@ skip_artificial_frames (frame_info_ptr frame)
> }
>
> frame_info_ptr
> -skip_unwritable_frames (frame_info_ptr frame)
> +skip_unwritable_frames (const frame_info_ptr &initial_frame)
> {
> + frame_info_ptr frame = initial_frame;
> while (gdbarch_code_of_frame_writable (get_frame_arch (frame), frame) == 0)
> {
> frame = get_prev_frame (frame);
> @@ -564,8 +566,9 @@ skip_unwritable_frames (frame_info_ptr frame)
> /* See frame.h. */
>
> frame_info_ptr
> -skip_tailcall_frames (frame_info_ptr frame)
> +skip_tailcall_frames (const frame_info_ptr &initial_frame)
> {
> + frame_info_ptr frame = initial_frame;
> while (get_frame_type (frame) == TAILCALL_FRAME)
> {
> /* Note that for record targets we may get a frame chain that consists of
> @@ -582,7 +585,7 @@ skip_tailcall_frames (frame_info_ptr frame)
> frame. */
>
> static void
> -compute_frame_id (frame_info_ptr fi)
> +compute_frame_id (const frame_info_ptr &fi)
> {
> FRAME_SCOPED_DEBUG_ENTER_EXIT;
>
> @@ -628,7 +631,7 @@ compute_frame_id (frame_info_ptr fi)
> frame. */
>
> struct frame_id
> -get_frame_id (frame_info_ptr fi)
> +get_frame_id (const frame_info_ptr &fi)
> {
> if (fi == NULL)
> return null_frame_id;
> @@ -659,26 +662,24 @@ get_frame_id (frame_info_ptr fi)
> }
>
> struct frame_id
> -get_stack_frame_id (frame_info_ptr next_frame)
> +get_stack_frame_id (const frame_info_ptr &next_frame)
> {
> return get_frame_id (skip_artificial_frames (next_frame));
> }
>
> struct frame_id
> -frame_unwind_caller_id (frame_info_ptr next_frame)
> +frame_unwind_caller_id (const frame_info_ptr &initial_next_frame)
> {
> - frame_info_ptr this_frame;
> -
> /* Use get_prev_frame_always, and not get_prev_frame. The latter
> will truncate the frame chain, leading to this function
> unintentionally returning a null_frame_id (e.g., when a caller
> requests the frame ID of "main()"s caller. */
>
> - next_frame = skip_artificial_frames (next_frame);
> + frame_info_ptr next_frame = skip_artificial_frames (initial_next_frame);
> if (next_frame == NULL)
> return null_frame_id;
>
> - this_frame = get_prev_frame_always (next_frame);
> + frame_info_ptr this_frame = get_prev_frame_always (next_frame);
> if (this_frame)
> return get_frame_id (skip_artificial_frames (this_frame));
> else
> @@ -965,7 +966,7 @@ frame_find_by_id (struct frame_id id)
> }
>
> static CORE_ADDR
> -frame_unwind_pc (frame_info_ptr this_frame)
> +frame_unwind_pc (const frame_info_ptr &this_frame)
> {
> if (this_frame->prev_pc.status == CC_UNKNOWN)
> {
> @@ -1039,20 +1040,20 @@ frame_unwind_pc (frame_info_ptr this_frame)
> }
>
> CORE_ADDR
> -frame_unwind_caller_pc (frame_info_ptr this_frame)
> +frame_unwind_caller_pc (const frame_info_ptr &initial_this_frame)
> {
> - this_frame = skip_artificial_frames (this_frame);
> + frame_info_ptr this_frame = skip_artificial_frames (initial_this_frame);
>
> /* We must have a non-artificial frame. The caller is supposed to check
> the result of frame_unwind_caller_id (), which returns NULL_FRAME_ID
> in this case. */
> - gdb_assert (this_frame != NULL);
> + gdb_assert (this_frame != nullptr);
>
> return frame_unwind_pc (this_frame);
> }
>
> bool
> -get_frame_func_if_available (frame_info_ptr this_frame, CORE_ADDR *pc)
> +get_frame_func_if_available (const frame_info_ptr &this_frame, CORE_ADDR *pc)
> {
> frame_info *next_frame = this_frame->next;
>
> @@ -1095,7 +1096,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc;
>
> @@ -1106,7 +1107,7 @@ get_frame_func (frame_info_ptr this_frame)
> }
>
> std::unique_ptr<readonly_detached_regcache>
> -frame_save_as_regcache (frame_info_ptr this_frame)
> +frame_save_as_regcache (const frame_info_ptr &this_frame)
> {
> auto cooked_read = [this_frame] (int regnum, gdb::array_view<gdb_byte> buf)
> {
> @@ -1123,7 +1124,7 @@ frame_save_as_regcache (frame_info_ptr this_frame)
> }
>
> void
> -frame_pop (frame_info_ptr this_frame)
> +frame_pop (const frame_info_ptr &this_frame)
> {
> frame_info_ptr prev_frame;
>
> @@ -1172,7 +1173,7 @@ frame_pop (frame_info_ptr this_frame)
> }
>
> void
> -frame_register_unwind (frame_info_ptr next_frame, int regnum,
> +frame_register_unwind (const frame_info_ptr &next_frame, int regnum,
> int *optimizedp, int *unavailablep,
> enum lval_type *lvalp, CORE_ADDR *addrp,
> int *realnump, gdb_byte *bufferp)
> @@ -1215,7 +1216,7 @@ frame_register_unwind (frame_info_ptr next_frame, int regnum,
> }
>
> void
> -frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
> +frame_unwind_register (const frame_info_ptr &next_frame, int regnum, gdb_byte *buf)
> {
> int optimized;
> int unavailable;
> @@ -1235,14 +1236,14 @@ frame_unwind_register (frame_info_ptr next_frame, int regnum, gdb_byte *buf)
> }
>
> void
> -get_frame_register (frame_info_ptr frame,
> +get_frame_register (const frame_info_ptr &frame,
> int regnum, gdb_byte *buf)
> {
> frame_unwind_register (frame_info_ptr (frame->next), regnum, buf);
> }
>
> struct value *
> -frame_unwind_register_value (frame_info_ptr next_frame, int regnum)
> +frame_unwind_register_value (const frame_info_ptr &next_frame, int regnum)
> {
> FRAME_SCOPED_DEBUG_ENTER_EXIT;
>
> @@ -1334,13 +1335,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 (const frame_info_ptr &frame, int regnum)
> {
> return frame_unwind_register_value (frame_info_ptr (frame->next), regnum);
> }
>
> LONGEST
> -frame_unwind_register_signed (frame_info_ptr next_frame, int regnum)
> +frame_unwind_register_signed (const frame_info_ptr &next_frame, int regnum)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -1366,13 +1367,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 (const frame_info_ptr &frame, int regnum)
> {
> return frame_unwind_register_signed (frame_info_ptr (frame->next), regnum);
> }
>
> ULONGEST
> -frame_unwind_register_unsigned (frame_info_ptr next_frame, int regnum)
> +frame_unwind_register_unsigned (const frame_info_ptr &next_frame, int regnum)
> {
> struct gdbarch *gdbarch = frame_unwind_arch (next_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -1400,13 +1401,13 @@ 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 (const frame_info_ptr &frame, int regnum)
> {
> return frame_unwind_register_unsigned (frame_info_ptr (frame->next), regnum);
> }
>
> bool
> -read_frame_register_unsigned (frame_info_ptr frame, int regnum,
> +read_frame_register_unsigned (const frame_info_ptr &frame, int regnum,
> ULONGEST *val)
> {
> struct value *regval = get_frame_register_value (frame, regnum);
> @@ -1427,7 +1428,7 @@ read_frame_register_unsigned (frame_info_ptr frame, int regnum,
> }
>
> void
> -put_frame_register (frame_info_ptr next_frame, int regnum,
> +put_frame_register (const frame_info_ptr &next_frame, int regnum,
> gdb::array_view<const gdb_byte> buf)
> {
> gdbarch *gdbarch = frame_unwind_arch (next_frame);
> @@ -1475,7 +1476,7 @@ put_frame_register (frame_info_ptr next_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 (const frame_info_ptr &frame, int regnum,
> gdb_byte *myaddr)
> {
> int optimized;
> @@ -1492,7 +1493,7 @@ deprecated_frame_register_read (frame_info_ptr frame, int regnum,
> }
>
> bool
> -get_frame_register_bytes (frame_info_ptr next_frame, int regnum,
> +get_frame_register_bytes (const frame_info_ptr &next_frame, int regnum,
> CORE_ADDR offset, gdb::array_view<gdb_byte> buffer,
> int *optimizedp, int *unavailablep)
> {
> @@ -1569,7 +1570,7 @@ get_frame_register_bytes (frame_info_ptr next_frame, int regnum,
> }
>
> void
> -put_frame_register_bytes (frame_info_ptr next_frame, int regnum,
> +put_frame_register_bytes (const frame_info_ptr &next_frame, int regnum,
> CORE_ADDR offset,
> gdb::array_view<const gdb_byte> buffer)
> {
> @@ -1658,7 +1659,7 @@ 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_ptr get_prev_frame_always_1 (const frame_info_ptr &this_frame);
>
> frame_info_ptr
> get_current_frame (void)
> @@ -1920,7 +1921,7 @@ invalidate_selected_frame ()
> /* See frame.h. */
>
> void
> -select_frame (frame_info_ptr fi)
> +select_frame (const frame_info_ptr &fi)
> {
> gdb_assert (fi != nullptr);
>
> @@ -2062,7 +2063,7 @@ create_new_frame (CORE_ADDR stack, CORE_ADDR pc)
> frame chain and onto the sentinel frame. */
>
> frame_info_ptr
> -get_next_frame (frame_info_ptr this_frame)
> +get_next_frame (const frame_info_ptr &this_frame)
> {
> if (this_frame->level > 0)
> return frame_info_ptr (this_frame->next);
> @@ -2075,7 +2076,7 @@ get_next_frame (frame_info_ptr this_frame)
> unlike get_next_frame(), NULL will never be returned. */
>
> frame_info_ptr
> -get_next_frame_sentinel_okay (frame_info_ptr this_frame)
> +get_next_frame_sentinel_okay (const frame_info_ptr &this_frame)
> {
> gdb_assert (this_frame != NULL);
>
> @@ -2141,12 +2142,13 @@ reinit_frame_cache (void)
> relative to this particular frame. */
>
> static void
> -frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
> - int *optimizedp, enum lval_type *lvalp,
> +frame_register_unwind_location (const frame_info_ptr &initial_this_frame,
> + int regnum, int *optimizedp, lval_type *lvalp,
> CORE_ADDR *addrp, int *realnump)
> {
> - gdb_assert (this_frame == NULL || this_frame->level >= 0);
> + gdb_assert (initial_this_frame == nullptr || initial_this_frame->level >= 0);
>
> + frame_info_ptr this_frame = initial_this_frame;
> while (this_frame != NULL)
> {
> int unavailable;
> @@ -2185,7 +2187,7 @@ frame_register_unwind_location (frame_info_ptr this_frame, int regnum,
> of the previous frame, should also be a duplicate. */
>
> static frame_info_ptr
> -get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
> +get_prev_frame_maybe_check_cycle (const frame_info_ptr &this_frame)
> {
> frame_info_ptr prev_frame = get_prev_frame_raw (this_frame);
>
> @@ -2273,7 +2275,7 @@ get_prev_frame_maybe_check_cycle (frame_info_ptr this_frame)
> there is no such frame. This may throw an exception. */
>
> static frame_info_ptr
> -get_prev_frame_always_1 (frame_info_ptr this_frame)
> +get_prev_frame_always_1 (const frame_info_ptr &this_frame)
> {
> FRAME_SCOPED_DEBUG_ENTER_EXIT;
>
> @@ -2429,7 +2431,7 @@ get_prev_frame_always_1 (frame_info_ptr this_frame)
> frame. */
>
> frame_info_ptr
> -get_prev_frame_always (frame_info_ptr this_frame)
> +get_prev_frame_always (const frame_info_ptr &this_frame)
> {
> frame_info_ptr prev_frame = NULL;
>
> @@ -2469,7 +2471,7 @@ get_prev_frame_always (frame_info_ptr this_frame)
> this_frame. */
>
> static frame_info_ptr
> -get_prev_frame_raw (frame_info_ptr this_frame)
> +get_prev_frame_raw (const frame_info_ptr &this_frame)
> {
> frame_info *prev_frame;
>
> @@ -2522,7 +2524,7 @@ get_prev_frame_raw (frame_info_ptr this_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 (const frame_info_ptr &this_frame,
> const char *reason)
> {
> if (frame_debug)
> @@ -2537,7 +2539,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 (const frame_info_ptr &this_frame)
> {
> if (current_program_space->symfile_object_file == nullptr)
> return false;
> @@ -2585,7 +2587,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR entry_point;
>
> @@ -2605,7 +2607,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 (const frame_info_ptr &this_frame)
> {
> FRAME_SCOPED_DEBUG_ENTER_EXIT;
>
> @@ -2703,14 +2705,14 @@ get_prev_frame (frame_info_ptr this_frame)
> }
>
> CORE_ADDR
> -get_frame_pc (frame_info_ptr frame)
> +get_frame_pc (const frame_info_ptr &frame)
> {
> gdb_assert (frame->next != NULL);
> return frame_unwind_pc (frame_info_ptr (frame->next));
> }
>
> bool
> -get_frame_pc_if_available (frame_info_ptr frame, CORE_ADDR *pc)
> +get_frame_pc_if_available (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
>
> gdb_assert (frame->next != NULL);
> @@ -2733,7 +2735,7 @@ 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 (const frame_info_ptr &this_frame)
> {
> /* A draft address. */
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -2793,7 +2795,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 (const frame_info_ptr &this_frame,
> CORE_ADDR *pc)
> {
>
> @@ -2812,7 +2814,7 @@ get_frame_address_in_block_if_available (frame_info_ptr this_frame,
> }
>
> symtab_and_line
> -find_frame_sal (frame_info_ptr frame)
> +find_frame_sal (const frame_info_ptr &frame)
> {
> frame_info_ptr next_frame;
> int notcurrent;
> @@ -2870,7 +2872,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 (const frame_info_ptr &fi)
> {
> return get_frame_id (fi).stack_addr;
> }
> @@ -2878,7 +2880,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 (const frame_info_ptr &fi)
> {
> if (get_frame_type (fi) != NORMAL_FRAME)
> return 0;
> @@ -2892,7 +2894,7 @@ get_frame_base_address (frame_info_ptr fi)
> }
>
> CORE_ADDR
> -get_frame_locals_address (frame_info_ptr fi)
> +get_frame_locals_address (const frame_info_ptr &fi)
> {
> if (get_frame_type (fi) != NORMAL_FRAME)
> return 0;
> @@ -2907,7 +2909,7 @@ get_frame_locals_address (frame_info_ptr fi)
> }
>
> CORE_ADDR
> -get_frame_args_address (frame_info_ptr fi)
> +get_frame_args_address (const frame_info_ptr &fi)
> {
> if (get_frame_type (fi) != NORMAL_FRAME)
> return 0;
> @@ -2925,7 +2927,7 @@ get_frame_args_address (frame_info_ptr fi)
> otherwise. */
>
> bool
> -frame_unwinder_is (frame_info_ptr fi, const frame_unwind *unwinder)
> +frame_unwinder_is (const frame_info_ptr &fi, const frame_unwind *unwinder)
> {
> if (fi->unwind == nullptr)
> frame_unwind_find_by_frame (fi, &fi->prologue_cache);
> @@ -2937,7 +2939,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 (const frame_info_ptr &fi)
> {
> if (fi == NULL)
> return -1;
> @@ -2946,7 +2948,7 @@ frame_relative_level (frame_info_ptr fi)
> }
>
> enum frame_type
> -get_frame_type (frame_info_ptr frame)
> +get_frame_type (const frame_info_ptr &frame)
> {
> if (frame->unwind == NULL)
> /* Initialize the frame's unwinder because that's what
> @@ -2956,13 +2958,13 @@ get_frame_type (frame_info_ptr frame)
> }
>
> struct program_space *
> -get_frame_program_space (frame_info_ptr frame)
> +get_frame_program_space (const frame_info_ptr &frame)
> {
> return frame->pspace;
> }
>
> struct program_space *
> -frame_unwind_program_space (frame_info_ptr this_frame)
> +frame_unwind_program_space (const frame_info_ptr &this_frame)
> {
> gdb_assert (this_frame);
>
> @@ -2973,7 +2975,7 @@ frame_unwind_program_space (frame_info_ptr this_frame)
> }
>
> const address_space *
> -get_frame_address_space (frame_info_ptr frame)
> +get_frame_address_space (const frame_info_ptr &frame)
> {
> return frame->aspace;
> }
> @@ -2981,14 +2983,14 @@ get_frame_address_space (frame_info_ptr frame)
> /* Memory access methods. */
>
> void
> -get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
> +get_frame_memory (const frame_info_ptr &this_frame, CORE_ADDR addr,
> gdb::array_view<gdb_byte> buffer)
> {
> read_memory (addr, buffer.data (), buffer.size ());
> }
>
> LONGEST
> -get_frame_memory_signed (frame_info_ptr this_frame, CORE_ADDR addr,
> +get_frame_memory_signed (const frame_info_ptr &this_frame, CORE_ADDR addr,
> int len)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2998,7 +3000,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 (const frame_info_ptr &this_frame, CORE_ADDR addr,
> int len)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3008,7 +3010,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 (const frame_info_ptr &this_frame,
> CORE_ADDR addr, gdb::array_view<gdb_byte> buffer)
> {
> /* NOTE: target_read_memory returns zero on success! */
> @@ -3018,13 +3020,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 (const frame_info_ptr &this_frame)
> {
> return frame_unwind_arch (frame_info_ptr (this_frame->next));
> }
>
> struct gdbarch *
> -frame_unwind_arch (frame_info_ptr next_frame)
> +frame_unwind_arch (const frame_info_ptr &next_frame)
> {
> if (!next_frame->prev_arch.p)
> {
> @@ -3050,14 +3052,14 @@ frame_unwind_arch (frame_info_ptr next_frame)
> }
>
> struct gdbarch *
> -frame_unwind_caller_arch (frame_info_ptr next_frame)
> +frame_unwind_caller_arch (const frame_info_ptr &initial_next_frame)
> {
> - next_frame = skip_artificial_frames (next_frame);
> + frame_info_ptr next_frame = skip_artificial_frames (initial_next_frame);
>
> /* We must have a non-artificial frame. The caller is supposed to check
> the result of frame_unwind_caller_id (), which returns NULL_FRAME_ID
> in this case. */
> - gdb_assert (next_frame != NULL);
> + gdb_assert (next_frame != nullptr);
>
> return frame_unwind_arch (next_frame);
> }
> @@ -3065,7 +3067,7 @@ frame_unwind_caller_arch (frame_info_ptr next_frame)
> /* Gets the language of FRAME. */
>
> enum language
> -get_frame_language (frame_info_ptr frame)
> +get_frame_language (const frame_info_ptr &frame)
> {
> CORE_ADDR pc = 0;
> bool pc_p = false;
> @@ -3106,7 +3108,7 @@ get_frame_language (frame_info_ptr frame)
> /* Stack pointer methods. */
>
> CORE_ADDR
> -get_frame_sp (frame_info_ptr this_frame)
> +get_frame_sp (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
>
> @@ -3118,9 +3120,9 @@ get_frame_sp (frame_info_ptr this_frame)
> /* See frame.h. */
>
> frame_info_ptr
> -frame_follow_static_link (frame_info_ptr frame)
> +frame_follow_static_link (const frame_info_ptr &initial_frame)
> {
> - const block *frame_block = get_frame_block (frame, nullptr);
> + const block *frame_block = get_frame_block (initial_frame, nullptr);
> if (frame_block == nullptr)
> return {};
>
> @@ -3132,11 +3134,12 @@ frame_follow_static_link (frame_info_ptr frame)
>
> CORE_ADDR upper_frame_base;
>
> - if (!dwarf2_evaluate_property (static_link, frame, NULL, &upper_frame_base))
> + if (!dwarf2_evaluate_property (static_link, initial_frame, NULL, &upper_frame_base))
> return {};
>
> /* Now climb up the stack frame until we reach the frame we are interested
> in. */
> + frame_info_ptr frame = initial_frame;
> for (; frame != nullptr; frame = get_prev_frame (frame))
> {
> struct symbol *framefunc = get_frame_function (frame);
> @@ -3163,7 +3166,7 @@ frame_follow_static_link (frame_info_ptr frame)
> /* 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 (const frame_info_ptr &frame)
> {
> /* Fill-in STOP_REASON. */
> get_prev_frame_always (frame);
> @@ -3190,7 +3193,7 @@ unwind_stop_reason_to_string (enum unwind_stop_reason reason)
> }
>
> const char *
> -frame_stop_reason_string (frame_info_ptr fi)
> +frame_stop_reason_string (const frame_info_ptr &fi)
> {
> gdb_assert (fi->prev_p);
> gdb_assert (fi->prev == NULL);
> @@ -3225,7 +3228,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 (const frame_info_ptr &frame)
> {
> /* The sniffer should not allocate a prologue cache if it did not
> match this frame. */
> @@ -3255,7 +3258,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 (const frame_info_ptr &frame,
> const struct frame_unwind *unwind)
> {
> gdb_assert (frame->unwind == NULL);
> diff --git a/gdb/frame.h b/gdb/frame.h
> index c3787d4649cf..e784c17b4807 100644
> --- a/gdb/frame.h
> +++ b/gdb/frame.h
> @@ -450,7 +450,7 @@ extern void reinit_frame_cache (void);
> extern frame_info_ptr get_selected_frame (const char *message = nullptr);
>
> /* Select a specific frame. */
> -extern void select_frame (frame_info_ptr);
> +extern void select_frame (const frame_info_ptr &);
>
> /* Save the frame ID and frame level of the selected frame in FRAME_ID
> and FRAME_LEVEL, to be restored later with restore_selected_frame.
> @@ -475,19 +475,19 @@ 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 (const frame_info_ptr &);
> +extern frame_info_ptr get_next_frame (const frame_info_ptr &);
>
> /* Like get_next_frame(), 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_ptr get_next_frame_sentinel_okay (const frame_info_ptr &);
>
> /* 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_ptr get_prev_frame_always (const frame_info_ptr &);
>
> /* Given a frame's ID, relocate the frame. Returns NULL if the frame
> is not found. */
> @@ -499,12 +499,12 @@ 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 (const frame_info_ptr &);
>
> /* 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 (const frame_info_ptr &frame, CORE_ADDR *pc);
>
> /* An address (not necessarily aligned to an instruction boundary)
> that falls within THIS frame's code block.
> @@ -519,32 +519,32 @@ 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 (const frame_info_ptr &this_frame);
>
> /* 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 (const frame_info_ptr &this_frame,
> CORE_ADDR *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 (const frame_info_ptr &);
>
> /* 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 (const frame_info_ptr &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 (const frame_info_ptr &fi, CORE_ADDR *);
>
> /* Closely related to the resume address, various symbol table
> attributes that are determined by the PC. Note that for a normal
> @@ -564,12 +564,12 @@ extern bool get_frame_func_if_available (frame_info_ptr fi, CORE_ADDR *);
> find_frame_symtab(), find_frame_function(). Each will need to be
> carefully considered to determine if the real intent was for it to
> apply to the PC or the adjusted PC. */
> -extern symtab_and_line find_frame_sal (frame_info_ptr frame);
> +extern symtab_and_line find_frame_sal (const frame_info_ptr &frame);
>
> /* Set the current source and line to the location given by frame
> FRAME, if possible. */
>
> -void set_current_sal_from_frame (frame_info_ptr);
> +void set_current_sal_from_frame (const frame_info_ptr &);
>
> /* Return the frame base (what ever that is) (DEPRECATED).
>
> @@ -593,59 +593,59 @@ 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 (const frame_info_ptr &);
>
> /* Return the per-frame unique identifier. 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_stack_frame_id (frame_info_ptr fi);
> -extern struct frame_id frame_unwind_caller_id (frame_info_ptr next_frame);
> +extern frame_id get_frame_id (const frame_info_ptr &fi);
> +extern frame_id get_stack_frame_id (const frame_info_ptr &fi);
> +extern frame_id frame_unwind_caller_id (const 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 (const frame_info_ptr &);
>
> /* Assuming that a frame is `normal', return the base-address of the
> local variables, or 0 if the information isn't available. NOTE:
> This address is really only meaningful to the frame's high-level
> debug info. Typically, the argument and locals share a single
> base-address. */
> -extern CORE_ADDR get_frame_locals_address (frame_info_ptr);
> +extern CORE_ADDR get_frame_locals_address (const frame_info_ptr &);
>
> /* Assuming that a frame is `normal', return the base-address of the
> parameter list, or 0 if that information isn't available. NOTE:
> This address is really only meaningful to the frame's high-level
> debug info. Typically, the argument and locals share a single
> base-address. */
> -extern CORE_ADDR get_frame_args_address (frame_info_ptr);
> +extern CORE_ADDR get_frame_args_address (const 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 (const frame_info_ptr &fi);
>
> /* Return the frame's type. */
>
> -extern enum frame_type get_frame_type (frame_info_ptr);
> +extern enum frame_type get_frame_type (const frame_info_ptr &);
>
> /* Return the frame's program space. */
> -extern struct program_space *get_frame_program_space (frame_info_ptr);
> +extern struct program_space *get_frame_program_space (const frame_info_ptr &);
>
> /* Unwind THIS frame's program space from the NEXT frame. */
> -extern struct program_space *frame_unwind_program_space (frame_info_ptr);
> +extern struct program_space *frame_unwind_program_space (const frame_info_ptr &);
>
> class address_space;
>
> /* Return the frame's address space. */
> -extern const address_space *get_frame_address_space (frame_info_ptr);
> +extern const address_space *get_frame_address_space (const frame_info_ptr &);
>
> /* A frame may have a "static link". That is, in some languages, a
> nested function may have access to variables from the enclosing
> block and frame. This function looks for a frame's static link.
> If found, returns the corresponding frame; otherwise, returns a
> null frame_info_ptr. */
> -extern frame_info_ptr frame_follow_static_link (frame_info_ptr frame);
> +extern frame_info_ptr frame_follow_static_link (const frame_info_ptr &frame);
>
> /* For frames where we can not unwind further, describe why. */
>
> @@ -665,7 +665,7 @@ 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 (const frame_info_ptr &);
>
> /* Translate a reason code to an informative string. This converts the
> generic stop reason codes into a generic string describing the code.
> @@ -682,13 +682,13 @@ const char *unwind_stop_reason_to_string (enum unwind_stop_reason);
>
> Should only be called for frames that don't have a previous frame. */
>
> -const char *frame_stop_reason_string (frame_info_ptr);
> +const char *frame_stop_reason_string (const frame_info_ptr &);
>
> /* Unwind the stack frame so that the value of REGNUM, in the previous
> (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 (const frame_info_ptr &frame, int regnum,
> int *optimizedp, int *unavailablep,
> enum lval_type *lvalp,
> CORE_ADDR *addrp, int *realnump,
> @@ -700,23 +700,23 @@ extern void frame_register_unwind (frame_info_ptr frame, int regnum,
> 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 (const frame_info_ptr &next_frame,
> int regnum, gdb_byte *buf);
> -extern void get_frame_register (frame_info_ptr frame,
> +extern void get_frame_register (const frame_info_ptr &frame,
> int regnum, gdb_byte *buf);
>
> -struct value *frame_unwind_register_value (frame_info_ptr next_frame,
> +struct value *frame_unwind_register_value (const frame_info_ptr &next_frame,
> int regnum);
> -struct value *get_frame_register_value (frame_info_ptr frame,
> +struct value *get_frame_register_value (const frame_info_ptr &frame,
> int regnum);
>
> -extern LONGEST frame_unwind_register_signed (frame_info_ptr next_frame,
> +extern LONGEST frame_unwind_register_signed (const frame_info_ptr &next_frame,
> int regnum);
> -extern LONGEST get_frame_register_signed (frame_info_ptr frame,
> +extern LONGEST get_frame_register_signed (const frame_info_ptr &frame,
> int regnum);
> -extern ULONGEST frame_unwind_register_unsigned (frame_info_ptr next_frame,
> - int regnum);
> -extern ULONGEST get_frame_register_unsigned (frame_info_ptr frame,
> +extern ULONGEST frame_unwind_register_unsigned
> + (const frame_info_ptr &next_frame, int regnum);
> +extern ULONGEST get_frame_register_unsigned (const frame_info_ptr &frame,
> int regnum);
>
> /* Read a register from this, or unwind a register from the next
> @@ -724,39 +724,39 @@ extern ULONGEST get_frame_register_unsigned (frame_info_ptr frame,
> get_frame_register_value, that do not throw if the result is
> optimized out or unavailable. */
>
> -extern bool read_frame_register_unsigned (frame_info_ptr frame,
> +extern bool read_frame_register_unsigned (const frame_info_ptr &frame,
> int regnum, ULONGEST *val);
>
> /* The reverse. Store a register value relative to NEXT_FRAME's previous frame.
> Note: this call makes the frame's state undefined. The register and frame
> caches must be flushed. */
> -extern void put_frame_register (frame_info_ptr next_frame, int regnum,
> +extern void put_frame_register (const frame_info_ptr &next_frame, int regnum,
> gdb::array_view<const gdb_byte> buf);
>
> /* Read LEN bytes from one or multiple registers starting with REGNUM in
> NEXT_FRAME's previous 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 next_frame, int regnum,
> - CORE_ADDR offset,
> +extern bool get_frame_register_bytes (const frame_info_ptr &next_frame,
> + int regnum, CORE_ADDR offset,
> gdb::array_view<gdb_byte> buffer,
> int *optimizedp, int *unavailablep);
>
> /* Write bytes from BUFFER to one or multiple registers starting with REGNUM
> in NEXT_FRAME's previous frame, starting at OFFSET. */
> -extern void put_frame_register_bytes (frame_info_ptr next_frame, int regnum,
> - CORE_ADDR offset,
> +extern void put_frame_register_bytes (const frame_info_ptr &next_frame,
> + int regnum, CORE_ADDR offset,
> gdb::array_view<const gdb_byte> buffer);
>
> /* Unwind the PC. Strictly speaking return the resume address of the
> calling frame. For GDB, `pc' is the resume address and not a
> specific register. */
>
> -extern CORE_ADDR frame_unwind_caller_pc (frame_info_ptr frame);
> +extern CORE_ADDR frame_unwind_caller_pc (const frame_info_ptr &next_frame);
>
> /* Discard the specified frame. Restoring the registers to the state
> of the caller. */
> -extern void frame_pop (frame_info_ptr frame);
> +extern void frame_pop (const frame_info_ptr &frame);
>
> /* Return memory from the specified frame. A frame knows its thread /
> LWP and hence can find its way down to a target. The assumption
> @@ -771,26 +771,26 @@ extern void frame_pop (frame_info_ptr frame);
> If architecture / memory changes are always separated by special
> adaptor frames this should be ok. */
>
> -extern void get_frame_memory (frame_info_ptr this_frame, CORE_ADDR addr,
> +extern void get_frame_memory (const 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 (const frame_info_ptr &this_frame,
> CORE_ADDR memaddr, int len);
> -extern ULONGEST get_frame_memory_unsigned (frame_info_ptr this_frame,
> +extern ULONGEST get_frame_memory_unsigned (const frame_info_ptr &this_frame,
> CORE_ADDR memaddr, int 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 (const frame_info_ptr &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 gdbarch *get_frame_arch (const frame_info_ptr &this_frame);
>
> /* Return the previous frame's architecture. */
> -extern struct gdbarch *frame_unwind_arch (frame_info_ptr next_frame);
> +extern gdbarch *frame_unwind_arch (const frame_info_ptr &next_frame);
>
> /* Return the previous frame's architecture, skipping inline functions. */
> -extern struct gdbarch *frame_unwind_caller_arch (frame_info_ptr frame);
> +extern gdbarch *frame_unwind_caller_arch (const frame_info_ptr &next_frame);
>
>
> /* Values for the source flag to be used in print_frame_info ().
> @@ -830,9 +830,9 @@ extern void *frame_obstack_zalloc (unsigned long size);
> class readonly_detached_regcache;
> /* Create a regcache, and copy the frame's registers into it. */
> std::unique_ptr<readonly_detached_regcache> frame_save_as_regcache
> - (frame_info_ptr this_frame);
> + (const frame_info_ptr &this_frame);
>
> -extern const struct block *get_frame_block (frame_info_ptr,
> +extern const struct block *get_frame_block (const frame_info_ptr &,
> CORE_ADDR *addr_in_block);
>
> /* Return the `struct block' that belongs to the selected thread's
> @@ -863,7 +863,7 @@ 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 (const frame_info_ptr &);
>
> extern CORE_ADDR get_pc_function_start (CORE_ADDR);
>
> @@ -873,22 +873,22 @@ extern frame_info_ptr find_relative_frame (frame_info_ptr, int *);
> the function call. */
>
> extern void print_stack_frame_to_uiout (struct ui_out *uiout,
> - frame_info_ptr, int print_level,
> + const frame_info_ptr &, int print_level,
> enum print_what print_what,
> int set_current_sal);
>
> -extern void print_stack_frame (frame_info_ptr, int print_level,
> +extern void print_stack_frame (const frame_info_ptr &, int print_level,
> enum print_what print_what,
> int set_current_sal);
>
> extern void print_frame_info (const frame_print_options &fp_opts,
> - frame_info_ptr, int print_level,
> + const frame_info_ptr &, int print_level,
> enum print_what print_what, int args,
> int set_current_sal);
>
> 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 (const frame_info_ptr &frame, int regnum,
> gdb_byte *buf);
>
> /* From stack.c. */
> @@ -960,10 +960,10 @@ struct frame_arg
> };
>
> extern void read_frame_arg (const frame_print_options &fp_opts,
> - symbol *sym, frame_info_ptr frame,
> + symbol *sym, const frame_info_ptr &frame,
> struct frame_arg *argp,
> struct frame_arg *entryargp);
> -extern void read_frame_local (struct symbol *sym, frame_info_ptr frame,
> +extern void read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
> struct frame_arg *argp);
>
> extern void info_args_command (const char *, int);
> @@ -976,13 +976,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 (const frame_info_ptr &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 (const frame_info_ptr &frame);
>
> /* Notes (cagney/2002-11-27, drow/2003-09-06):
>
> @@ -1023,22 +1023,22 @@ 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 (const frame_info_ptr &fi, const frame_unwind *unwinder);
>
> /* Return the language of FRAME. */
>
> -extern enum language get_frame_language (frame_info_ptr frame);
> +extern enum language get_frame_language (const frame_info_ptr &frame);
>
> /* Return the first non-tailcall frame above FRAME or FRAME if it is not a
> tailcall frame. Return NULL if FRAME is the start of a tailcall-only
> chain. */
>
> -extern frame_info_ptr skip_tailcall_frames (frame_info_ptr frame);
> +extern frame_info_ptr skip_tailcall_frames (const frame_info_ptr &frame);
>
> /* Return the first frame above FRAME or FRAME of which the code is
> writable. */
>
> -extern frame_info_ptr skip_unwritable_frames (frame_info_ptr frame);
> +extern frame_info_ptr skip_unwritable_frames (const frame_info_ptr &frame);
>
> /* Data for the "set backtrace" settings. */
>
> @@ -1070,11 +1070,11 @@ 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 (const frame_info_ptr &frame);
>
> /* Get whether the PC value is masked for the given frame. */
>
> -extern bool get_frame_pc_masked (frame_info_ptr frame);
> +extern bool get_frame_pc_masked (const frame_info_ptr &frame);
>
>
> #endif /* !defined (FRAME_H) */
> diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
> index e02d3390a33d..5160c3b0c1d6 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 1994dd782ad5..bcb2c621945b 100644
> --- a/gdb/frv-tdep.c
> +++ b/gdb/frv-tdep.c
> @@ -510,7 +510,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,
> + const frame_info_ptr &this_frame,
> struct frv_unwind_cache *info)
> {
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -1084,7 +1084,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1367,7 +1367,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> struct frv_unwind_cache *info
> @@ -1397,7 +1397,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct frv_unwind_cache *info
> @@ -1416,7 +1416,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 (const frame_info_ptr &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 069d40f56fb2..60cd2c974a12 100644
> --- a/gdb/ft32-tdep.c
> +++ b/gdb/ft32-tdep.c
> @@ -450,7 +450,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct ft32_frame_cache *cache;
> CORE_ADDR current_pc;
> @@ -490,7 +490,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
> @@ -506,7 +506,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
> @@ -538,7 +538,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct ft32_frame_cache *cache = ft32_frame_cache (this_frame,
> this_cache);
> diff --git a/gdb/gdbarch-gen.h b/gdb/gdbarch-gen.h
> index 7a57bdcebe23..13dd0ed5d5e1 100644
> --- a/gdb/gdbarch-gen.h
> +++ b/gdb/gdbarch-gen.h
> @@ -196,8 +196,8 @@ extern void set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch, gdbarch_p
>
> extern bool gdbarch_pseudo_register_read_value_p (struct gdbarch *gdbarch);
>
> -typedef struct value * (gdbarch_pseudo_register_read_value_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum);
> -extern struct value * gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum);
> +typedef struct value * (gdbarch_pseudo_register_read_value_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum);
> +extern struct value * gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum);
> extern void set_gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, gdbarch_pseudo_register_read_value_ftype *pseudo_register_read_value);
>
> /* Write bytes in BUF to pseudo register with number PSEUDO_REG_NUM.
> @@ -207,8 +207,8 @@ extern void set_gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, gdb
>
> extern bool gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch);
>
> -typedef void (gdbarch_pseudo_register_write_ftype) (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
> -extern void gdbarch_pseudo_register_write (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
> +typedef void (gdbarch_pseudo_register_write_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
> +extern void gdbarch_pseudo_register_write (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf);
> extern void set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch, gdbarch_pseudo_register_write_ftype *pseudo_register_write);
>
> /* Write bytes to a pseudo register.
> @@ -335,8 +335,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, const frame_info_ptr &this_frame);
> +extern struct frame_id gdbarch_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &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
> @@ -362,22 +362,22 @@ extern void set_gdbarch_push_dummy_code (struct gdbarch *gdbarch, gdbarch_push_d
>
> /* Return true if the code of FRAME is writable. */
>
> -typedef int (gdbarch_code_of_frame_writable_ftype) (struct gdbarch *gdbarch, frame_info_ptr frame);
> -extern int gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame);
> +typedef int (gdbarch_code_of_frame_writable_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &frame);
> +extern int gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame);
> extern void set_gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, gdbarch_code_of_frame_writable_ftype *code_of_frame_writable);
>
> -typedef void (gdbarch_print_registers_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all);
> -extern void gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all);
> +typedef void (gdbarch_print_registers_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all);
> +extern void gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all);
> extern void set_gdbarch_print_registers_info (struct gdbarch *gdbarch, gdbarch_print_registers_info_ftype *print_registers_info);
>
> -typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
> -extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
> +typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
> +extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
> extern void set_gdbarch_print_float_info (struct gdbarch *gdbarch, gdbarch_print_float_info_ftype *print_float_info);
>
> extern bool gdbarch_print_vector_info_p (struct gdbarch *gdbarch);
>
> -typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
> -extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args);
> +typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
> +extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args);
> extern void set_gdbarch_print_vector_info (struct gdbarch *gdbarch, gdbarch_print_vector_info_ftype *print_vector_info);
>
> /* MAP a GDB RAW register number onto a simulator register number. See
> @@ -402,8 +402,8 @@ extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_
>
> extern bool gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch);
>
> -typedef int (gdbarch_get_longjmp_target_ftype) (frame_info_ptr frame, CORE_ADDR *pc);
> -extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR *pc);
> +typedef int (gdbarch_get_longjmp_target_ftype) (const frame_info_ptr &frame, CORE_ADDR *pc);
> +extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR *pc);
> extern void set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype *get_longjmp_target);
>
> extern int gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch);
> @@ -413,12 +413,12 @@ 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) (const 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, const frame_info_ptr &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);
> -extern void gdbarch_value_to_register (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, const gdb_byte *buf);
> +typedef void (gdbarch_value_to_register_ftype) (const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf);
> +extern void gdbarch_value_to_register (struct gdbarch *gdbarch, const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf);
> extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_value_to_register_ftype *value_to_register);
>
> /* Construct a value representing the contents of register REGNUM in
> @@ -484,8 +484,8 @@ extern void set_gdbarch_return_value_as_value (struct gdbarch *gdbarch, gdbarch_
>
> May return 0 when unable to determine that address. */
>
> -typedef CORE_ADDR (gdbarch_get_return_buf_addr_ftype) (struct type *val_type, frame_info_ptr cur_frame);
> -extern CORE_ADDR gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, frame_info_ptr cur_frame);
> +typedef CORE_ADDR (gdbarch_get_return_buf_addr_ftype) (struct type *val_type, const frame_info_ptr &cur_frame);
> +extern CORE_ADDR gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, const frame_info_ptr &cur_frame);
> extern void set_gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, gdbarch_get_return_buf_addr_ftype *get_return_buf_addr);
>
> /* Return true if the typedef record needs to be replaced.".
> @@ -635,12 +635,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, const frame_info_ptr &next_frame);
> +extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, const frame_info_ptr &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, const frame_info_ptr &next_frame);
> +extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, const frame_info_ptr &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
> @@ -648,8 +648,8 @@ extern void set_gdbarch_unwind_sp (struct gdbarch *gdbarch, gdbarch_unwind_sp_ft
>
> extern bool gdbarch_frame_num_args_p (struct gdbarch *gdbarch);
>
> -typedef int (gdbarch_frame_num_args_ftype) (frame_info_ptr frame);
> -extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, frame_info_ptr frame);
> +typedef int (gdbarch_frame_num_args_ftype) (const frame_info_ptr &frame);
> +extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, const frame_info_ptr &frame);
> extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
>
> extern bool gdbarch_frame_align_p (struct gdbarch *gdbarch);
> @@ -768,8 +768,8 @@ extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_s
>
> extern bool gdbarch_single_step_through_delay_p (struct gdbarch *gdbarch);
>
> -typedef int (gdbarch_single_step_through_delay_ftype) (struct gdbarch *gdbarch, frame_info_ptr frame);
> -extern int gdbarch_single_step_through_delay (struct gdbarch *gdbarch, frame_info_ptr frame);
> +typedef int (gdbarch_single_step_through_delay_ftype) (struct gdbarch *gdbarch, const frame_info_ptr &frame);
> +extern int gdbarch_single_step_through_delay (struct gdbarch *gdbarch, const frame_info_ptr &frame);
> extern void set_gdbarch_single_step_through_delay (struct gdbarch *gdbarch, gdbarch_single_step_through_delay_ftype *single_step_through_delay);
>
> /* FIXME: cagney/2003-08-28: Need to find a better way of selecting the
> @@ -779,8 +779,8 @@ typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, struct disassemble_info *in
> extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, struct disassemble_info *info);
> extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
>
> -typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (frame_info_ptr frame, CORE_ADDR pc);
> -extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc);
> +typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (const frame_info_ptr &frame, CORE_ADDR pc);
> +extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc);
> extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code);
>
> /* Vtable of solib operations functions. */
> @@ -927,8 +927,8 @@ extern void set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch, gdbarch_re
>
> extern bool gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
>
> -typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (frame_info_ptr frame, int argi, struct type *type);
> -extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, frame_info_ptr frame, int argi, struct type *type);
> +typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (const frame_info_ptr &frame, int argi, struct type *type);
> +extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type);
> extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
>
> /* Iterate over all supported register notes in a core file. For each
> @@ -1732,8 +1732,8 @@ extern void set_gdbarch_type_align (struct gdbarch *gdbarch, gdbarch_type_align_
>
> /* Return a string containing any flags for the given PC in the given FRAME. */
>
> -typedef std::string (gdbarch_get_pc_address_flags_ftype) (frame_info_ptr frame, CORE_ADDR pc);
> -extern std::string gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc);
> +typedef std::string (gdbarch_get_pc_address_flags_ftype) (const frame_info_ptr &frame, CORE_ADDR pc);
> +extern std::string gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc);
> extern void set_gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, gdbarch_get_pc_address_flags_ftype *get_pc_address_flags);
>
> /* Read core file mappings */
> diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
> index b9be3948d1ee..80a04bf0caf8 100644
> --- a/gdb/gdbarch.c
> +++ b/gdb/gdbarch.c
> @@ -1894,7 +1894,7 @@ gdbarch_pseudo_register_read_value_p (struct gdbarch *gdbarch)
> }
>
> struct value *
> -gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, frame_info_ptr next_frame, int cookednum)
> +gdbarch_pseudo_register_read_value (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int cookednum)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->pseudo_register_read_value != NULL);
> @@ -1918,7 +1918,7 @@ gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch)
> }
>
> void
> -gdbarch_pseudo_register_write (struct gdbarch *gdbarch, frame_info_ptr next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
> +gdbarch_pseudo_register_write (struct gdbarch *gdbarch, const frame_info_ptr &next_frame, int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->pseudo_register_write != NULL);
> @@ -2240,7 +2240,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, const frame_info_ptr &this_frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->dummy_id != NULL);
> @@ -2339,7 +2339,7 @@ set_gdbarch_push_dummy_code (struct gdbarch *gdbarch,
> }
>
> int
> -gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, frame_info_ptr frame)
> +gdbarch_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->code_of_frame_writable != NULL);
> @@ -2356,7 +2356,7 @@ set_gdbarch_code_of_frame_writable (struct gdbarch *gdbarch,
> }
>
> void
> -gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, int regnum, int all)
> +gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, int regnum, int all)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->print_registers_info != NULL);
> @@ -2373,7 +2373,7 @@ set_gdbarch_print_registers_info (struct gdbarch *gdbarch,
> }
>
> void
> -gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args)
> +gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->print_float_info != NULL);
> @@ -2397,7 +2397,7 @@ gdbarch_print_vector_info_p (struct gdbarch *gdbarch)
> }
>
> void
> -gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, frame_info_ptr frame, const char *args)
> +gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, const frame_info_ptr &frame, const char *args)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->print_vector_info != NULL);
> @@ -2472,7 +2472,7 @@ gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch)
> }
>
> int
> -gdbarch_get_longjmp_target (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR *pc)
> +gdbarch_get_longjmp_target (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->get_longjmp_target != NULL);
> @@ -2523,7 +2523,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, const frame_info_ptr &frame, int regnum, struct type *type, gdb_byte *buf, int *optimizedp, int *unavailablep)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->register_to_value != NULL);
> @@ -2540,7 +2540,7 @@ set_gdbarch_register_to_value (struct gdbarch *gdbarch,
> }
>
> void
> -gdbarch_value_to_register (struct gdbarch *gdbarch, frame_info_ptr frame, int regnum, struct type *type, const gdb_byte *buf)
> +gdbarch_value_to_register (struct gdbarch *gdbarch, const frame_info_ptr &frame, int regnum, struct type *type, const gdb_byte *buf)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->value_to_register != NULL);
> @@ -2656,7 +2656,7 @@ set_gdbarch_return_value_as_value (struct gdbarch *gdbarch,
> }
>
> CORE_ADDR
> -gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, frame_info_ptr cur_frame)
> +gdbarch_get_return_buf_addr (struct gdbarch *gdbarch, struct type *val_type, const frame_info_ptr &cur_frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->get_return_buf_addr != NULL);
> @@ -3048,7 +3048,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, const frame_info_ptr &next_frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->unwind_pc != NULL);
> @@ -3065,7 +3065,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, const frame_info_ptr &next_frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->unwind_sp != NULL);
> @@ -3089,7 +3089,7 @@ gdbarch_frame_num_args_p (struct gdbarch *gdbarch)
> }
>
> int
> -gdbarch_frame_num_args (struct gdbarch *gdbarch, frame_info_ptr frame)
> +gdbarch_frame_num_args (struct gdbarch *gdbarch, const frame_info_ptr &frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->frame_num_args != NULL);
> @@ -3348,7 +3348,7 @@ gdbarch_single_step_through_delay_p (struct gdbarch *gdbarch)
> }
>
> int
> -gdbarch_single_step_through_delay (struct gdbarch *gdbarch, frame_info_ptr frame)
> +gdbarch_single_step_through_delay (struct gdbarch *gdbarch, const frame_info_ptr &frame)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->single_step_through_delay != NULL);
> @@ -3382,7 +3382,7 @@ set_gdbarch_print_insn (struct gdbarch *gdbarch,
> }
>
> CORE_ADDR
> -gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc)
> +gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->skip_trampoline_code != NULL);
> @@ -3723,7 +3723,7 @@ gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch)
> }
>
> CORE_ADDR
> -gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, frame_info_ptr frame, int argi, struct type *type)
> +gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, const frame_info_ptr &frame, int argi, struct type *type)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->fetch_pointer_argument != NULL);
> @@ -5414,7 +5414,7 @@ set_gdbarch_type_align (struct gdbarch *gdbarch,
> }
>
> std::string
> -gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, frame_info_ptr frame, CORE_ADDR pc)
> +gdbarch_get_pc_address_flags (struct gdbarch *gdbarch, const frame_info_ptr &frame, CORE_ADDR pc)
> {
> gdb_assert (gdbarch != NULL);
> gdb_assert (gdbarch->get_pc_address_flags != NULL);
> diff --git a/gdb/gdbarch_components.py b/gdb/gdbarch_components.py
> index d76b820c1b55..762d48a0187f 100644
> --- a/gdb/gdbarch_components.py
> +++ b/gdb/gdbarch_components.py
> @@ -414,7 +414,7 @@ never be called.
> """,
> type="struct value *",
> name="pseudo_register_read_value",
> - params=[("frame_info_ptr", "next_frame"), ("int", "cookednum")],
> + params=[("const frame_info_ptr &", "next_frame"), ("int", "cookednum")],
> predicate=True,
> )
>
> @@ -428,7 +428,7 @@ NEXT_FRAME.
> type="void",
> name="pseudo_register_write",
> params=[
> - ("frame_info_ptr", "next_frame"),
> + ("const frame_info_ptr &", "next_frame"),
> ("int", "pseudo_reg_num"),
> ("gdb::array_view<const gdb_byte>", "buf"),
> ],
> @@ -628,7 +628,7 @@ frame.
> """,
> type="struct frame_id",
> name="dummy_id",
> - params=[("frame_info_ptr", "this_frame")],
> + params=[("const frame_info_ptr &", "this_frame")],
> predefault="default_dummy_id",
> invalid=False,
> )
> @@ -689,7 +689,7 @@ Return true if the code of FRAME is writable.
> """,
> type="int",
> name="code_of_frame_writable",
> - params=[("frame_info_ptr", "frame")],
> + params=[("const frame_info_ptr &", "frame")],
> predefault="default_code_of_frame_writable",
> invalid=False,
> )
> @@ -699,7 +699,7 @@ Method(
> name="print_registers_info",
> params=[
> ("struct ui_file *", "file"),
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("int", "regnum"),
> ("int", "all"),
> ],
> @@ -712,7 +712,7 @@ Method(
> name="print_float_info",
> params=[
> ("struct ui_file *", "file"),
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("const char *", "args"),
> ],
> predefault="default_print_float_info",
> @@ -724,7 +724,7 @@ Method(
> name="print_vector_info",
> params=[
> ("struct ui_file *", "file"),
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("const char *", "args"),
> ],
> predicate=True,
> @@ -767,7 +767,7 @@ FRAME corresponds to the longjmp frame.
> """,
> type="int",
> name="get_longjmp_target",
> - params=[("frame_info_ptr", "frame"), ("CORE_ADDR *", "pc")],
> + params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR *", "pc")],
> predicate=True,
> )
>
> @@ -789,7 +789,7 @@ Function(
> type="int",
> name="register_to_value",
> params=[
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("int", "regnum"),
> ("struct type *", "type"),
> ("gdb_byte *", "buf"),
> @@ -803,7 +803,7 @@ Function(
> type="void",
> name="value_to_register",
> params=[
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("int", "regnum"),
> ("struct type *", "type"),
> ("const gdb_byte *", "buf"),
> @@ -923,7 +923,7 @@ convention".
> May return 0 when unable to determine that address.""",
> type="CORE_ADDR",
> name="get_return_buf_addr",
> - params=[("struct type *", "val_type"), ("frame_info_ptr", "cur_frame")],
> + params=[("struct type *", "val_type"), ("const frame_info_ptr &", "cur_frame")],
> predefault="default_get_return_buf_addr",
> invalid=False,
> )
> @@ -1157,7 +1157,7 @@ Value(
> Method(
> type="CORE_ADDR",
> name="unwind_pc",
> - params=[("frame_info_ptr", "next_frame")],
> + params=[("const frame_info_ptr &", "next_frame")],
> predefault="default_unwind_pc",
> invalid=False,
> )
> @@ -1165,7 +1165,7 @@ Method(
> Method(
> type="CORE_ADDR",
> name="unwind_sp",
> - params=[("frame_info_ptr", "next_frame")],
> + params=[("const frame_info_ptr &", "next_frame")],
> predefault="default_unwind_sp",
> invalid=False,
> )
> @@ -1177,7 +1177,7 @@ frame-base. Enable frame-base before frame-unwind.
> """,
> type="int",
> name="frame_num_args",
> - params=[("frame_info_ptr", "frame")],
> + params=[("const frame_info_ptr &", "frame")],
> predicate=True,
> )
>
> @@ -1357,7 +1357,7 @@ further single-step is needed before the instruction finishes.
> """,
> type="int",
> name="single_step_through_delay",
> - params=[("frame_info_ptr", "frame")],
> + params=[("const frame_info_ptr &", "frame")],
> predicate=True,
> )
>
> @@ -1376,7 +1376,7 @@ disassembler. Perhaps objdump can handle it?
> Function(
> type="CORE_ADDR",
> name="skip_trampoline_code",
> - params=[("frame_info_ptr", "frame"), ("CORE_ADDR", "pc")],
> + params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR", "pc")],
> predefault="generic_skip_trampoline_code",
> invalid=False,
> )
> @@ -1596,7 +1596,7 @@ Fetch the pointer to the ith function argument.
> type="CORE_ADDR",
> name="fetch_pointer_argument",
> params=[
> - ("frame_info_ptr", "frame"),
> + ("const frame_info_ptr &", "frame"),
> ("int", "argi"),
> ("struct type *", "type"),
> ],
> @@ -2744,7 +2744,7 @@ Return a string containing any flags for the given PC in the given FRAME.
> """,
> type="std::string",
> name="get_pc_address_flags",
> - params=[("frame_info_ptr", "frame"), ("CORE_ADDR", "pc")],
> + params=[("const frame_info_ptr &", "frame"), ("CORE_ADDR", "pc")],
> predefault="default_get_pc_address_flags",
> invalid=False,
> )
> diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
> index faefe9259436..133bf28f6487 100644
> --- a/gdb/gnu-v3-abi.c
> +++ b/gdb/gnu-v3-abi.c
> @@ -1225,7 +1225,7 @@ gnuv3_get_type_from_type_info (struct value *type_info_ptr)
> of the routine we are thunking to and continue to there instead. */
>
> static CORE_ADDR
> -gnuv3_skip_trampoline (frame_info_ptr frame, CORE_ADDR stop_pc)
> +gnuv3_skip_trampoline (const frame_info_ptr &frame, CORE_ADDR stop_pc)
> {
> CORE_ADDR real_stop_pc, method_stop_pc, func_addr;
> struct gdbarch *gdbarch = get_frame_arch (frame);
> diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
> index da5b10517ada..36cbd9d4aa60 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct h8300_frame_cache *cache = h8300_frame_cache (this_frame, this_cache);
> return cache->base;
> @@ -991,7 +991,7 @@ h8300sx_register_name (struct gdbarch *gdbarch, int regno)
>
> static void
> h8300_print_register (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, int regno)
> + const frame_info_ptr &frame, int regno)
> {
> LONGEST rval;
> const char *name = gdbarch_register_name (gdbarch, regno);
> @@ -1068,7 +1068,7 @@ h8300_print_register (struct gdbarch *gdbarch, struct ui_file *file,
>
> static void
> h8300_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, int regno, int cpregs)
> + const frame_info_ptr &frame, int regno, int cpregs)
> {
> if (regno < 0)
> {
> diff --git a/gdb/hppa-bsd-tdep.c b/gdb/hppa-bsd-tdep.c
> index 78e3f3eb6727..b1df3d17aa4d 100644
> --- a/gdb/hppa-bsd-tdep.c
> +++ b/gdb/hppa-bsd-tdep.c
> @@ -104,7 +104,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)
> + const frame_info_ptr &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 4f94b4168107..db0c36801316 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 f6995e77b2af..ccf32c790906 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,
> + const frame_info_ptr &,
> 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
> index 32e46b831cbc..ab7dd56a240d 100644
> --- a/gdb/hppa-tdep.c
> +++ b/gdb/hppa-tdep.c
> @@ -1829,7 +1829,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
>
> @@ -1850,7 +1850,7 @@ struct hppa_frame_cache
> };
>
> static struct hppa_frame_cache *
> -hppa_frame_cache (frame_info_ptr this_frame, void **this_cache)
> +hppa_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -2251,7 +2251,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct hppa_frame_cache *info;
> @@ -2264,7 +2264,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct hppa_frame_cache *info = hppa_frame_cache (this_frame, this_cache);
> @@ -2275,7 +2275,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> if (hppa_find_unwind_entry_in_block (this_frame))
> return 1;
> @@ -2303,7 +2303,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -2376,7 +2376,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct hppa_frame_cache *info =
> @@ -2386,7 +2386,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct hppa_frame_cache *info
> @@ -2415,7 +2415,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct hppa_stub_unwind_cache *info;
> @@ -2436,7 +2436,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -2448,7 +2448,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct hppa_stub_unwind_cache *info
> @@ -2463,7 +2463,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
> @@ -2489,7 +2489,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, const frame_info_ptr &next_frame)
> {
> ULONGEST ipsw;
> CORE_ADDR pc;
> @@ -2675,7 +2675,7 @@ hppa_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
> /* Get the ARGIth function argument for the current function. */
>
> static CORE_ADDR
> -hppa_fetch_pointer_argument (frame_info_ptr frame, int argi,
> +hppa_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
Trailing white space.
> struct type *type)
> {
> return get_frame_register_unsigned (frame, HPPA_R0_REGNUM + 26 - argi);
> @@ -2706,7 +2706,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 (const frame_info_ptr &this_frame,
> trad_frame_saved_reg saved_regs[],
> int regnum)
> {
> @@ -2884,7 +2884,7 @@ hppa_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc)
> systems: $$dyncall, import stubs and PLT stubs. */
>
> CORE_ADDR
> -hppa_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +hppa_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> struct type *func_ptr_type = builtin_type (gdbarch)->builtin_func_ptr;
> diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h
> index 2372dd6dd12d..0f706536cc9d 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) (const frame_info_ptr &this_frame, CORE_ADDR base,
> trad_frame_saved_reg *saved_regs) = nullptr;
>
> /* These are solib-dependent methods. They are really HPUX only, but
> @@ -201,17 +201,17 @@ 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 (const frame_info_ptr &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);
> + const frame_info_ptr &next_frame);
>
> extern int hppa_in_solib_call_trampoline (struct gdbarch *gdbarch,
> CORE_ADDR pc);
> -extern CORE_ADDR hppa_skip_trampoline_code (frame_info_ptr, CORE_ADDR pc);
> +extern CORE_ADDR hppa_skip_trampoline_code (const frame_info_ptr &, CORE_ADDR pc);
>
> #endif /* hppa-tdep.h */
> diff --git a/gdb/i386-bsd-tdep.c b/gdb/i386-bsd-tdep.c
> index eb20bc6e2b54..8470f2b6d2f9 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 (const frame_info_ptr &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 8da6b4df2b78..fc0a3dd3909e 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 (const frame_info_ptr &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)
> + const frame_info_ptr &this_frame)
> {
> return i386_sigtramp_p (this_frame);
> }
> diff --git a/gdb/i386-darwin-tdep.h b/gdb/i386-darwin-tdep.h
> index 8f955f6828b7..0b867fab94c1 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 *, const frame_info_ptr &);
>
> #endif /* I386_DARWIN_TDEP_H */
> diff --git a/gdb/i386-fbsd-tdep.c b/gdb/i386-fbsd-tdep.c
> index ea1db3abd6ba..2b9ef77e5e6d 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,
> + const frame_info_ptr &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 9ff471475131..aa1898693b61 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 996dda0077f8..a2f937690c2e 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
> + const frame_info_ptr &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 (const frame_info_ptr &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 270413e59d87..9596435e9d10 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,
> + const frame_info_ptr &,
> 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,
> + const frame_info_ptr &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 5e959df4df36..f4bb70cc5a08 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 (const frame_info_ptr &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 (const frame_info_ptr &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 38ba280e4056..e1480ec6cc41 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> ULONGEST cs;
> diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c
> index ae4e2946789c..bc8df378219d 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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR sp, ucontext_addr;
>
> diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
> index d8691f038454..b487a3f74788 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
> @@ -2230,7 +2230,7 @@ i386_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> static int
> i386_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache, bool override_p)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2263,7 +2263,7 @@ i386_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
>
> static int
> i386_epilogue_override_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> return i386_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
> @@ -2272,7 +2272,7 @@ i386_epilogue_override_frame_sniffer (const struct frame_unwind *self,
>
> static int
> i386_epilogue_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> return i386_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
> @@ -2280,7 +2280,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct i386_frame_cache *cache;
> CORE_ADDR sp;
> @@ -2315,7 +2315,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct i386_frame_cache *cache =
> @@ -2328,7 +2328,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -2342,7 +2342,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> /* Make sure we've initialized the cache. */
> @@ -2435,7 +2435,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> if (frame_relative_level (this_frame) == 0)
> @@ -2475,7 +2475,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
> @@ -2524,7 +2524,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct i386_frame_cache *cache =
> @@ -2537,7 +2537,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct i386_frame_cache *cache =
> @@ -2553,7 +2553,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> /* Make sure we've initialized the cache. */
> @@ -2564,7 +2564,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> gdbarch *arch = get_frame_arch (this_frame);
> @@ -2606,7 +2606,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
>
> @@ -2622,7 +2622,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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR fp;
>
> @@ -2649,7 +2649,7 @@ i386_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
> success. */
>
> static int
> -i386_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +i386_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> gdb_byte buf[4];
> CORE_ADDR sp, jb_addr;
> @@ -3395,7 +3395,7 @@ i386_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
> the MMX registers need to be mapped onto floating point registers. */
>
> static int
> -i386_mmx_regnum_to_fp_regnum (frame_info_ptr next_frame, int regnum)
> +i386_mmx_regnum_to_fp_regnum (const frame_info_ptr &next_frame, int regnum)
> {
> gdbarch *arch = frame_unwind_arch (next_frame);
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (arch);
> @@ -3413,7 +3413,7 @@ i386_mmx_regnum_to_fp_regnum (frame_info_ptr next_frame, int regnum)
> the data into an already-allocated value. */
>
> value *
> -i386_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> +i386_pseudo_register_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num)
> {
> if (i386_mmx_regnum_p (gdbarch, pseudo_reg_num))
> @@ -3517,7 +3517,7 @@ i386_pseudo_register_read_value (gdbarch *gdbarch, frame_info_ptr next_frame,
> }
>
> void
> -i386_pseudo_register_write (gdbarch *gdbarch, frame_info_ptr next_frame,
> +i386_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
> const int pseudo_reg_num,
> gdb::array_view<const gdb_byte> buf)
> {
> @@ -3750,7 +3750,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 (const frame_info_ptr &frame, int regnum,
> struct type *type, gdb_byte *to,
> int *optimizedp, int *unavailablep)
> {
> @@ -3790,7 +3790,7 @@ i386_register_to_value (frame_info_ptr frame, int regnum,
> REGNUM in frame FRAME. */
>
> static void
> -i386_value_to_register (frame_info_ptr frame, int regnum,
> +i386_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *type, const gdb_byte *from)
> {
> int len = type->length ();
> @@ -3944,7 +3944,7 @@ i386_iterate_over_regset_sections (struct gdbarch *gdbarch,
> /* Stuff for WIN32 PE style DLL's but is pretty generic really. */
>
> CORE_ADDR
> -i386_pe_skip_trampoline_code (frame_info_ptr frame,
> +i386_pe_skip_trampoline_code (const frame_info_ptr &frame,
> CORE_ADDR pc, char *name)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -3975,7 +3975,7 @@ i386_pe_skip_trampoline_code (frame_info_ptr frame,
> routine. */
>
> int
> -i386_sigtramp_p (frame_info_ptr this_frame)
> +i386_sigtramp_p (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> const char *name;
> @@ -4011,7 +4011,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> const char *name;
> @@ -4026,7 +4026,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 (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -4582,7 +4582,7 @@ i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
> /* Get the ARGIth function argument for the current function. */
>
> static CORE_ADDR
> -i386_fetch_pointer_argument (frame_info_ptr frame, int argi,
> +i386_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
> struct type *type)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
> index e7699f0f1894..a85e0a984a0f 100644
> --- a/gdb/i386-tdep.h
> +++ b/gdb/i386-tdep.h
> @@ -227,10 +227,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) (const frame_info_ptr &) = nullptr;
>
> /* Get address of sigcontext for sigtramp. */
> - CORE_ADDR (*sigcontext_addr) (frame_info_ptr) = nullptr;
> + CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
>
> /* Offset of registers in `struct sigcontext'. */
> int *sc_reg_offset = 0;
> @@ -377,11 +377,11 @@ extern struct type *i386_pseudo_register_type (struct gdbarch *gdbarch,
> int regnum);
>
> extern value *i386_pseudo_register_read_value (gdbarch *gdbarch,
> - frame_info_ptr next_frame,
> + const frame_info_ptr &next_frame,
> int regnum);
>
> extern void i386_pseudo_register_write (gdbarch *gdbarch,
> - frame_info_ptr next_frame, int regnum,
> + const frame_info_ptr &next_frame, int regnum,
> gdb::array_view<const gdb_byte> buf);
>
> extern int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
> @@ -398,7 +398,7 @@ extern int i386_ax_pseudo_register_collect (struct gdbarch *gdbarch,
> #define I386_MAX_INSN_LEN (16)
>
> /* Functions exported from i386-tdep.c. */
> -extern CORE_ADDR i386_pe_skip_trampoline_code (frame_info_ptr frame,
> +extern CORE_ADDR i386_pe_skip_trampoline_code (const frame_info_ptr &frame,
> CORE_ADDR pc, char *name);
> extern CORE_ADDR i386_skip_main_prologue (struct gdbarch *gdbarch,
> CORE_ADDR pc);
> @@ -417,7 +417,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 (const frame_info_ptr &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/i386-windows-tdep.c b/gdb/i386-windows-tdep.c
> index f1cc10fe3c55..cd5c580a3e8d 100644
> --- a/gdb/i386-windows-tdep.c
> +++ b/gdb/i386-windows-tdep.c
> @@ -90,7 +90,7 @@ static int i386_windows_gregset_reg_offset[] =
> #define I386_WINDOWS_SIZEOF_GREGSET 716
>
> static CORE_ADDR
> -i386_windows_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +i386_windows_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> return i386_pe_skip_trampoline_code (frame, pc, NULL);
> }
> diff --git a/gdb/i387-tdep.c b/gdb/i387-tdep.c
> index d73e3ba40ae1..3d979e279a1e 100644
> --- a/gdb/i387-tdep.c
> +++ b/gdb/i387-tdep.c
> @@ -202,7 +202,7 @@ print_i387_control_word (int control_p,
>
> void
> i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, const char *args)
> + const frame_info_ptr &frame, const char *args)
> {
> i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
> ULONGEST fctrl;
> @@ -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 (const frame_info_ptr &frame, int regnum,
> struct type *type, gdb_byte *to,
> int *optimizedp, int *unavailablep)
> {
> @@ -380,7 +380,7 @@ i387_register_to_value (frame_info_ptr frame, int regnum,
> REGNUM in frame FRAME. */
>
> void
> -i387_value_to_register (frame_info_ptr frame, int regnum,
> +i387_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *type, const gdb_byte *from)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> diff --git a/gdb/i387-tdep.h b/gdb/i387-tdep.h
> index aa1cce7d9523..30d769478a6c 100644
> --- a/gdb/i387-tdep.h
> +++ b/gdb/i387-tdep.h
> @@ -90,7 +90,7 @@ struct x86_xsave_layout;
>
> extern void i387_print_float_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> const char *args);
>
> /* Return nonzero if a value of type TYPE stored in register REGNUM
> @@ -102,14 +102,14 @@ 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 (const frame_info_ptr &frame, int regnum,
> struct type *type, gdb_byte *to,
> int *optimizedp, int *unavailablep);
>
> /* Write the contents FROM of a value of type TYPE into register
> REGNUM in frame FRAME. */
>
> -extern void i387_value_to_register (frame_info_ptr frame, int regnum,
> +extern void i387_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *type, const gdb_byte *from);
> \f
>
> diff --git a/gdb/ia64-libunwind-tdep.c b/gdb/ia64-libunwind-tdep.c
> index a61e90fc5bea..24a5162cdc65 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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> unw_accessors_t *acc;
> unw_addr_space_t as;
> @@ -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)
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> unw_cursor_t cursor;
> diff --git a/gdb/ia64-libunwind-tdep.h b/gdb/ia64-libunwind-tdep.h
> index e490e839fc27..4f064bfc333f 100644
> --- a/gdb/ia64-libunwind-tdep.h
> +++ b/gdb/ia64-libunwind-tdep.h
> @@ -48,19 +48,19 @@ struct libunwind_descr
> };
>
> int libunwind_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_cache);
>
> int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum);
> void libunwind_frame_dealloc_cache (frame_info_ptr self, void *cache);
>
> diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
> index afff210986ba..88f67ccf0962 100644
> --- a/gdb/ia64-tdep.c
> +++ b/gdb/ia64-tdep.c
> @@ -1219,7 +1219,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 (const frame_info_ptr &frame, int regnum,
> struct type *valtype, gdb_byte *out,
> int *optimizedp, int *unavailablep)
> {
> @@ -1239,7 +1239,7 @@ ia64_register_to_value (frame_info_ptr frame, int regnum,
> }
>
> static void
> -ia64_value_to_register (frame_info_ptr frame, int regnum,
> +ia64_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *valtype, const gdb_byte *in)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -1361,7 +1361,7 @@ ia64_alloc_frame_cache (void)
>
> static CORE_ADDR
> examine_prologue (CORE_ADDR pc, CORE_ADDR lim_pc,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> struct ia64_frame_cache *cache)
> {
> CORE_ADDR next_pc;
> @@ -1842,7 +1842,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -1887,7 +1887,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1908,7 +1908,7 @@ ia64_frame_this_id (frame_info_ptr this_frame, void **this_cache,
> }
>
> static struct value *
> -ia64_frame_prev_register (frame_info_ptr this_frame, void **this_cache,
> +ia64_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2176,7 +2176,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 (const frame_info_ptr &this_frame,
> struct ia64_frame_cache *cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2230,7 +2230,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -2261,7 +2261,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2282,7 +2282,7 @@ ia64_sigtramp_frame_this_id (frame_info_ptr this_frame,
> }
>
> static struct value *
> -ia64_sigtramp_frame_prev_register (frame_info_ptr this_frame,
> +ia64_sigtramp_frame_prev_register (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct ia64_frame_cache *cache =
> @@ -2335,7 +2335,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> gdbarch *arch = get_frame_arch (this_frame);
> @@ -2365,7 +2365,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct ia64_frame_cache *cache = ia64_frame_cache (this_frame, this_cache);
>
> @@ -2541,7 +2541,7 @@ ia64_access_fpreg (unw_addr_space_t as, unw_regnum_t uw_regnum,
> unw_fpreg_t *val, int write, void *arg)
> {
> int regnum = ia64_uw2gdb_regnum (uw_regnum);
> - frame_info_ptr this_frame = (frame_info_ptr) arg;
> + frame_info_ptr this_frame = (const frame_info_ptr &) arg;
>
> /* We never call any libunwind routines that need to write registers. */
> gdb_assert (!write);
> @@ -2894,7 +2894,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2928,7 +2928,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> int reg = regnum;
> @@ -3001,7 +3001,7 @@ ia64_libunwind_frame_prev_register (frame_info_ptr this_frame,
>
> static int
> ia64_libunwind_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> if (libunwind_is_initialized ()
> @@ -3024,7 +3024,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -3060,7 +3060,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3087,7 +3087,7 @@ ia64_libunwind_sigtramp_frame_prev_register (frame_info_ptr this_frame,
>
> static int
> ia64_libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> if (libunwind_is_initialized ())
> @@ -3864,7 +3864,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, const frame_info_ptr &this_frame)
> {
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> gdb_byte buf[8];
> @@ -3886,7 +3886,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, const frame_info_ptr &next_frame)
> {
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> gdb_byte buf[8];
> @@ -3911,7 +3911,7 @@ ia64_print_insn (bfd_vma memaddr, struct disassemble_info *info)
> /* The default "size_of_register_frame" gdbarch_tdep routine for ia64. */
>
> static int
> -ia64_size_of_register_frame (frame_info_ptr this_frame, ULONGEST cfm)
> +ia64_size_of_register_frame (const frame_info_ptr &this_frame, ULONGEST cfm)
> {
> return (cfm & 0x7f);
> }
> diff --git a/gdb/ia64-tdep.h b/gdb/ia64-tdep.h
> index a623a7e58aef..64be38b4d766 100644
> --- a/gdb/ia64-tdep.h
> +++ b/gdb/ia64-tdep.h
> @@ -240,7 +240,7 @@ struct ia64_gdbarch_tdep : gdbarch_tdep_base
>
> Normally, the size of the register frame is always obtained by
> extracting the lowest 7 bits ("cfm & 0x7f"). */
> - int (*size_of_register_frame) (frame_info_ptr this_frame, ULONGEST cfm)
> + int (*size_of_register_frame) (const frame_info_ptr &this_frame, ULONGEST cfm)
> = nullptr;
>
> /* Determine the function address FADDR belongs to a shared library.
> diff --git a/gdb/infcmd.c b/gdb/infcmd.c
> index 4e17a6b06295..c1fdbb300c67 100644
> --- a/gdb/infcmd.c
> +++ b/gdb/infcmd.c
> @@ -1743,7 +1743,7 @@ finish_backward (struct finish_command_fsm *sm)
> frame that called the function we're about to step out of. */
>
> static void
> -finish_forward (struct finish_command_fsm *sm, frame_info_ptr frame)
> +finish_forward (struct finish_command_fsm *sm, const frame_info_ptr &frame)
> {
> struct frame_id frame_id = get_frame_id (frame);
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -1768,9 +1768,10 @@ finish_forward (struct finish_command_fsm *sm, frame_info_ptr frame)
> /* Skip frames for "finish". */
>
> static frame_info_ptr
> -skip_finish_frames (frame_info_ptr frame)
> +skip_finish_frames (const frame_info_ptr &initial_frame)
> {
> frame_info_ptr start;
> + frame_info_ptr frame = initial_frame;
>
> do
> {
> @@ -2256,7 +2257,7 @@ default_print_one_register_info (struct ui_file *file,
> void
> default_print_registers_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int regnum, int print_all)
> {
> int i;
> @@ -2416,7 +2417,7 @@ info_registers_command (const char *addr_exp, int from_tty)
>
> static void
> print_vector_info (struct ui_file *file,
> - frame_info_ptr frame, const char *args)
> + const frame_info_ptr &frame, const char *args)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> @@ -2953,7 +2954,7 @@ interrupt_command (const char *args, int from_tty)
>
> void
> default_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, const char *args)
> + const frame_info_ptr &frame, const char *args)
> {
> int regnum;
> int printed_something = 0;
> diff --git a/gdb/inferior.h b/gdb/inferior.h
> index f577bb1642d0..7be28423aeb1 100644
> --- a/gdb/inferior.h
> +++ b/gdb/inferior.h
> @@ -156,7 +156,7 @@ extern void reopen_exec_file (void);
>
> extern void default_print_registers_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int regnum, int all);
>
> /* Default implementation of gdbarch_print_float_info. Print
> @@ -164,7 +164,7 @@ extern void default_print_registers_info (struct gdbarch *gdbarch,
>
> extern void default_print_float_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> const char *args);
>
> /* Try to determine whether TTY is GDB's input terminal. Returns
> diff --git a/gdb/infrun.c b/gdb/infrun.c
> index fa68ab8296e9..bbb98f6dcdb3 100644
> --- a/gdb/infrun.c
> +++ b/gdb/infrun.c
> @@ -88,9 +88,9 @@ static void follow_inferior_reset_breakpoints (void);
>
> static bool currently_stepping (struct thread_info *tp);
>
> -static void insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr);
> +static void insert_hp_step_resume_breakpoint_at_frame (const frame_info_ptr &);
>
> -static void insert_step_resume_breakpoint_at_caller (frame_info_ptr);
> +static void insert_step_resume_breakpoint_at_caller (const frame_info_ptr &);
>
> static void insert_longjmp_resume_breakpoint (struct gdbarch *, CORE_ADDR);
>
> @@ -3838,7 +3838,7 @@ static void handle_step_into_function_backward (struct gdbarch *gdbarch,
> struct execution_control_state *ecs);
> static void handle_signal_stop (struct execution_control_state *ecs);
> static void check_exception_resume (struct execution_control_state *,
> - frame_info_ptr);
> + const frame_info_ptr &);
>
> static void end_stepping_range (struct execution_control_state *ecs);
> static void stop_waiting (struct execution_control_state *ecs);
> @@ -4771,7 +4771,7 @@ fetch_inferior_event ()
> /* See infrun.h. */
>
> void
> -set_step_info (thread_info *tp, frame_info_ptr frame,
> +set_step_info (thread_info *tp, const frame_info_ptr &frame,
> struct symtab_and_line sal)
> {
> /* This can be removed once this function no longer implicitly relies on the
> @@ -5003,8 +5003,10 @@ adjust_pc_after_break (struct thread_info *thread,
> }
>
> static bool
> -stepped_in_from (frame_info_ptr frame, struct frame_id step_frame_id)
> +stepped_in_from (const frame_info_ptr &initial_frame, frame_id step_frame_id)
> {
> + frame_info_ptr frame = initial_frame;
> +
> for (frame = get_prev_frame (frame);
> frame != nullptr;
> frame = get_prev_frame (frame))
> @@ -8742,7 +8744,7 @@ insert_step_resume_breakpoint_at_sal (struct gdbarch *gdbarch,
> RETURN_FRAME.pc. */
>
> static void
> -insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr return_frame)
> +insert_hp_step_resume_breakpoint_at_frame (const frame_info_ptr &return_frame)
> {
> gdb_assert (return_frame != nullptr);
>
> @@ -8773,7 +8775,7 @@ insert_hp_step_resume_breakpoint_at_frame (frame_info_ptr return_frame)
> of frame_unwind_caller_id for an example). */
>
> static void
> -insert_step_resume_breakpoint_at_caller (frame_info_ptr next_frame)
> +insert_step_resume_breakpoint_at_caller (const frame_info_ptr &next_frame)
> {
> /* We shouldn't have gotten here if we don't know where the call site
> is. */
> @@ -8820,7 +8822,7 @@ insert_longjmp_resume_breakpoint (struct gdbarch *gdbarch, CORE_ADDR pc)
> static void
> insert_exception_resume_breakpoint (struct thread_info *tp,
> const struct block *b,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> struct symbol *sym)
> {
> try
> @@ -8863,7 +8865,7 @@ insert_exception_resume_breakpoint (struct thread_info *tp,
> static void
> insert_exception_resume_from_probe (struct thread_info *tp,
> const struct bound_probe *probe,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> struct value *arg_value;
> CORE_ADDR handler;
> @@ -8892,7 +8894,7 @@ insert_exception_resume_from_probe (struct thread_info *tp,
>
> static void
> check_exception_resume (struct execution_control_state *ecs,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> struct bound_probe probe;
> struct symbol *func;
> diff --git a/gdb/infrun.h b/gdb/infrun.h
> index ba72212d5622..6339fd997e15 100644
> --- a/gdb/infrun.h
> +++ b/gdb/infrun.h
> @@ -207,7 +207,7 @@ extern int stepping_past_nonsteppable_watchpoint (void);
>
> /* Record in TP the frame and location we're currently stepping through. */
> extern void set_step_info (thread_info *tp,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> struct symtab_and_line sal);
>
> /* Notify interpreters and observers that the current inferior has stopped with
> diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
> index 02dbcd12af1f..9f3deef8f030 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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> /* Use get_frame_register_value instead of
> @@ -208,7 +208,7 @@ 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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR this_pc;
> @@ -441,7 +441,7 @@ inline_skipped_symbol (thread_info *thread)
> skip_inline_frames). */
>
> int
> -frame_inlined_callees (frame_info_ptr this_frame)
> +frame_inlined_callees (const frame_info_ptr &this_frame)
> {
> frame_info_ptr next_frame;
> int inline_count = 0;
> diff --git a/gdb/inline-frame.h b/gdb/inline-frame.h
> index e19b60e010f6..bbe617c7c5b2 100644
> --- a/gdb/inline-frame.h
> +++ b/gdb/inline-frame.h
> @@ -68,6 +68,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 (const frame_info_ptr &this_frame);
>
> #endif /* !defined (INLINE_FRAME_H) */
> diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c
> index 937a3513df44..4177de059c0d 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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 f1dbf39f73fd..3ca9cdabf9da 100644
> --- a/gdb/jit.c
> +++ b/gdb/jit.c
> @@ -1008,7 +1008,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)
> + const frame_info_ptr &this_frame, void **cache)
> {
> struct jit_unwind_private *priv_data;
> struct gdb_unwind_callbacks callbacks;
> @@ -1054,7 +1054,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 (const frame_info_ptr &this_frame, void **cache,
> struct frame_id *this_id)
> {
> struct jit_unwind_private priv;
> @@ -1083,7 +1083,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 (const frame_info_ptr &this_frame, void **cache, int reg)
> {
> struct jit_unwind_private *priv = (struct jit_unwind_private *) *cache;
> struct gdbarch *gdbarch;
> diff --git a/gdb/language.h b/gdb/language.h
> index 5bef965c2c86..c2eae4f74343 100644
> --- a/gdb/language.h
> +++ b/gdb/language.h
> @@ -321,7 +321,7 @@ struct language_defn
>
> virtual struct value *read_var_value (struct symbol *var,
> const struct block *var_block,
> - frame_info_ptr frame) const;
> + const frame_info_ptr &frame) const;
>
> /* Return information about whether TYPE should be passed
> (and returned) by reference at the language level. The default
> diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c
> index 12e9b5ad4fd6..b4605e48c6a3 100644
> --- a/gdb/lm32-tdep.c
> +++ b/gdb/lm32-tdep.c
> @@ -379,7 +379,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
> {
> CORE_ADDR current_pc;
> ULONGEST prev_sp;
> @@ -425,7 +425,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct lm32_frame_cache *cache = lm32_frame_cache (this_frame, this_cache);
> @@ -438,7 +438,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct lm32_frame_cache *info;
> @@ -458,7 +458,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 (const frame_info_ptr &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 f1471d53ff4c..5ea648acd813 100644
> --- a/gdb/loongarch-linux-tdep.c
> +++ b/gdb/loongarch-linux-tdep.c
> @@ -446,7 +446,7 @@ const struct regset loongarch_lbtregset =
>
> static void
> loongarch_linux_rt_sigframe_init (const struct tramp_frame *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -521,7 +521,7 @@ loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch,
> instruction to be executed. */
>
> static CORE_ADDR
> -loongarch_linux_syscall_next_pc (frame_info_ptr frame)
> +loongarch_linux_syscall_next_pc (const frame_info_ptr &frame)
> {
> const CORE_ADDR pc = get_frame_pc (frame);
> ULONGEST a7 = get_frame_register_unsigned (frame, LOONGARCH_A7_REGNUM);
> diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c
> index 0f4622a55be3..0b38e751d165 100644
> --- a/gdb/loongarch-tdep.c
> +++ b/gdb/loongarch-tdep.c
> @@ -113,7 +113,7 @@ loongarch_insn_is_sc (insn_t insn)
>
> static CORE_ADDR
> loongarch_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc,
> - CORE_ADDR limit_pc, frame_info_ptr this_frame,
> + CORE_ADDR limit_pc, const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache)
> {
> CORE_ADDR cur_pc = start_pc, prologue_end = 0;
> @@ -390,7 +390,7 @@ loongarch_software_single_step (struct regcache *regcache)
> /* Callback function for user_reg_add. */
>
> static struct value *
> -value_of_loongarch_user_reg (frame_info_ptr frame, const void *baton)
> +value_of_loongarch_user_reg (const frame_info_ptr &frame, const void *baton)
> {
> return value_of_register ((long long) baton,
> get_next_frame_sentinel_okay (frame));
> @@ -407,7 +407,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct trad_frame_cache *cache;
> CORE_ADDR pc;
> @@ -429,7 +429,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 (const frame_info_ptr &this_frame, void **prologue_cache,
> struct frame_id *this_id)
> {
> struct trad_frame_cache *info;
> @@ -441,7 +441,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 (const frame_info_ptr &this_frame,
> void **prologue_cache, int regnum)
> {
> struct trad_frame_cache *info;
> diff --git a/gdb/loongarch-tdep.h b/gdb/loongarch-tdep.h
> index bfe398898c00..5c8108182ad6 100644
> --- a/gdb/loongarch-tdep.h
> +++ b/gdb/loongarch-tdep.h
> @@ -41,7 +41,7 @@ struct loongarch_gdbarch_tdep : gdbarch_tdep_base
> struct loongarch_gdbarch_features abi_features;
>
> /* Return the expected next PC if FRAME is stopped at a syscall instruction. */
> - CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
> + CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
> };
>
> #endif /* LOONGARCH_TDEP_H */
> diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c
> index 8da15fefe800..0895f7bd0c4b 100644
> --- a/gdb/m32c-tdep.c
> +++ b/gdb/m32c-tdep.c
> @@ -1854,7 +1854,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (! *this_prologue_cache)
> @@ -1878,7 +1878,7 @@ m32c_analyze_frame_prologue (frame_info_ptr this_frame,
>
>
> static CORE_ADDR
> -m32c_frame_base (frame_info_ptr this_frame,
> +m32c_frame_base (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct m32c_prologue *p
> @@ -1918,7 +1918,7 @@ m32c_frame_base (frame_info_ptr this_frame,
>
>
> static void
> -m32c_this_id (frame_info_ptr this_frame,
> +m32c_this_id (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -1931,7 +1931,7 @@ m32c_this_id (frame_info_ptr this_frame,
>
>
> static struct value *
> -m32c_prev_register (frame_info_ptr this_frame,
> +m32c_prev_register (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> gdbarch *arch = get_frame_arch (this_frame);
> @@ -2309,7 +2309,7 @@ m32c_return_value (struct gdbarch *gdbarch,
> code sequence seems more fragile. */
>
> static CORE_ADDR
> -m32c_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR stop_pc)
> +m32c_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR stop_pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> m32c_gdbarch_tdep *tdep = gdbarch_tdep<m32c_gdbarch_tdep> (gdbarch);
> diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c
> index ec054fa263ef..b74d2f3f161b 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, const frame_info_ptr &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, const frame_info_ptr &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)
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 73855947e632..0bd6b499e6f0 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 a8466e31b58e..d80b190f2c0f 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
> {
> ULONGEST tos;
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -997,7 +997,7 @@ m68hc11_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
> /* Get and print the register from the given frame. */
> static void
> m68hc11_print_register (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, int regno)
> + const frame_info_ptr &frame, int regno)
> {
> LONGEST rval;
>
> @@ -1084,7 +1084,7 @@ m68hc11_print_register (struct gdbarch *gdbarch, struct ui_file *file,
> /* Same as 'info reg' but prints the registers in a different way. */
> static void
> m68hc11_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, int regno, int cpregs)
> + const frame_info_ptr &frame, int regno, int cpregs)
> {
> if (regno >= 0)
> {
> diff --git a/gdb/m68k-linux-tdep.c b/gdb/m68k-linux-tdep.c
> index 9004b2e55b44..eca4ede099f7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 1ae5c33e8420..abfc605aabb6 100644
> --- a/gdb/m68k-tdep.c
> +++ b/gdb/m68k-tdep.c
> @@ -205,7 +205,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 (const frame_info_ptr &frame, int regnum,
> struct type *type, gdb_byte *to,
> int *optimizedp, int *unavailablep)
> {
> @@ -232,7 +232,7 @@ m68k_register_to_value (frame_info_ptr frame, int regnum,
> REGNUM in frame FRAME. */
>
> static void
> -m68k_value_to_register (frame_info_ptr frame, int regnum,
> +m68k_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *type, const gdb_byte *from)
> {
> gdb_byte to[M68K_MAX_REGISTER_SIZE];
> @@ -900,7 +900,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, const frame_info_ptr &next_frame)
> {
> gdb_byte buf[8];
>
> @@ -911,7 +911,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -976,7 +976,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
> @@ -990,7 +990,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
> @@ -1019,7 +1019,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct m68k_frame_cache *cache = m68k_frame_cache (this_frame, this_cache);
>
> @@ -1035,7 +1035,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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR fp;
>
> @@ -1052,7 +1052,7 @@ m68k_dummy_id (struct gdbarch *gdbarch, frame_info_ptr this_frame)
> This routine returns true on success. */
>
> static int
> -m68k_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +m68k_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> gdb_byte *buf;
> CORE_ADDR sp, jb_addr;
> diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
> index 573711e8ba43..f455d3eb51d6 100644
> --- a/gdb/mep-tdep.c
> +++ b/gdb/mep-tdep.c
> @@ -1913,7 +1913,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (! *this_prologue_cache)
> @@ -1943,7 +1943,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct mep_prologue *p
> @@ -1971,7 +1971,7 @@ mep_frame_base (frame_info_ptr this_frame,
>
>
> static void
> -mep_frame_this_id (frame_info_ptr this_frame,
> +mep_frame_this_id (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -1981,7 +1981,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct mep_prologue *p
> diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
> index d4202b99514a..09c31b6a9a4c 100644
> --- a/gdb/mi/mi-cmd-stack.c
> +++ b/gdb/mi/mi-cmd-stack.c
> @@ -44,7 +44,7 @@ enum what_to_list { locals, arguments, all };
> static void list_args_or_locals (const frame_print_options &fp_opts,
> enum what_to_list what,
> enum print_values values,
> - frame_info_ptr fi,
> + const frame_info_ptr &fi,
> int skip_unavailable);
>
> /* True if we want to allow Python-based frame filters. */
> @@ -62,7 +62,7 @@ mi_cmd_enable_frame_filters (const char *command, const char *const *argv,
> /* Like apply_ext_lang_frame_filter, but take a print_values */
>
> static enum ext_lang_bt_status
> -mi_apply_ext_lang_frame_filter (frame_info_ptr frame,
> +mi_apply_ext_lang_frame_filter (const frame_info_ptr &frame,
> frame_filter_flags flags,
> enum print_values print_values,
> struct ui_out *out,
> @@ -577,7 +577,7 @@ list_arg_or_local (const struct frame_arg *arg, enum what_to_list what,
> static void
> list_args_or_locals (const frame_print_options &fp_opts,
> enum what_to_list what, enum print_values values,
> - frame_info_ptr fi, int skip_unavailable)
> + const frame_info_ptr &fi, int skip_unavailable)
> {
> const struct block *block;
> const char *name_of_result;
> diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
> index db670e318f89..f4ab17915ecb 100644
> --- a/gdb/mi/mi-main.c
> +++ b/gdb/mi/mi-main.c
> @@ -89,7 +89,7 @@ static void mi_execute_async_cli_command (const char *cli_command,
> const char *const *argv, int argc);
> static bool register_changed_p (int regnum, readonly_detached_regcache *,
> readonly_detached_regcache *);
> -static void output_register (frame_info_ptr, int regnum, int format,
> +static void output_register (const frame_info_ptr &, int regnum, int format,
> int skip_unavailable);
>
> /* Controls whether the frontend wants MI in async mode. */
> @@ -1097,7 +1097,7 @@ mi_cmd_data_list_register_values (const char *command, const char *const *argv,
> unavailable. */
>
> static void
> -output_register (frame_info_ptr frame, int regnum, int format,
> +output_register (const frame_info_ptr &frame, int regnum, int format,
> int skip_unavailable)
> {
> struct ui_out *uiout = current_uiout;
> diff --git a/gdb/microblaze-linux-tdep.c b/gdb/microblaze-linux-tdep.c
> index 7d620a3688b9..6236ab0a0447 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 (const frame_info_ptr &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,
> + const frame_info_ptr &next_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
> index fc83634d1e67..07261bd4d22f 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &next_frame,
> void **this_cache)
> {
> struct microblaze_frame_cache *cache =
> diff --git a/gdb/minsyms.c b/gdb/minsyms.c
> index 1b85424586fc..2a43175a170d 100644
> --- a/gdb/minsyms.c
> +++ b/gdb/minsyms.c
> @@ -1564,7 +1564,7 @@ lookup_solib_trampoline_symbol_by_pc (CORE_ADDR pc)
> a duplicate function in case this matters someday. */
>
> CORE_ADDR
> -find_solib_trampoline_target (frame_info_ptr frame, CORE_ADDR pc)
> +find_solib_trampoline_target (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct minimal_symbol *tsymbol = lookup_solib_trampoline_symbol_by_pc (pc);
>
> diff --git a/gdb/mips-fbsd-tdep.c b/gdb/mips-fbsd-tdep.c
> index 97ad5e79cab5..8464a92bf4af 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &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 9ecf698113b1..0b5e7867788d 100644
> --- a/gdb/mips-linux-tdep.c
> +++ b/gdb/mips-linux-tdep.c
> @@ -94,7 +94,7 @@ enum
> #define MIPS_LINUX_JB_PC 0
>
> static int
> -mips_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +mips_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> CORE_ADDR jb_addr;
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -247,7 +247,7 @@ mips_fill_gregset_wrapper (const struct regset *regset,
> #define MIPS64_LINUX_JB_PC 0
>
> static int
> -mips64_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +mips64_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> CORE_ADDR jb_addr;
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -714,21 +714,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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> CORE_ADDR *pc);
>
> static int micromips_linux_sigframe_validate (const struct tramp_frame *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &this_frame,
> CORE_ADDR *pc);
>
> #define MIPS_NR_LINUX 4000
> @@ -957,7 +957,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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -1150,7 +1150,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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -1235,7 +1235,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,
> + const frame_info_ptr &this_frame,
> CORE_ADDR *pc)
> {
> return mips_pc_is_mips (*pc);
> @@ -1245,7 +1245,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,
> + const frame_info_ptr &this_frame,
> CORE_ADDR *pc)
> {
> if (mips_pc_is_micromips (get_frame_arch (this_frame), *pc))
> @@ -1290,7 +1290,7 @@ mips_linux_restart_reg_p (struct gdbarch *gdbarch)
> instruction to be executed. */
>
> static CORE_ADDR
> -mips_linux_syscall_next_pc (frame_info_ptr frame)
> +mips_linux_syscall_next_pc (const frame_info_ptr &frame)
> {
> CORE_ADDR pc = get_frame_pc (frame);
> ULONGEST v0 = get_frame_register_unsigned (frame, MIPS_V0_REGNUM);
> diff --git a/gdb/mips-netbsd-tdep.c b/gdb/mips-netbsd-tdep.c
> index 1452109090f9..8d3604a8b905 100644
> --- a/gdb/mips-netbsd-tdep.c
> +++ b/gdb/mips-netbsd-tdep.c
> @@ -254,7 +254,7 @@ static const unsigned char sigtramp_retcode_mipseb[RETCODE_SIZE] =
> NBSD_MIPS_JB_ELEMENT_SIZE (gdbarch))
>
> static int
> -mipsnbsd_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +mipsnbsd_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c
> index e54440e20b5d..7b367898f043 100644
> --- a/gdb/mips-sde-tdep.c
> +++ b/gdb/mips-sde-tdep.c
> @@ -33,7 +33,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> const struct mips_regnum *regs = mips_regnum (gdbarch);
> @@ -121,7 +121,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct trad_frame_cache *this_trad_cache
> @@ -133,7 +133,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int prev_regnum)
> {
> @@ -147,7 +147,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -176,7 +176,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct trad_frame_cache *this_trad_cache
> = mips_sde_frame_cache (this_frame, this_cache);
> @@ -193,7 +193,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 (const frame_info_ptr &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 bf0b66c4b002..8339d2f1d4c6 100644
> --- a/gdb/mips-tdep.c
> +++ b/gdb/mips-tdep.c
> @@ -74,7 +74,7 @@ static int mips16_insn_at_pc_has_delay_slot (struct gdbarch *gdbarch,
> CORE_ADDR addr, int mustbe32);
>
> static void mips_print_float_info (struct gdbarch *, struct ui_file *,
> - frame_info_ptr, const char *);
> + const frame_info_ptr &, const char *);
>
> /* A useful bit in the CP0 status register (MIPS_PS_REGNUM). */
> /* This bit is set if we are emulating 32-bit FPRs on a 64-bit chip. */
> @@ -562,7 +562,7 @@ mips_xfer_register (struct gdbarch *gdbarch, struct regcache *regcache,
> physical 64-bit registers, but should treat them as 32-bit registers. */
>
> static int
> -mips2_fp_compat (frame_info_ptr frame)
> +mips2_fp_compat (const frame_info_ptr &frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> /* MIPS1 and MIPS2 have only 32 bit FPRs, and the FR bit is not
> @@ -942,7 +942,7 @@ mips_convert_register_p (struct gdbarch *gdbarch,
> }
>
> static int
> -mips_register_to_value (frame_info_ptr frame, int regnum,
> +mips_register_to_value (const frame_info_ptr &frame, int regnum,
> struct type *type, gdb_byte *to,
> int *optimizedp, int *unavailablep)
> {
> @@ -984,7 +984,7 @@ mips_register_to_value (frame_info_ptr frame, int regnum,
> }
>
> static void
> -mips_value_to_register (frame_info_ptr frame, int regnum,
> +mips_value_to_register (const frame_info_ptr &frame, int regnum,
> struct type *type, const gdb_byte *from)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -1409,7 +1409,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, const frame_info_ptr &next_frame)
> {
> CORE_ADDR pc;
>
> @@ -1431,7 +1431,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, const frame_info_ptr &next_frame)
> {
> return frame_unwind_register_signed
> (next_frame, gdbarch_num_regs (gdbarch) + MIPS_SP_REGNUM);
> @@ -1443,7 +1443,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, const frame_info_ptr &this_frame)
> {
> return frame_id_build
> (get_frame_register_signed (this_frame,
> @@ -2526,7 +2526,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,
> + const frame_info_ptr &this_frame,
> struct mips_frame_cache *this_cache)
> {
> int prev_non_prologue_insn = 0;
> @@ -2862,7 +2862,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct mips_frame_cache *cache;
> @@ -2898,7 +2898,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
> @@ -2910,7 +2910,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
> @@ -2920,7 +2920,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -2941,7 +2941,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct mips_frame_cache *info = mips_insn16_frame_cache (this_frame,
> @@ -2958,7 +2958,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 (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -2987,7 +2987,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,
> + const frame_info_ptr &this_frame,
> struct mips_frame_cache *this_cache)
> {
> CORE_ADDR end_prologue_addr;
> @@ -3296,7 +3296,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct mips_frame_cache *cache;
> @@ -3333,7 +3333,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
> @@ -3345,7 +3345,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
> @@ -3355,7 +3355,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -3377,7 +3377,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct mips_frame_cache *info = mips_micro_frame_cache (this_frame,
> @@ -3394,7 +3394,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 (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -3432,7 +3432,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,
> + const frame_info_ptr &this_frame,
> struct mips_frame_cache *this_cache)
> {
> int prev_non_prologue_insn;
> @@ -3677,7 +3677,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct mips_frame_cache *cache;
> @@ -3714,7 +3714,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
> @@ -3726,7 +3726,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
> @@ -3736,7 +3736,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> if (mips_pc_is_mips (pc))
> @@ -3756,7 +3756,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct mips_frame_cache *info = mips_insn32_frame_cache (this_frame,
> @@ -3773,7 +3773,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> if (mips_pc_is_mips (pc))
> @@ -3783,7 +3783,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> CORE_ADDR pc;
> CORE_ADDR start_addr;
> @@ -3818,7 +3818,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct trad_frame_cache *this_trad_cache
> @@ -3827,7 +3827,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct trad_frame_cache *this_trad_cache
> @@ -3837,7 +3837,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> gdb_byte dummy[4];
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
> @@ -3873,7 +3873,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> struct trad_frame_cache *this_trad_cache
> @@ -3890,7 +3890,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 (const frame_info_ptr &this_frame)
> {
> if (mips_stub_frame_sniffer (&mips_stub_frame_unwind, this_frame, NULL))
> return &mips_stub_frame_base;
> @@ -6256,7 +6256,7 @@ mips_o64_return_value (struct gdbarch *gdbarch, struct value *function,
> into rare_buffer. */
>
> static void
> -mips_read_fp_register_single (frame_info_ptr frame, int regno,
> +mips_read_fp_register_single (const frame_info_ptr &frame, int regno,
> gdb_byte *rare_buffer)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -6290,7 +6290,7 @@ mips_read_fp_register_single (frame_info_ptr frame, int regno,
> register. */
>
> static void
> -mips_read_fp_register_double (frame_info_ptr frame, int regno,
> +mips_read_fp_register_double (const frame_info_ptr &frame, int regno,
> gdb_byte *rare_buffer)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -6328,7 +6328,7 @@ mips_read_fp_register_double (frame_info_ptr frame, int regno,
> }
>
> static void
> -mips_print_fp_register (struct ui_file *file, frame_info_ptr frame,
> +mips_print_fp_register (struct ui_file *file, const frame_info_ptr &frame,
> int regnum)
> { /* Do values for FP (float) regs. */
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -6393,7 +6393,7 @@ mips_print_fp_register (struct ui_file *file, frame_info_ptr frame,
> }
>
> static void
> -mips_print_register (struct ui_file *file, frame_info_ptr frame,
> +mips_print_register (struct ui_file *file, const frame_info_ptr &frame,
> int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -6448,7 +6448,7 @@ print_fpu_flags (struct ui_file *file, int flags)
>
> static void
> mips_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, const char *args)
> + const frame_info_ptr &frame, const char *args)
> {
> int fcsr = mips_regnum (gdbarch)->fp_control_status;
> enum mips_fpu_type type = mips_get_fpu_type (gdbarch);
> @@ -6515,7 +6515,7 @@ mips_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
> Print regs in pretty columns. */
>
> static int
> -print_fp_register_row (struct ui_file *file, frame_info_ptr frame,
> +print_fp_register_row (struct ui_file *file, const frame_info_ptr &frame,
> int regnum)
> {
> gdb_printf (file, " ");
> @@ -6528,7 +6528,7 @@ print_fp_register_row (struct ui_file *file, frame_info_ptr frame,
> /* Print a row's worth of GP (int) registers, with name labels above. */
>
> static int
> -print_gp_register_row (struct ui_file *file, frame_info_ptr frame,
> +print_gp_register_row (struct ui_file *file, const frame_info_ptr &frame,
> int start_regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -6631,7 +6631,7 @@ print_gp_register_row (struct ui_file *file, frame_info_ptr frame,
>
> static void
> mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
> - frame_info_ptr frame, int regnum, int all)
> + const frame_info_ptr &frame, int regnum, int all)
> {
> if (regnum != -1) /* Do one specified register. */
> {
> @@ -6663,7 +6663,7 @@ mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
>
> static int
> mips_single_step_through_delay (struct gdbarch *gdbarch,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> CORE_ADDR pc = get_frame_pc (frame);
> enum mips_isa isa;
> @@ -7569,7 +7569,7 @@ mips_is_stub_mode (const char *mode)
> The limit on the search is arbitrarily set to 20 instructions. FIXME. */
>
> static CORE_ADDR
> -mips_get_mips16_fn_stub_pc (frame_info_ptr frame, CORE_ADDR pc)
> +mips_get_mips16_fn_stub_pc (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -7692,7 +7692,7 @@ mips_get_mips16_fn_stub_pc (frame_info_ptr frame, CORE_ADDR pc)
> gory details. */
>
> static CORE_ADDR
> -mips_skip_mips16_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +mips_skip_mips16_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> CORE_ADDR start_addr;
> @@ -7820,7 +7820,7 @@ mips_in_return_stub (struct gdbarch *gdbarch, CORE_ADDR pc, const char *name)
> so that $t9 has the correct value at function entry. */
>
> static CORE_ADDR
> -mips_skip_pic_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +mips_skip_pic_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -7873,7 +7873,7 @@ mips_skip_pic_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> }
>
> static CORE_ADDR
> -mips_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +mips_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> CORE_ADDR requested_pc = pc;
> CORE_ADDR target_pc;
> @@ -8074,7 +8074,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 (const frame_info_ptr &frame, const void *baton)
> {
> const int *reg_p = (const int *) baton;
> return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
> diff --git a/gdb/mips-tdep.h b/gdb/mips-tdep.h
> index b64f37cebbba..eec1fb56f4e1 100644
> --- a/gdb/mips-tdep.h
> +++ b/gdb/mips-tdep.h
> @@ -125,7 +125,7 @@ struct mips_gdbarch_tdep : gdbarch_tdep_base
>
> /* Return the expected next PC if FRAME is stopped at a syscall
> instruction. */
> - CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
> + CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
> };
>
> /* Register numbers of various important registers. */
> diff --git a/gdb/mips64-obsd-tdep.c b/gdb/mips64-obsd-tdep.c
> index 6ea49c16a56b..cacb8bbee50a 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,
> + const frame_info_ptr &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 276e01cdf8ac..4554cb182314 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
> index 4d65fed38e76..f8c5a0906ef5 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct mn10300_prologue *p
> diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c
> index 4a80355ada55..812c92d1e0af 100644
> --- a/gdb/moxie-tdep.c
> +++ b/gdb/moxie-tdep.c
> @@ -514,7 +514,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct moxie_frame_cache *cache;
> CORE_ADDR current_pc;
> @@ -551,7 +551,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
> @@ -567,7 +567,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct moxie_frame_cache *cache = moxie_frame_cache (this_frame,
> @@ -598,7 +598,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 (const frame_info_ptr &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 6bbb1d43300f..e07e3cc4be2b 100644
> --- a/gdb/msp430-tdep.c
> +++ b/gdb/msp430-tdep.c
> @@ -458,7 +458,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (!*this_prologue_cache)
> @@ -486,7 +486,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
> {
> struct msp430_prologue *p
> = msp430_analyze_frame_prologue (this_frame, this_prologue_cache);
> @@ -498,7 +498,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> *this_id = frame_id_build (msp430_frame_base (this_frame,
> @@ -509,7 +509,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct msp430_prologue *p
> @@ -805,7 +805,7 @@ msp430_in_return_stub (struct gdbarch *gdbarch, CORE_ADDR pc,
>
> /* Implement the "skip_trampoline_code" gdbarch method. */
> static CORE_ADDR
> -msp430_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +msp430_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct bound_minimal_symbol bms;
> const char *stub_name;
> diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c
> index d4be42ce777e..e453cd0f6d9a 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 (const frame_info_ptr &frame, const void *baton)
> {
> return value_of_register ((int) (intptr_t) baton,
> get_next_frame_sentinel_okay (frame));
> @@ -902,7 +902,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct nds32_frame_cache *cache;
> @@ -953,7 +953,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
> @@ -968,7 +968,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
> @@ -1002,7 +1002,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct nds32_frame_cache *cache = nds32_frame_cache (this_frame, this_cache);
>
> @@ -1288,7 +1288,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)
> + const frame_info_ptr &this_frame, void **this_cache)
> {
> if (frame_relative_level (this_frame) == 0)
> return nds32_stack_frame_destroyed_p (get_frame_arch (this_frame),
> @@ -1303,7 +1303,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct nds32_frame_cache *cache;
> @@ -1335,7 +1335,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> struct nds32_frame_cache *cache
> @@ -1351,7 +1351,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct nds32_frame_cache *cache
> @@ -1825,7 +1825,7 @@ nds32_return_value (struct gdbarch *gdbarch, struct value *func_type,
> /* Implement the "get_longjmp_target" gdbarch method. */
>
> static int
> -nds32_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +nds32_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> gdb_byte buf[4];
> CORE_ADDR jb_addr;
> diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c
> index 1ff097781069..9d2d4fff04a2 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,
> + const frame_info_ptr &next_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -187,7 +187,7 @@ static struct tramp_frame nios2_r2_linux_rt_sigreturn_tramp_frame =
> instruction to be executed. */
>
> static CORE_ADDR
> -nios2_linux_syscall_next_pc (frame_info_ptr frame,
> +nios2_linux_syscall_next_pc (const frame_info_ptr &frame,
> const struct nios2_opcode *op)
> {
> CORE_ADDR pc = get_frame_pc (frame);
> diff --git a/gdb/nios2-tdep.c b/gdb/nios2-tdep.c
> index 196f50bc8694..0a8eeb88bb5a 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)
> + const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
> + const frame_info_ptr &this_frame, void **cache)
> {
> gdb_byte dummy[4];
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
> @@ -2218,7 +2218,7 @@ nios2_software_single_step (struct regcache *regcache)
> /* Implement the get_longjump_target gdbarch method. */
>
> static int
> -nios2_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +nios2_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> nios2_gdbarch_tdep *tdep = gdbarch_tdep<nios2_gdbarch_tdep> (gdbarch);
> diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h
> index ae68131736af..57e0de7076d0 100644
> --- a/gdb/nios2-tdep.h
> +++ b/gdb/nios2-tdep.h
> @@ -73,7 +73,7 @@ struct nios2_gdbarch_tdep : gdbarch_tdep_base
> {
> /* Assumes FRAME is stopped at a syscall (trap) instruction; returns
> the expected next PC. */
> - CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame,
> + CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame,
> const struct nios2_opcode *op) = nullptr;
>
> /* Returns true if PC points to a kernel helper function. */
> diff --git a/gdb/observable.h b/gdb/observable.h
> index 0e9226982772..2aa3ef3fd4ee 100644
> --- a/gdb/observable.h
> +++ b/gdb/observable.h
> @@ -217,7 +217,7 @@ extern observable<ptid_t /* thread */, CORE_ADDR /* address */>
> inferior_call_post;
>
> /* A register in the inferior has been modified by the gdb user. */
> -extern observable<frame_info_ptr /* frame */, int /* regnum */>
> +extern observable<const frame_info_ptr &/* frame */, int /* regnum */>
> register_changed;
>
> /* The user-selected inferior, thread and/or frame has changed. The
> diff --git a/gdb/or1k-linux-tdep.c b/gdb/or1k-linux-tdep.c
> index 5b65559bdeb0..75ab8459e754 100644
> --- a/gdb/or1k-linux-tdep.c
> +++ b/gdb/or1k-linux-tdep.c
> @@ -62,7 +62,7 @@ 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func);
>
> @@ -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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c
> index c8365dc9d721..ffcb50f4bcd1 100644
> --- a/gdb/or1k-tdep.c
> +++ b/gdb/or1k-tdep.c
> @@ -378,7 +378,7 @@ or1k_delay_slot_p (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> static int
> or1k_single_step_through_delay (struct gdbarch *gdbarch,
> - frame_info_ptr this_frame)
> + const frame_info_ptr &this_frame)
> {
> ULONGEST val;
> CORE_ADDR ppc;
> @@ -558,7 +558,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, const frame_info_ptr &next_frame)
> {
> CORE_ADDR pc;
>
> @@ -578,7 +578,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, const frame_info_ptr &next_frame)
> {
> CORE_ADDR sp;
>
> @@ -889,7 +889,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 (const frame_info_ptr &this_frame, void **prologue_cache)
> {
> struct gdbarch *gdbarch;
> struct trad_frame_cache *info;
> @@ -1102,7 +1102,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 (const frame_info_ptr &this_frame,
> void **prologue_cache, struct frame_id *this_id)
> {
> struct trad_frame_cache *info = or1k_frame_cache (this_frame,
> @@ -1114,7 +1114,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 (const frame_info_ptr &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 e70056a2ac80..719ddc71d130 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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 a7c1104b29f4..2824cb628c3d 100644
> --- a/gdb/ppc-linux-tdep.c
> +++ b/gdb/ppc-linux-tdep.c
> @@ -338,7 +338,7 @@ powerpc_linux_in_dynsym_resolve_code (CORE_ADDR pc)
> stub sequence. */
>
> static CORE_ADDR
> -ppc_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +ppc_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> unsigned int insnbuf[POWERPC32_PLT_CHECK_LEN];
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -1169,7 +1169,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 (const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func, LONGEST offset,
> int bias)
> @@ -1241,7 +1241,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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -1253,7 +1253,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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -1265,7 +1265,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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -1277,7 +1277,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,
> + const frame_info_ptr &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 0245969e8648..58f5678d5d9c 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,
> + const frame_info_ptr &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 d9e21e3a3269..b845e67bcaab 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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct trad_frame_cache *cache =
> diff --git a/gdb/ppc-sysv-tdep.c b/gdb/ppc-sysv-tdep.c
> index 59365fc490c7..ebbf1cf4295f 100644
> --- a/gdb/ppc-sysv-tdep.c
> +++ b/gdb/ppc-sysv-tdep.c
> @@ -2163,7 +2163,8 @@ ppc64_sysv_abi_return_value (struct gdbarch *gdbarch, struct value *function,
> }
>
> CORE_ADDR
> -ppc_sysv_get_return_buf_addr (struct type *val_type, frame_info_ptr cur_frame)
> +ppc_sysv_get_return_buf_addr (struct type *val_type,
> + const frame_info_ptr &cur_frame)
> {
> /* The PowerPC ABI specifies aggregates that are not returned by value
> are returned in a storage buffer provided by the caller. The
> diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h
> index d4a62d2e33c2..db31c7f199ac 100644
> --- a/gdb/ppc-tdep.h
> +++ b/gdb/ppc-tdep.h
> @@ -177,7 +177,7 @@ extern void ppc_collect_vsxregset (const struct regset *regset,
>
> /* Implementation of the gdbarch get_return_buf_addr hook. */
>
> -extern CORE_ADDR ppc_sysv_get_return_buf_addr (type*, frame_info_ptr);
> +extern CORE_ADDR ppc_sysv_get_return_buf_addr (type*, const frame_info_ptr &);
>
> /* Private data that this module attaches to struct gdbarch. */
>
> @@ -424,7 +424,7 @@ struct ppc_insn_pattern
> int optional; /* If non-zero, this insn may be absent. */
> };
>
> -extern int ppc_insns_match_pattern (frame_info_ptr frame, CORE_ADDR pc,
> +extern int ppc_insns_match_pattern (const frame_info_ptr &frame, CORE_ADDR pc,
> const struct ppc_insn_pattern *pattern,
> unsigned int *insns);
> extern CORE_ADDR ppc_insn_d_field (unsigned int insn);
> diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c
> index d415836c69df..5797d55f00b7 100644
> --- a/gdb/ppc64-tdep.c
> +++ b/gdb/ppc64-tdep.c
> @@ -85,7 +85,7 @@
> Return the function's entry point. */
>
> static CORE_ADDR
> -ppc64_plt_entry_point (frame_info_ptr frame, CORE_ADDR plt_off)
> +ppc64_plt_entry_point (const frame_info_ptr &frame, CORE_ADDR plt_off)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -108,7 +108,7 @@ ppc64_plt_entry_point (frame_info_ptr frame, CORE_ADDR plt_off)
> }
>
> static CORE_ADDR
> -ppc64_plt_pcrel_entry_point (frame_info_ptr frame, CORE_ADDR plt_off,
> +ppc64_plt_pcrel_entry_point (const frame_info_ptr &frame, CORE_ADDR plt_off,
> CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -546,7 +546,7 @@ static const struct ppc_insn_pattern ppc64_standard_linkage12[] =
> dynamic linker lazy symbol resolution stubs.) */
>
> static CORE_ADDR
> -ppc64_standard_linkage1_target (frame_info_ptr frame, unsigned int *insn)
> +ppc64_standard_linkage1_target (const frame_info_ptr &frame, unsigned int *insn)
> {
> CORE_ADDR plt_off = ((ppc_insn_d_field (insn[0]) << 16)
> + ppc_insn_ds_field (insn[2]));
> @@ -555,7 +555,7 @@ ppc64_standard_linkage1_target (frame_info_ptr frame, unsigned int *insn)
> }
>
> static CORE_ADDR
> -ppc64_standard_linkage2_target (frame_info_ptr frame, unsigned int *insn)
> +ppc64_standard_linkage2_target (const frame_info_ptr &frame, unsigned int *insn)
> {
> CORE_ADDR plt_off = ((ppc_insn_d_field (insn[1]) << 16)
> + ppc_insn_ds_field (insn[3]));
> @@ -564,7 +564,7 @@ ppc64_standard_linkage2_target (frame_info_ptr frame, unsigned int *insn)
> }
>
> static CORE_ADDR
> -ppc64_standard_linkage3_target (frame_info_ptr frame, unsigned int *insn)
> +ppc64_standard_linkage3_target (const frame_info_ptr &frame, unsigned int *insn)
> {
> CORE_ADDR plt_off = ppc_insn_ds_field (insn[1]);
>
> @@ -572,7 +572,7 @@ ppc64_standard_linkage3_target (frame_info_ptr frame, unsigned int *insn)
> }
>
> static CORE_ADDR
> -ppc64_standard_linkage4_target (frame_info_ptr frame, unsigned int *insn)
> +ppc64_standard_linkage4_target (const frame_info_ptr &frame, unsigned int *insn)
> {
> CORE_ADDR plt_off = ((ppc_insn_d_field (insn[1]) << 16)
> + ppc_insn_ds_field (insn[2]));
> @@ -581,7 +581,7 @@ ppc64_standard_linkage4_target (frame_info_ptr frame, unsigned int *insn)
> }
>
> static CORE_ADDR
> -ppc64_pcrel_linkage1_target (frame_info_ptr frame, unsigned int *insn,
> +ppc64_pcrel_linkage1_target (const frame_info_ptr &frame, unsigned int *insn,
> CORE_ADDR pc)
> {
> /* insn[0] is for the std instruction. */
> @@ -591,7 +591,7 @@ ppc64_pcrel_linkage1_target (frame_info_ptr frame, unsigned int *insn,
> }
>
> static CORE_ADDR
> -ppc64_pcrel_linkage2_target (frame_info_ptr frame, unsigned int *insn,
> +ppc64_pcrel_linkage2_target (const frame_info_ptr &frame, unsigned int *insn,
> CORE_ADDR pc)
> {
> CORE_ADDR plt_off;
> @@ -611,7 +611,7 @@ ppc64_pcrel_linkage2_target (frame_info_ptr frame, unsigned int *insn,
> check whether we are in the middle of a PLT stub. */
>
> static CORE_ADDR
> -ppc64_skip_trampoline_code_1 (frame_info_ptr frame, CORE_ADDR pc)
> +ppc64_skip_trampoline_code_1 (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> #define MAX(a,b) ((a) > (b) ? (a) : (b))
> unsigned int insns[MAX (MAX (MAX (ARRAY_SIZE (ppc64_standard_linkage1),
> @@ -707,7 +707,7 @@ ppc64_skip_trampoline_code_1 (frame_info_ptr frame, CORE_ADDR pc)
> ppc_elfv2_skip_entrypoint. */
>
> CORE_ADDR
> -ppc64_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +ppc64_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> diff --git a/gdb/ppc64-tdep.h b/gdb/ppc64-tdep.h
> index 4dc6e6a87091..ff0e3fdd033e 100644
> --- a/gdb/ppc64-tdep.h
> +++ b/gdb/ppc64-tdep.h
> @@ -24,7 +24,7 @@ struct gdbarch;
> class frame_info_ptr;
> struct target_ops;
>
> -extern CORE_ADDR ppc64_skip_trampoline_code (frame_info_ptr frame,
> +extern CORE_ADDR ppc64_skip_trampoline_code (const frame_info_ptr &frame,
> CORE_ADDR pc);
>
> extern CORE_ADDR ppc64_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
> diff --git a/gdb/printcmd.c b/gdb/printcmd.c
> index 7f47f489a943..43c0f447fa8a 100644
> --- a/gdb/printcmd.c
> +++ b/gdb/printcmd.c
> @@ -2330,7 +2330,7 @@ clear_dangling_display_expressions (struct objfile *objfile)
>
> void
> print_variable_and_value (const char *name, struct symbol *var,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> struct ui_file *stream, int indent)
> {
>
> diff --git a/gdb/probe.c b/gdb/probe.c
> index a68283ab5ce7..4d68e129636e 100644
> --- a/gdb/probe.c
> +++ b/gdb/probe.c
> @@ -786,7 +786,7 @@ ignore_probes_command (const char *arg, int from_tty)
> /* See comments in probe.h. */
>
> struct value *
> -probe_safe_evaluate_at_pc (frame_info_ptr frame, unsigned n)
> +probe_safe_evaluate_at_pc (const frame_info_ptr &frame, unsigned n)
> {
> struct bound_probe probe;
> unsigned n_args;
> diff --git a/gdb/probe.h b/gdb/probe.h
> index 31b0b8b8f739..41e728ad049e 100644
> --- a/gdb/probe.h
> +++ b/gdb/probe.h
> @@ -143,7 +143,7 @@ class probe
> corresponding to it. The argument number is represented N.
> This function can throw an exception. */
> virtual struct value *evaluate_argument (unsigned n,
> - frame_info_ptr frame) = 0;
> + const frame_info_ptr &frame) = 0;
>
> /* Compile the Nth argument of the probe to an agent expression.
> The argument number is represented by N. */
> @@ -301,7 +301,7 @@ extern struct cmd_list_element **info_probes_cmdlist_get (void);
> probe at that location, or if the probe does not have enough arguments,
> this returns NULL. */
>
> -extern struct value *probe_safe_evaluate_at_pc (frame_info_ptr frame,
> +extern struct value *probe_safe_evaluate_at_pc (const frame_info_ptr &frame,
> unsigned n);
>
> /* Return true if the PROVIDER/NAME probe from OBJFILE_NAME needs to be
> diff --git a/gdb/python/py-event.h b/gdb/python/py-event.h
> index 30dd054305b6..388c513e5e9b 100644
> --- a/gdb/python/py-event.h
> +++ b/gdb/python/py-event.h
> @@ -55,7 +55,7 @@ enum inferior_call_kind
>
> extern int emit_inferior_call_event (inferior_call_kind kind,
> ptid_t thread, CORE_ADDR addr);
> -extern int emit_register_changed_event (frame_info_ptr frame,
> +extern int emit_register_changed_event (const frame_info_ptr &frame,
> int regnum);
> extern int emit_memory_changed_event (CORE_ADDR addr, ssize_t len);
> extern int evpy_emit_event (PyObject *event,
> diff --git a/gdb/python/py-frame.c b/gdb/python/py-frame.c
> index a1061fc0d729..7467f845b78f 100644
> --- a/gdb/python/py-frame.c
> +++ b/gdb/python/py-frame.c
> @@ -361,7 +361,7 @@ frapy_function (PyObject *self, PyObject *args)
> Sets a Python exception and returns NULL on error. */
>
> PyObject *
> -frame_info_to_frame_object (frame_info_ptr frame)
> +frame_info_to_frame_object (const frame_info_ptr &frame)
> {
> gdbpy_ref<frame_object> frame_obj (PyObject_New (frame_object,
> &frame_object_type));
> diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
> index fd2757d686d6..768e3a6e0c81 100644
> --- a/gdb/python/py-framefilter.c
> +++ b/gdb/python/py-framefilter.c
> @@ -416,7 +416,7 @@ enumerate_args (PyObject *iter,
> enum ext_lang_frame_args args_type,
> bool raw_frame_args,
> int print_args_field,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> struct value_print_options opts;
>
> @@ -548,7 +548,7 @@ enumerate_locals (PyObject *iter,
> int indent,
> enum ext_lang_frame_args args_type,
> int print_args_field,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> struct value_print_options opts;
>
> @@ -636,7 +636,7 @@ static enum ext_lang_bt_status
> py_mi_print_variables (PyObject *filter, struct ui_out *out,
> struct value_print_options *opts,
> enum ext_lang_frame_args args_type,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> bool raw_frame_args_p)
> {
> gdbpy_ref<> args_iter (get_py_iter_from_func (filter, "frame_args"));
> @@ -671,7 +671,7 @@ py_print_locals (PyObject *filter,
> struct ui_out *out,
> enum ext_lang_frame_args args_type,
> int indent,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> gdbpy_ref<> locals_iter (get_py_iter_from_func (filter, "frame_locals"));
> if (locals_iter == NULL)
> @@ -697,7 +697,7 @@ py_print_args (PyObject *filter,
> struct ui_out *out,
> enum ext_lang_frame_args args_type,
> bool raw_frame_args,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> gdbpy_ref<> args_iter (get_py_iter_from_func (filter, "frame_args"));
> if (args_iter == NULL)
> @@ -1082,7 +1082,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags,
> frame FRAME. */
>
> static PyObject *
> -bootstrap_python_frame_filters (frame_info_ptr frame,
> +bootstrap_python_frame_filters (const frame_info_ptr &frame,
> int frame_low, int frame_high)
> {
> gdbpy_ref<> frame_obj (frame_info_to_frame_object (frame));
> @@ -1137,7 +1137,7 @@ bootstrap_python_frame_filters (frame_info_ptr frame,
>
> enum ext_lang_bt_status
> gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
> - frame_info_ptr frame, frame_filter_flags flags,
> + const frame_info_ptr &frame, frame_filter_flags flags,
> enum ext_lang_frame_args args_type,
> struct ui_out *out, int frame_low, int frame_high)
> {
> diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c
> index 834f7274d1e7..caf6c1bdd53e 100644
> --- a/gdb/python/py-inferior.c
> +++ b/gdb/python/py-inferior.c
> @@ -159,7 +159,7 @@ python_on_memory_change (struct inferior *inferior, CORE_ADDR addr, ssize_t len,
> command). */
>
> static void
> -python_on_register_change (frame_info_ptr frame, int regnum)
> +python_on_register_change (const frame_info_ptr &frame, int regnum)
> {
> gdbpy_enter enter_py (current_inferior ()->arch ());
>
> diff --git a/gdb/python/py-infevents.c b/gdb/python/py-infevents.c
> index 39677af24f56..5b87576ac733 100644
> --- a/gdb/python/py-infevents.c
> +++ b/gdb/python/py-infevents.c
> @@ -62,7 +62,7 @@ create_inferior_call_event_object (inferior_call_kind flag, ptid_t ptid,
> register number. */
>
> static gdbpy_ref<>
> -create_register_changed_event_object (frame_info_ptr frame,
> +create_register_changed_event_object (const frame_info_ptr &frame,
Trailing white space.
> int regnum)
> {
> gdbpy_ref<> event = create_event_object (®ister_changed_event_object_type);
> @@ -151,7 +151,7 @@ emit_memory_changed_event (CORE_ADDR addr, ssize_t len)
> will create a new Python register changed event object. */
>
> int
> -emit_register_changed_event (frame_info_ptr frame, int regnum)
> +emit_register_changed_event (const frame_info_ptr &frame, int regnum)
> {
> if (evregpy_no_listeners_p (gdb_py_events.register_changed))
> return 0;
> diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c
> index c55b5aa85ec8..56f925bc57f0 100644
> --- a/gdb/python/py-unwind.c
> +++ b/gdb/python/py-unwind.c
> @@ -769,7 +769,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 (const frame_info_ptr &this_frame, void **cache_ptr,
> struct frame_id *this_id)
> {
> *this_id = ((cached_frame_info *) *cache_ptr)->frame_id;
> @@ -779,7 +779,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 (const frame_info_ptr &this_frame, void **cache_ptr,
> int regnum)
> {
> PYUW_SCOPED_DEBUG_ENTER_EXIT;
> @@ -802,7 +802,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, const frame_info_ptr &this_frame,
> void **cache_ptr)
> {
> PYUW_SCOPED_DEBUG_ENTER_EXIT;
> diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
> index 7c05007cbab5..c68aff5340e7 100644
> --- a/gdb/python/python-internal.h
> +++ b/gdb/python/python-internal.h
> @@ -384,7 +384,7 @@ extern enum ext_lang_rc gdbpy_apply_val_pretty_printer
> const struct language_defn *language);
> extern enum ext_lang_bt_status gdbpy_apply_frame_filter
> (const struct extension_language_defn *,
> - frame_info_ptr frame, frame_filter_flags flags,
> + const frame_info_ptr &frame, frame_filter_flags flags,
> enum ext_lang_frame_args args_type,
> struct ui_out *out, int frame_low, int frame_high);
> extern void gdbpy_preserve_values (const struct extension_language_defn *,
> @@ -444,7 +444,7 @@ PyObject *block_to_block_object (const struct block *block,
> struct objfile *objfile);
> PyObject *value_to_value_object (struct value *v);
> PyObject *type_to_type_object (struct type *);
> -PyObject *frame_info_to_frame_object (frame_info_ptr frame);
> +PyObject *frame_info_to_frame_object (const frame_info_ptr &frame);
> PyObject *symtab_to_linetable_object (PyObject *symtab);
> gdbpy_ref<> pspace_to_pspace_object (struct program_space *);
> PyObject *pspy_get_printers (PyObject *, void *);
> diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
> index 030547ad51fd..6350400c318a 100644
> --- a/gdb/record-btrace.c
> +++ b/gdb/record-btrace.c
> @@ -1649,7 +1649,7 @@ 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 (const frame_info_ptr &frame)
> {
> struct btrace_frame_cache *cache;
> void **slot;
> @@ -1667,7 +1667,7 @@ 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 (const frame_info_ptr &frame)
> {
> const struct btrace_frame_cache *cache;
> struct btrace_frame_cache pattern;
> @@ -1686,7 +1686,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 (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> const struct btrace_frame_cache *cache;
> @@ -1705,7 +1705,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> const struct btrace_frame_cache *cache;
> @@ -1735,7 +1735,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int regnum)
> {
> @@ -1781,7 +1781,7 @@ 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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> const struct btrace_function *bfun;
> @@ -1836,7 +1836,7 @@ 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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> const struct btrace_function *bfun, *callee;
> diff --git a/gdb/riscv-fbsd-tdep.c b/gdb/riscv-fbsd-tdep.c
> index ca56a39cb71c..205f7a950df5 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,
> + const frame_info_ptr &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 9dfbe789a699..0267dc65e58e 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -163,7 +163,7 @@ riscv_linux_sigframe_init (const struct tramp_frame *self,
> instruction to be executed. */
>
> static CORE_ADDR
> -riscv_linux_syscall_next_pc (frame_info_ptr frame)
> +riscv_linux_syscall_next_pc (const frame_info_ptr &frame)
> {
> const CORE_ADDR pc = get_frame_pc (frame);
> const ULONGEST a7 = get_frame_register_unsigned (frame, RISCV_A7_REGNUM);
> diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
> index 9a7cfa35afd9..68ef3233e8d9 100644
> --- a/gdb/riscv-tdep.c
> +++ b/gdb/riscv-tdep.c
> @@ -165,7 +165,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 (const frame_info_ptr &frame, const void *baton)
> {
> const int *reg_p = (const int *) baton;
> return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
> @@ -1135,7 +1135,7 @@ riscv_register_type (struct gdbarch *gdbarch, int regnum)
> static void
> riscv_print_one_register_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int regnum)
> {
> const char *name = gdbarch_register_name (gdbarch, regnum);
> @@ -1504,7 +1504,7 @@ riscv_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
> static void
> riscv_print_registers_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int regnum, int print_all)
> {
> if (regnum != -1)
> @@ -3806,7 +3806,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> CORE_ADDR pc, start_addr;
> struct riscv_unwind_cache *cache;
> @@ -3866,7 +3866,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 (const frame_info_ptr &this_frame,
> void **prologue_cache,
> struct frame_id *this_id)
> {
> @@ -3887,7 +3887,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 (const frame_info_ptr &this_frame,
> void **prologue_cache,
> int regnum)
> {
> diff --git a/gdb/riscv-tdep.h b/gdb/riscv-tdep.h
> index ea6b25938ec1..4bdc2e7a3d5d 100644
> --- a/gdb/riscv-tdep.h
> +++ b/gdb/riscv-tdep.h
> @@ -112,7 +112,7 @@ struct riscv_gdbarch_tdep : gdbarch_tdep_base
>
> /* Return the expected next PC assuming FRAME is stopped at a syscall
> instruction. */
> - CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
> + CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
> };
>
>
> diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c
> index aecda0ed2cc1..1e439f363564 100644
> --- a/gdb/rl78-tdep.c
> +++ b/gdb/rl78-tdep.c
> @@ -1079,7 +1079,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, const frame_info_ptr &next_frame)
> {
> return rl78_addr_bits_remove
> (arch, frame_unwind_register_unsigned (next_frame,
> @@ -1092,7 +1092,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (!*this_prologue_cache)
> @@ -1119,7 +1119,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 (const frame_info_ptr &this_frame, void **this_prologue_cache)
> {
> struct rl78_prologue *p
> = rl78_analyze_frame_prologue (this_frame, this_prologue_cache);
> @@ -1131,7 +1131,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, struct frame_id *this_id)
> {
> *this_id = frame_id_build (rl78_frame_base (this_frame,
> @@ -1142,7 +1142,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct rl78_prologue *p
> @@ -1316,7 +1316,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, const frame_info_ptr &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 6fdbf63d6a86..db76af6984b9 100644
> --- a/gdb/rs6000-aix-tdep.c
> +++ b/gdb/rs6000-aix-tdep.c
> @@ -240,7 +240,7 @@ static const struct regset rs6000_aix_vsxregset = {
> };
>
> static struct trad_frame_cache *
> -aix_sighandle_frame_cache (frame_info_ptr this_frame,
> +aix_sighandle_frame_cache (const frame_info_ptr &this_frame,
> void **this_cache)
> {
> LONGEST backchain;
> @@ -296,7 +296,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -306,7 +306,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct trad_frame_cache *this_trad_cache
> @@ -316,7 +316,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,
> + const frame_info_ptr &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 f61e0843c1c7..baae79427e74 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 (const frame_info_ptr &curfrm,
> struct gdbarch *gdbarch, CORE_ADDR pc)
> {
> ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
> @@ -816,7 +816,7 @@ rs6000_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
>
> /* Get the ith function argument for the current function. */
> static CORE_ADDR
> -rs6000_fetch_pointer_argument (frame_info_ptr frame, int argi,
> +rs6000_fetch_pointer_argument (const frame_info_ptr &frame, int argi,
Trailing white space.
> struct type *type)
> {
> return get_frame_register_unsigned (frame, 3 + argi);
> @@ -2316,7 +2316,7 @@ rs6000_in_solib_return_trampoline (struct gdbarch *gdbarch,
> code that should be skipped. */
>
> static CORE_ADDR
> -rs6000_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +rs6000_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
> @@ -2698,7 +2698,7 @@ ieee_128_float_regnum_adjust (struct gdbarch *gdbarch, struct type *type,
> }
>
> static int
> -rs6000_register_to_value (frame_info_ptr frame,
> +rs6000_register_to_value (const frame_info_ptr &frame,
> int regnum,
> struct type *type,
> gdb_byte *to,
> @@ -2727,7 +2727,7 @@ rs6000_register_to_value (frame_info_ptr frame,
> }
>
> static void
> -rs6000_value_to_register (frame_info_ptr frame,
> +rs6000_value_to_register (const frame_info_ptr &frame,
> int regnum,
> struct type *type,
> const gdb_byte *from)
> @@ -3617,7 +3617,7 @@ struct rs6000_frame_cache
> };
>
> static struct rs6000_frame_cache *
> -rs6000_frame_cache (frame_info_ptr this_frame, void **this_cache)
> +rs6000_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct rs6000_frame_cache *cache;
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3810,7 +3810,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
> @@ -3830,7 +3830,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
> @@ -3853,7 +3853,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct rs6000_frame_cache *cache;
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -3934,7 +3934,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 (const frame_info_ptr &this_frame,
> void **this_cache, struct frame_id *this_id)
> {
> CORE_ADDR pc;
> @@ -3952,7 +3952,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct rs6000_frame_cache *info =
> @@ -3965,7 +3965,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> if (frame_relative_level (this_frame) == 0)
> @@ -3991,7 +3991,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct rs6000_frame_cache *info = rs6000_frame_cache (this_frame,
> this_cache);
> @@ -4006,7 +4006,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 (const frame_info_ptr &this_frame)
> {
> return &rs6000_frame_base;
> }
> @@ -4017,7 +4017,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)
> + const frame_info_ptr &this_frame)
> {
> ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
>
> @@ -8647,7 +8647,7 @@ show_powerpc_exact_watchpoints (struct ui_file *file, int from_tty,
> /* Read a PPC instruction from memory. */
>
> static unsigned int
> -read_insn (frame_info_ptr frame, CORE_ADDR pc)
> +read_insn (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -8669,7 +8669,7 @@ read_insn (frame_info_ptr frame, CORE_ADDR pc)
> necessarily the i'th instruction in memory. */
>
> int
> -ppc_insns_match_pattern (frame_info_ptr frame, CORE_ADDR pc,
> +ppc_insns_match_pattern (const frame_info_ptr &frame, CORE_ADDR pc,
> const struct ppc_insn_pattern *pattern,
> unsigned int *insns)
> {
> diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c
> index 5ea01e79bb5b..53ad5d5c92b2 100644
> --- a/gdb/rx-tdep.c
> +++ b/gdb/rx-tdep.c
> @@ -383,7 +383,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 (const frame_info_ptr &this_frame,
> enum rx_frame_type frame_type,
> void **this_prologue_cache)
> {
> @@ -412,7 +412,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> const char *name;
> CORE_ADDR pc, start_pc, lim_pc;
> @@ -466,7 +466,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
> struct rx_prologue *p
> @@ -493,7 +493,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> *this_id = frame_id_build (rx_frame_base (this_frame, this_cache),
> @@ -503,7 +503,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> enum rx_frame_type frame_type = rx_frame_type (this_frame, this_cache);
> @@ -577,7 +577,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,
> + const frame_info_ptr &this_frame,
> void **this_cache,
> int (*sniff_p)(enum rx_frame_type) )
> {
> @@ -610,7 +610,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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> return rx_frame_sniffer_common (self, this_frame, this_cache,
> @@ -621,7 +621,7 @@ rx_frame_sniffer (const struct frame_unwind *self,
>
> static int
> rx_exception_sniffer (const struct frame_unwind *self,
> - frame_info_ptr this_frame,
> + const frame_info_ptr &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 4b2ed85c1670..60cbc26afffd 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **prologue_cache, int regnum)
> {
> struct trad_frame_cache *info = s12z_frame_cache (this_frame,
> @@ -491,7 +491,7 @@ static const char ccw_bits[] =
> static void
> s12z_print_ccw_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int reg)
> {
> value *v = value_of_register (reg, get_next_frame_sentinel_okay (frame));
> @@ -524,7 +524,7 @@ s12z_print_ccw_info (struct gdbarch *gdbarch,
> static void
> s12z_print_registers_info (struct gdbarch *gdbarch,
> struct ui_file *file,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> int regnum, int print_all)
> {
> const int numregs = (gdbarch_num_regs (gdbarch)
> diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
> index 4f73d5a4c017..945b3c7cee72 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 134bf984e5b6..1fd08ddf018e 100644
> --- a/gdb/s390-tdep.c
> +++ b/gdb/s390-tdep.c
> @@ -1991,7 +1991,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, const frame_info_ptr &this_frame)
> {
> int word_size = gdbarch_ptr_bit (gdbarch) / 8;
> CORE_ADDR sp = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
> @@ -2175,7 +2175,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, const frame_info_ptr &next_frame)
> {
> s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
> ULONGEST pc;
> @@ -2186,7 +2186,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, const frame_info_ptr &next_frame)
> {
> ULONGEST sp;
> sp = frame_unwind_register_unsigned (next_frame, S390_SP_REGNUM);
> @@ -2196,7 +2196,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 (const frame_info_ptr &this_frame, int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> s390_gdbarch_tdep *tdep = gdbarch_tdep<s390_gdbarch_tdep> (gdbarch);
> @@ -2267,7 +2267,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> return s390_unwind_pseudo_register (this_frame, regnum);
> @@ -2278,7 +2278,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)
> + const frame_info_ptr &this_frame)
> {
> /* The condition code (and thus PSW mask) is call-clobbered. */
> if (regnum == S390_PSWM_REGNUM)
> @@ -2312,7 +2312,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 (const frame_info_ptr &this_frame,
> trad_frame_saved_reg saved_regs[],
> int regnum)
> {
> @@ -2337,7 +2337,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 (const frame_info_ptr &this_frame,
> struct s390_unwind_cache *info)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2524,7 +2524,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 (const frame_info_ptr &this_frame,
> struct s390_unwind_cache *info)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2581,7 +2581,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct s390_unwind_cache *info;
> @@ -2615,7 +2615,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -2635,7 +2635,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct s390_unwind_cache *info
> @@ -2670,7 +2670,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2698,7 +2698,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -2710,7 +2710,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct s390_stub_unwind_cache *info
> @@ -2722,7 +2722,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block;
> @@ -2753,7 +2753,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct s390_unwind_cache *info
> = s390_frame_unwind_cache (this_frame, this_cache);
> @@ -2761,7 +2761,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 (const frame_info_ptr &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 58a7d08c9b0b..10f775f468f8 100644
> --- a/gdb/s390-tdep.h
> +++ b/gdb/s390-tdep.h
> @@ -316,7 +316,7 @@ enum
> /* Frame unwinding. */
>
> extern struct value *s390_trad_frame_prev_register
> - (frame_info_ptr this_frame, struct trad_frame_saved_reg saved_regs[],
> + (const frame_info_ptr &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 6b6cbeb3a3f2..ca7c28952f36 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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> int regnum)
> {
> @@ -59,7 +59,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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache,
> struct frame_id *this_id)
> {
> @@ -70,7 +70,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 (const frame_info_ptr &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 8fee028bb42e..c78d363400ad 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 (const frame_info_ptr &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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
> index 3a4ff96428a6..16e513eb4053 100644
> --- a/gdb/sh-tdep.c
> +++ b/gdb/sh-tdep.c
> @@ -1755,7 +1755,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)
> + const frame_info_ptr &this_frame)
> {
> /* Mark the PC as the destination for the return address. */
> if (regnum == gdbarch_pc_regnum (gdbarch))
> @@ -1825,7 +1825,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct sh_frame_cache *cache;
> @@ -1892,7 +1892,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 (const frame_info_ptr &this_frame,
> void **this_cache, int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1917,7 +1917,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
> @@ -1940,7 +1940,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct sh_frame_cache *cache = sh_frame_cache (this_frame, this_cache);
>
> @@ -1955,7 +1955,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 (const frame_info_ptr &this_frame)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct sh_frame_cache *cache;
> @@ -1969,7 +1969,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct sh_frame_cache *cache;
> @@ -1983,7 +1983,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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block;
> diff --git a/gdb/sol2-tdep.c b/gdb/sol2-tdep.c
> index de6794635a57..4ee2d0ac3460 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 (const frame_info_ptr &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 d669b484d0da..a189666f05ee 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 (const frame_info_ptr &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 430522b97029..1590cbdc4f05 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -159,7 +159,7 @@ sparc32_linux_sigframe_init (const struct tramp_frame *self,
> address. */
>
> static CORE_ADDR
> -sparc32_linux_step_trap (frame_info_ptr frame, unsigned long insn)
> +sparc32_linux_step_trap (const frame_info_ptr &frame, unsigned long insn)
> {
> if (insn == 0x91d02010)
> {
> diff --git a/gdb/sparc-netbsd-tdep.c b/gdb/sparc-netbsd-tdep.c
> index 486381f497b4..d2b1a4bfd140 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR pc = get_frame_pc (this_frame);
> @@ -264,7 +264,7 @@ static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind =
> address. */
>
> CORE_ADDR
> -sparcnbsd_step_trap (frame_info_ptr frame, unsigned long insn)
> +sparcnbsd_step_trap (const frame_info_ptr &frame, unsigned long insn)
> {
> if ((X_I (insn) == 0 && X_RS1 (insn) == 0 && X_RS2 (insn) == 0)
> || (X_I (insn) == 1 && X_RS1 (insn) == 0 && (insn & 0x7f) == 0))
> diff --git a/gdb/sparc-obsd-tdep.c b/gdb/sparc-obsd-tdep.c
> index 2155a30e20b1..8cdbc8aae6e7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 a0a6c4cd7177..525784401038 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> return sol2_sigtramp_p (this_frame);
> diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
> index f84e168ab9fd..5eec3615f536 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR sp;
>
> @@ -1549,7 +1549,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 (const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc = get_frame_address_in_block (this_frame);
> struct symbol *sym = find_pc_function (pc);
> @@ -1562,7 +1562,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)
> + const frame_info_ptr &this_frame)
> {
> int off;
>
> @@ -1721,7 +1721,7 @@ sparc_analyze_control_transfer (struct regcache *regcache,
> }
>
> static CORE_ADDR
> -sparc_step_trap (frame_info_ptr frame, unsigned long insn)
> +sparc_step_trap (const frame_info_ptr &frame, unsigned long insn)
> {
> return 0;
> }
> diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h
> index c4ea4ff9d558..2d8c50768be0 100644
> --- a/gdb/sparc-tdep.h
> +++ b/gdb/sparc-tdep.h
> @@ -85,7 +85,7 @@ struct sparc_gdbarch_tdep : gdbarch_tdep_base
> size_t plt_entry_size = 0;
>
> /* Alternative location for trap return. Used for single-stepping. */
> - CORE_ADDR (*step_trap) (frame_info_ptr frame, unsigned long insn)
> + CORE_ADDR (*step_trap) (const frame_info_ptr &frame, unsigned long insn)
> = nullptr;
>
> /* ISA-specific data types. */
> @@ -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 (const frame_info_ptr &this_frame, void **this_cache);
>
> extern struct sparc_frame_cache *
> - sparc32_frame_cache (frame_info_ptr this_frame, void **this_cache);
> + sparc32_frame_cache (const frame_info_ptr &this_frame, void **this_cache);
>
> extern int
> sparc_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc);
> @@ -255,13 +255,13 @@ extern const struct sparc_gregmap sparc32nbsd_gregmap;
>
> /* Return the address of a system call's alternative return
> address. */
> -extern CORE_ADDR sparcnbsd_step_trap (frame_info_ptr frame,
> +extern CORE_ADDR sparcnbsd_step_trap (const frame_info_ptr &frame,
> unsigned long insn);
>
> 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 (const frame_info_ptr &next_frame);
>
> #endif /* sparc-tdep.h */
> diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c
> index 8c97ce87209f..c992c8c8f6fb 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 ba9d694776f3..33da5321d81a 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,
> + const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -176,7 +176,7 @@ sparc64_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
> address. */
>
> static CORE_ADDR
> -sparc64_linux_step_trap (frame_info_ptr frame, unsigned long insn)
> +sparc64_linux_step_trap (const frame_info_ptr &frame, unsigned long insn)
> {
> /* __NR_rt_sigreturn is 101 */
> if ((insn == 0x91d0206d)
> @@ -306,7 +306,7 @@ sparc64_linux_get_syscall_number (struct gdbarch *gdbarch,
> /* Implement the "get_longjmp_target" gdbarch method. */
>
> static int
> -sparc64_linux_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +sparc64_linux_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> CORE_ADDR jb_addr;
> diff --git a/gdb/sparc64-netbsd-tdep.c b/gdb/sparc64-netbsd-tdep.c
> index 82405f8b62ba..fe97689ae157 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)
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 7f22c4b0fc0f..3837074a9fb7 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> CORE_ADDR pc;
> diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
> index 95db72bcbe72..7cef98bb681c 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_cache)
> {
> return sol2_sigtramp_p (this_frame);
> diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
> index 39ad976eaaeb..8a90dd00d16f 100644
> --- a/gdb/sparc64-tdep.c
> +++ b/gdb/sparc64-tdep.c
> @@ -1063,13 +1063,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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct sparc_frame_cache *cache =
> @@ -1083,7 +1083,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 (const frame_info_ptr &this_frame, void **this_cache,
> int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -1147,7 +1147,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct sparc_frame_cache *cache =
> sparc64_frame_cache (this_frame, this_cache);
> @@ -1766,7 +1766,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)
> + const frame_info_ptr &this_frame)
> {
> switch (regnum)
> {
> diff --git a/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h
> index 8e097f1e86ff..6fcd91ee8d35 100644
> --- a/gdb/sparc64-tdep.h
> +++ b/gdb/sparc64-tdep.h
> @@ -131,7 +131,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);
> + const frame_info_ptr &next_frame);
>
> extern const struct sparc_fpregmap sparc64_bsd_fpregmap;
>
> diff --git a/gdb/stack.c b/gdb/stack.c
> index ab4d52849051..23e3891a0600 100644
> --- a/gdb/stack.c
> +++ b/gdb/stack.c
> @@ -215,14 +215,14 @@ static const gdb::option::option_def backtrace_command_option_defs[] = {
>
> /* Prototypes for local functions. */
>
> -static void print_frame_local_vars (frame_info_ptr frame,
> +static void print_frame_local_vars (const frame_info_ptr &frame,
> bool quiet,
> const char *regexp, const char *t_regexp,
> int num_tabs, struct ui_file *stream);
>
> static void print_frame (struct ui_out *uiout,
> const frame_print_options &opts,
> - frame_info_ptr frame, int print_level,
> + const frame_info_ptr &frame, int print_level,
> enum print_what print_what, int print_args,
> struct symtab_and_line sal);
>
> @@ -315,7 +315,7 @@ static last_displayed_symtab_info_type last_displayed_symtab_info;
> /* See stack.h. */
>
> bool
> -frame_show_address (frame_info_ptr frame,
> +frame_show_address (const frame_info_ptr &frame,
> struct symtab_and_line sal)
> {
> /* If there is a line number, but no PC, then there is no location
> @@ -338,7 +338,7 @@ frame_show_address (frame_info_ptr frame,
> /* See frame.h. */
>
> void
> -print_stack_frame_to_uiout (struct ui_out *uiout, frame_info_ptr frame,
> +print_stack_frame_to_uiout (struct ui_out *uiout, const frame_info_ptr &frame,
> int print_level, enum print_what print_what,
> int set_current_sal)
> {
> @@ -354,7 +354,7 @@ print_stack_frame_to_uiout (struct ui_out *uiout, frame_info_ptr frame,
> source line, the actual PC is printed at the beginning. */
>
> void
> -print_stack_frame (frame_info_ptr frame, int print_level,
> +print_stack_frame (const frame_info_ptr &frame, int print_level,
> enum print_what print_what,
> int set_current_sal)
> {
> @@ -382,7 +382,7 @@ print_stack_frame (frame_info_ptr frame, int print_level,
> argument (not just the first nameless argument). */
>
> static void
> -print_frame_nameless_args (frame_info_ptr frame, long start, int num,
> +print_frame_nameless_args (const frame_info_ptr &frame, long start, int num,
> int first, struct ui_file *stream)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> @@ -504,7 +504,7 @@ print_frame_arg (const frame_print_options &fp_opts,
> exception. */
>
> void
> -read_frame_local (struct symbol *sym, frame_info_ptr frame,
> +read_frame_local (struct symbol *sym, const frame_info_ptr &frame,
> struct frame_arg *argp)
> {
> argp->sym = sym;
> @@ -526,7 +526,7 @@ read_frame_local (struct symbol *sym, frame_info_ptr frame,
>
> void
> read_frame_arg (const frame_print_options &fp_opts,
> - symbol *sym, frame_info_ptr frame,
> + symbol *sym, const frame_info_ptr &frame,
> struct frame_arg *argp, struct frame_arg *entryargp)
> {
> struct value *val = NULL, *entryval = NULL;
> @@ -721,7 +721,7 @@ read_frame_arg (const frame_print_options &fp_opts,
>
> static void
> print_frame_args (const frame_print_options &fp_opts,
> - struct symbol *func, frame_info_ptr frame,
> + struct symbol *func, const frame_info_ptr &frame,
> int num, struct ui_file *stream)
> {
> struct ui_out *uiout = current_uiout;
> @@ -920,7 +920,7 @@ print_frame_args (const frame_print_options &fp_opts,
> line is in the center of the next 'list'. */
>
> void
> -set_current_sal_from_frame (frame_info_ptr frame)
> +set_current_sal_from_frame (const frame_info_ptr &frame)
> {
> symtab_and_line sal = find_frame_sal (frame);
> if (sal.symtab != NULL)
> @@ -986,7 +986,7 @@ print_frame_info_to_print_what (const char *print_frame_info)
> /* Print the PC from FRAME, plus any flags, to UIOUT. */
>
> static void
> -print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, frame_info_ptr frame,
> +print_pc (struct ui_out *uiout, struct gdbarch *gdbarch, const frame_info_ptr &frame,
> CORE_ADDR pc)
> {
> uiout->field_core_addr ("addr", gdbarch, pc);
> @@ -1021,7 +1021,7 @@ get_user_print_what_frame_info (std::optional<enum print_what> *what)
>
> static void
> do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
> - frame_info_ptr frame, int print_level,
> + const frame_info_ptr &frame, int print_level,
> enum print_what print_what, int print_args,
> int set_current_sal)
> {
> @@ -1189,7 +1189,7 @@ do_print_frame_info (struct ui_out *uiout, const frame_print_options &fp_opts,
>
> void
> print_frame_info (const frame_print_options &fp_opts,
> - frame_info_ptr frame, int print_level,
> + const frame_info_ptr &frame, int print_level,
> enum print_what print_what, int print_args,
> int set_current_sal)
> {
> @@ -1269,7 +1269,7 @@ get_last_displayed_sal ()
> corresponding to FRAME. */
>
> gdb::unique_xmalloc_ptr<char>
> -find_frame_funname (frame_info_ptr frame, enum language *funlang,
> +find_frame_funname (const frame_info_ptr &frame, enum language *funlang,
> struct symbol **funcp)
> {
> struct symbol *func;
> @@ -1324,7 +1324,7 @@ find_frame_funname (frame_info_ptr frame, enum language *funlang,
> static void
> print_frame (struct ui_out *uiout,
> const frame_print_options &fp_opts,
> - frame_info_ptr frame, int print_level,
> + const frame_info_ptr &frame, int print_level,
> enum print_what print_what, int print_args,
> struct symtab_and_line sal)
> {
> @@ -1478,7 +1478,7 @@ frame_selection_by_function_completer (struct cmd_list_element *ignore,
> level 1') then SELECTED_FRAME_P will be false. */
>
> static void
> -info_frame_command_core (frame_info_ptr fi, bool selected_frame_p)
> +info_frame_command_core (const frame_info_ptr &fi, bool selected_frame_p)
> {
> struct symbol *func;
> struct symtab *s;
> @@ -1836,7 +1836,7 @@ trailing_outermost_frame (int count)
> SELECT_FRAME. */
>
> static void
> -select_frame_command_core (frame_info_ptr fi, bool ignored)
> +select_frame_command_core (const frame_info_ptr &fi, bool ignored)
> {
> frame_info_ptr prev_frame = get_selected_frame ();
> select_frame (fi);
> @@ -1849,7 +1849,7 @@ select_frame_command_core (frame_info_ptr fi, bool ignored)
> reprint the current frame summary). */
>
> static void
> -frame_command_core (frame_info_ptr fi, bool ignored)
> +frame_command_core (const frame_info_ptr &fi, bool ignored)
> {
> frame_info_ptr prev_frame = get_selected_frame ();
> select_frame (fi);
> @@ -1873,7 +1873,7 @@ frame_command_core (frame_info_ptr fi, bool ignored)
> 'frame' will all cause SELECTED_FRAME_P to be true. In all other cases
> SELECTED_FRAME_P is false. */
>
> -template <void (*FPTR) (frame_info_ptr fi, bool selected_frame_p)>
> +template <void (*FPTR) (const frame_info_ptr &fi, bool selected_frame_p)>
> class frame_command_helper
> {
> public:
> @@ -2338,7 +2338,7 @@ prepare_reg (const char *regexp, std::optional<compiled_regex> *reg)
> explaining why no local variables could be printed. */
>
> static void
> -print_frame_local_vars (frame_info_ptr frame,
> +print_frame_local_vars (const frame_info_ptr &frame,
> bool quiet,
> const char *regexp, const char *t_regexp,
> int num_tabs, struct ui_file *stream)
> @@ -2500,7 +2500,7 @@ iterate_over_block_arg_vars (const struct block *b,
> explaining why no argument variables could be printed. */
>
> static void
> -print_frame_arg_vars (frame_info_ptr frame,
> +print_frame_arg_vars (const frame_info_ptr &frame,
> bool quiet,
> const char *regexp, const char *t_regexp,
> struct ui_file *stream)
> diff --git a/gdb/stack.h b/gdb/stack.h
> index eb52c1d193fe..e7242c710367 100644
> --- a/gdb/stack.h
> +++ b/gdb/stack.h
> @@ -20,7 +20,7 @@
> #ifndef STACK_H
> #define STACK_H
>
> -gdb::unique_xmalloc_ptr<char> find_frame_funname (frame_info_ptr frame,
> +gdb::unique_xmalloc_ptr<char> find_frame_funname (const frame_info_ptr &frame,
> enum language *funlang,
> struct symbol **funcp);
>
> @@ -43,7 +43,7 @@ void get_user_print_what_frame_info (std::optional<enum print_what> *what);
> /* Return true if we should display the address in addition to the location,
> because we are in the middle of a statement. */
>
> -bool frame_show_address (frame_info_ptr frame, struct symtab_and_line sal);
> +bool frame_show_address (const frame_info_ptr &frame, struct symtab_and_line sal);
>
> /* Forget the last sal we displayed. */
>
> diff --git a/gdb/stap-probe.c b/gdb/stap-probe.c
> index e5796f2ff76d..b54e4d2d10a7 100644
> --- a/gdb/stap-probe.c
> +++ b/gdb/stap-probe.c
> @@ -151,7 +151,7 @@ class stap_probe : public probe
>
> /* See probe.h. */
> struct value *evaluate_argument (unsigned n,
> - frame_info_ptr frame) override;
> + const frame_info_ptr &frame) override;
>
> /* See probe.h. */
> void compile_to_ax (struct agent_expr *aexpr,
> @@ -1438,7 +1438,7 @@ stap_probe::can_evaluate_arguments () const
> corresponding to it. Assertion is thrown if N does not exist. */
>
> struct value *
> -stap_probe::evaluate_argument (unsigned n, frame_info_ptr frame)
> +stap_probe::evaluate_argument (unsigned n, const frame_info_ptr &frame)
> {
> struct stap_probe_arg *arg;
> struct gdbarch *gdbarch = get_frame_arch (frame);
> diff --git a/gdb/std-regs.c b/gdb/std-regs.c
> index 8901f326c8dd..755e0c987e6e 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 (const frame_info_ptr &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 (const frame_info_ptr &frame, const void *baton)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> @@ -73,7 +73,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 (const frame_info_ptr &frame, const void *baton)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> @@ -84,7 +84,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 (const frame_info_ptr &frame, const void *baton)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> diff --git a/gdb/symtab.h b/gdb/symtab.h
> index ca5a5b0f7fde..5bd63979132c 100644
> --- a/gdb/symtab.h
> +++ b/gdb/symtab.h
> @@ -1114,13 +1114,13 @@ struct symbol_computed_ops
> FRAME may be zero. */
>
> struct value *(*read_variable) (struct symbol * symbol,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> /* Read variable SYMBOL like read_variable at (callee) FRAME's function
> entry. SYMBOL should be a function parameter, otherwise
> NO_ENTRY_VALUE_ERROR will be thrown. */
> struct value *(*read_variable_at_entry) (struct symbol *symbol,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> /* Find the "symbol_needs_kind" value for the given symbol. This
> value determines whether reading the symbol needs memory (e.g., a
> @@ -1192,7 +1192,7 @@ struct symbol_block_ops
> computed with DW_AT_static_link and this method must be used to compute
> the corresponding DW_AT_frame_base attribute. */
> CORE_ADDR (*get_frame_base) (struct symbol *framefunc,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> /* Return the block for this function. So far, this is used to
> implement function aliases. So, if this is set, then it's not
> @@ -2350,7 +2350,7 @@ struct gnu_ifunc_fns
>
> extern const struct gnu_ifunc_fns *gnu_ifunc_fns_p;
>
> -extern CORE_ADDR find_solib_trampoline_target (frame_info_ptr, CORE_ADDR);
> +extern CORE_ADDR find_solib_trampoline_target (const frame_info_ptr &, CORE_ADDR);
>
> struct symtab_and_line
> {
> diff --git a/gdb/tic6x-linux-tdep.c b/gdb/tic6x-linux-tdep.c
> index 870ba368fda1..a9de60cf662a 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> @@ -149,7 +149,7 @@ static struct tramp_frame tic6x_linux_rt_sigreturn_tramp_frame =
> instruction to be executed. */
>
> static CORE_ADDR
> -tic6x_linux_syscall_next_pc (frame_info_ptr frame)
> +tic6x_linux_syscall_next_pc (const frame_info_ptr &frame)
> {
> ULONGEST syscall_number = get_frame_register_unsigned (frame,
> TIC6X_B0_REGNUM);
> diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c
> index c81f0100a27a..aa115095df79 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)
> + const frame_info_ptr &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)
> + const frame_info_ptr &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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &this_frame,
> void **this_prologue_cache)
> {
> CORE_ADDR addr_in_block;
> @@ -1103,7 +1103,7 @@ tic6x_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
> /* This is the implementation of gdbarch method get_longjmp_target. */
>
> static int
> -tic6x_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +tic6x_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> diff --git a/gdb/tic6x-tdep.h b/gdb/tic6x-tdep.h
> index 61978ea76813..886e1b8b3098 100644
> --- a/gdb/tic6x-tdep.h
> +++ b/gdb/tic6x-tdep.h
> @@ -50,7 +50,7 @@ struct tic6x_gdbarch_tdep : gdbarch_tdep_base
> {
> /* Return the expected next PC if FRAME is stopped at a syscall
> instruction. */
> - CORE_ADDR (*syscall_next_pc) (frame_info_ptr frame) = nullptr;
> + CORE_ADDR (*syscall_next_pc) (const frame_info_ptr &frame) = nullptr;
>
> const gdb_byte *breakpoint = nullptr; /* Breakpoint instruction. */
>
> diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c
> index efd2e9f8f23b..e0ff0fc2a86c 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,
> + const frame_info_ptr &this_frame,
> struct trad_frame_cache *this_cache,
> CORE_ADDR func)
> {
> diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c
> index 8264937788f0..c25933be5585 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)
> + const frame_info_ptr &next_frame)
> {
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> CORE_ADDR next_addr;
> @@ -774,7 +774,7 @@ tilegx_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
> /* This is the implementation of gdbarch method get_longjmp_target. */
>
> static int
> -tilegx_get_longjmp_target (frame_info_ptr frame, CORE_ADDR *pc)
> +tilegx_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> @@ -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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct tilegx_frame_cache *cache =
> tilegx_frame_cache (this_frame, this_cache);
> diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
> index 7005ca83455c..418d9ea2203a 100644
> --- a/gdb/tracepoint.c
> +++ b/gdb/tracepoint.c
> @@ -206,7 +206,7 @@ set_tracepoint_num (int num)
> the traceframe context (line, function, file). */
>
> static void
> -set_traceframe_context (frame_info_ptr trace_frame)
> +set_traceframe_context (const frame_info_ptr &trace_frame)
> {
> CORE_ADDR trace_pc;
> struct symbol *traceframe_fun;
> diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c
> index 78bfb2fdd4e4..8b63927b133c 100644
> --- a/gdb/trad-frame.c
> +++ b/gdb/trad-frame.c
> @@ -36,7 +36,7 @@ struct trad_frame_cache
> };
>
> struct trad_frame_cache *
> -trad_frame_cache_zalloc (frame_info_ptr this_frame)
> +trad_frame_cache_zalloc (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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,
> + const frame_info_ptr &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 96d2953a2674..ca8792baa17d 100644
> --- a/gdb/trad-frame.h
> +++ b/gdb/trad-frame.h
> @@ -31,7 +31,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 (const frame_info_ptr &);
>
> /* This frame's ID. */
> void trad_frame_set_id (struct trad_frame_cache *this_trad_cache,
> @@ -59,7 +59,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,
> + const frame_info_ptr &this_frame,
> int regnum);
>
> /* Describes the kind of encoding a stored register has. */
> @@ -194,12 +194,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 (const frame_info_ptr &);
> 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 (const frame_info_ptr &this_frame,
> trad_frame_saved_reg this_saved_regs[],
> int regnum);
>
> diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c
> index 51abd347db42..0e730e66b583 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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)
> + const frame_info_ptr &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,
> + const frame_info_ptr &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 36185c1f4e0b..d9e54f5981a2 100644
> --- a/gdb/tramp-frame.h
> +++ b/gdb/tramp-frame.h
> @@ -66,7 +66,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,
> + const frame_info_ptr &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 +74,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,
> + const frame_info_ptr &this_frame,
> CORE_ADDR *pc);
>
> /* Given the current frame in THIS_FRAME and a frame cache in FRAME_CACHE,
> diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
> index 45c60db99203..5dc27c32daac 100644
> --- a/gdb/tui/tui-disasm.c
> +++ b/gdb/tui/tui-disasm.c
> @@ -490,7 +490,7 @@ tui_disasm_window::addr_is_displayed (CORE_ADDR addr) const
> }
>
> void
> -tui_disasm_window::maybe_update (frame_info_ptr fi, symtab_and_line sal)
> +tui_disasm_window::maybe_update (const frame_info_ptr &fi, symtab_and_line sal)
> {
> CORE_ADDR low;
>
> diff --git a/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h
> index 9c4eabbb0929..0aef091069b7 100644
> --- a/gdb/tui/tui-disasm.h
> +++ b/gdb/tui/tui-disasm.h
> @@ -41,7 +41,7 @@ struct tui_disasm_window : public tui_source_window_base
>
> bool location_matches_p (struct bp_location *loc, int line_no) override;
>
> - void maybe_update (frame_info_ptr fi, symtab_and_line sal) override;
> + void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) override;
>
> void erase_source_content () override
> {
> diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
> index 28d0b742ed76..289a25996889 100644
> --- a/gdb/tui/tui-hooks.c
> +++ b/gdb/tui/tui-hooks.c
> @@ -66,7 +66,7 @@ tui_all_objfiles_removed (program_space *pspace)
> /* Observer for the register_changed notification. */
>
> static void
> -tui_register_changed (frame_info_ptr frame, int regno)
> +tui_register_changed (const frame_info_ptr &frame, int regno)
> {
> frame_info_ptr fi;
>
> diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
> index 504aed4b81f9..e7c1839656c8 100644
> --- a/gdb/tui/tui-regs.c
> +++ b/gdb/tui/tui-regs.c
> @@ -85,7 +85,7 @@ tab_expansion_file::write (const char *buf, long length_buf)
> representation of it. */
>
> static std::string
> -tui_register_format (frame_info_ptr frame, int regnum)
> +tui_register_format (const frame_info_ptr &frame, int regnum)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
>
> @@ -406,7 +406,7 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
> given a particular frame. If the values have changed, they are
> updated with the new value and highlighted. */
> void
> -tui_data_window::check_register_values (frame_info_ptr frame)
> +tui_data_window::check_register_values (const frame_info_ptr &frame)
> {
> if (frame == nullptr)
> set_register_group (nullptr);
> diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
> index 9d9cae40fe07..07b951316b6b 100644
> --- a/gdb/tui/tui-regs.h
> +++ b/gdb/tui/tui-regs.h
> @@ -74,7 +74,7 @@ struct tui_data_window : public tui_win_info
> return DATA_NAME;
> }
>
> - void check_register_values (frame_info_ptr frame);
> + void check_register_values (const frame_info_ptr &frame);
>
> void set_register_group (const reggroup *group);
>
> diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
> index 635cb2f35a65..fa956b29a195 100644
> --- a/gdb/tui/tui-source.c
> +++ b/gdb/tui/tui-source.c
> @@ -199,7 +199,7 @@ tui_source_window::line_is_displayed (int line) const
> }
>
> void
> -tui_source_window::maybe_update (frame_info_ptr fi, symtab_and_line sal)
> +tui_source_window::maybe_update (const frame_info_ptr &fi, symtab_and_line sal)
> {
> int start_line = (sal.line - ((height - box_size ()) / 2)) + 1;
> if (start_line <= 0)
> diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
> index 0bf43b663e73..6d4ad4e39c27 100644
> --- a/gdb/tui/tui-source.h
> +++ b/gdb/tui/tui-source.h
> @@ -46,7 +46,7 @@ struct tui_source_window : public tui_source_window_base
>
> bool showing_source_p (const char *filename) const;
>
> - void maybe_update (frame_info_ptr fi, symtab_and_line sal) override;
> + void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) override;
>
> void erase_source_content () override
> {
> diff --git a/gdb/tui/tui-status.c b/gdb/tui/tui-status.c
> index df4675fe5dfb..aac391d3babc 100644
> --- a/gdb/tui/tui-status.c
> +++ b/gdb/tui/tui-status.c
> @@ -213,7 +213,7 @@ tui_status_window::make_status_line () const
> name is demangled if demangling is turned on. Returns a pointer to
> a static area holding the result. */
> static char*
> -tui_get_function_from_frame (frame_info_ptr fi)
> +tui_get_function_from_frame (const frame_info_ptr &fi)
> {
> static char name[256];
> string_file stream;
> @@ -267,7 +267,7 @@ tui_status_window::rerender ()
> refresh. */
>
> void
> -tui_show_frame_info (frame_info_ptr fi)
> +tui_show_frame_info (const frame_info_ptr &fi)
> {
> bool status_changed_p;
>
> diff --git a/gdb/tui/tui-status.h b/gdb/tui/tui-status.h
> index efef5375e86e..0af446641042 100644
> --- a/gdb/tui/tui-status.h
> +++ b/gdb/tui/tui-status.h
> @@ -51,6 +51,6 @@ struct tui_status_window
> };
>
> extern void tui_show_status_content (void);
> -extern void tui_show_frame_info (frame_info_ptr);
> +extern void tui_show_frame_info (const frame_info_ptr &);
>
> #endif /* TUI_TUI_STATUS_H */
> diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
> index 628fc22c03ca..646597306f26 100644
> --- a/gdb/tui/tui-winsource.h
> +++ b/gdb/tui/tui-winsource.h
> @@ -159,7 +159,7 @@ struct tui_source_window_base : public tui_win_info
>
> /* Update the window to display the given location. Does nothing if
> the location is already displayed. */
> - virtual void maybe_update (frame_info_ptr fi, symtab_and_line sal) = 0;
> + virtual void maybe_update (const frame_info_ptr &fi, symtab_and_line sal) = 0;
>
> void update_source_window_as_is (struct gdbarch *gdbarch,
> const struct symtab_and_line &sal);
> diff --git a/gdb/unittests/frame_info_ptr-selftests.c b/gdb/unittests/frame_info_ptr-selftests.c
> index f0981b836dd3..f09d1c8ba015 100644
> --- a/gdb/unittests/frame_info_ptr-selftests.c
> +++ b/gdb/unittests/frame_info_ptr-selftests.c
> @@ -36,7 +36,7 @@ validate_user_created_frame (frame_id id)
> }
>
> static frame_info_ptr
> -user_created_frame_callee (frame_info_ptr frame)
> +user_created_frame_callee (const frame_info_ptr &frame)
> {
> validate_user_created_frame (get_frame_id (frame));
>
> diff --git a/gdb/user-regs.c b/gdb/user-regs.c
> index 61c8f8bd2c02..d1b510a79278 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) (const frame_info_ptr &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, const frame_info_ptr &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 cbe0cded2d5e..baa3581a0baf 100644
> --- a/gdb/user-regs.h
> +++ b/gdb/user-regs.h
> @@ -56,9 +56,9 @@ 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) (const frame_info_ptr &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, const frame_info_ptr &frame);
>
> /* 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 5b22ee2f4c42..4c1fd383a84f 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
>
> diff --git a/gdb/valops.c b/gdb/valops.c
> index 399d0f109e14..be907440a59b 100644
> --- a/gdb/valops.c
> +++ b/gdb/valops.c
> @@ -976,7 +976,7 @@ value_one (struct type *type)
> e.g. in case the type is a variable length array. */
>
> static struct value *
> -get_value_at (struct type *type, CORE_ADDR addr, frame_info_ptr frame,
> +get_value_at (struct type *type, CORE_ADDR addr, const frame_info_ptr &frame,
> int lazy)
> {
> struct value *val;
> @@ -1029,7 +1029,7 @@ value_at_non_lval (struct type *type, CORE_ADDR addr)
> e.g. in case the type is a variable length array. */
>
> struct value *
> -value_at_lazy (struct type *type, CORE_ADDR addr, frame_info_ptr frame)
> +value_at_lazy (struct type *type, CORE_ADDR addr, const frame_info_ptr &frame)
> {
> return get_value_at (type, addr, frame, 1);
> }
> diff --git a/gdb/value.c b/gdb/value.c
> index bea34e556a60..c7e940badb97 100644
> --- a/gdb/value.c
> +++ b/gdb/value.c
> @@ -962,11 +962,11 @@ value::allocate (struct type *type)
> /* See value.h */
>
> value *
> -value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
> - struct type *type)
> +value::allocate_register_lazy (const frame_info_ptr &initial_next_frame,
> + int regnum, struct type *type)
> {
> if (type == nullptr)
> - type = register_type (frame_unwind_arch (next_frame), regnum);
> + type = register_type (frame_unwind_arch (initial_next_frame), regnum);
>
> value *result = value::allocate_lazy (type);
>
> @@ -978,6 +978,7 @@ value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
> NEXT_FRAME will not have a valid frame id yet. Find the next non-inline
> frame (possibly the sentinel frame). This is where registers are unwound
> from anyway. */
> + frame_info_ptr next_frame = initial_next_frame;
> while (get_frame_type (next_frame) == INLINE_FRAME)
> next_frame = get_next_frame_sentinel_okay (next_frame);
>
> @@ -992,7 +993,7 @@ value::allocate_register_lazy (frame_info_ptr next_frame, int regnum,
> /* See value.h */
>
> value *
> -value::allocate_register (frame_info_ptr next_frame, int regnum,
> +value::allocate_register (const frame_info_ptr &next_frame, int regnum,
> struct type *type)
> {
> value *result = value::allocate_register_lazy (next_frame, regnum, type);
> @@ -3598,7 +3599,7 @@ struct value *
> value_from_contents_and_address (struct type *type,
> const gdb_byte *valaddr,
> CORE_ADDR address,
> - frame_info_ptr frame)
> + const frame_info_ptr &frame)
> {
> gdb::array_view<const gdb_byte> view;
> if (valaddr != nullptr)
> @@ -4070,7 +4071,7 @@ value::fetch_lazy ()
> /* See value.h. */
>
> value *
> -pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
> +pseudo_from_raw_part (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_num, int raw_offset)
> {
> value *pseudo_reg_val
> @@ -4084,7 +4085,7 @@ pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
> /* See value.h. */
>
> void
> -pseudo_to_raw_part (frame_info_ptr next_frame,
> +pseudo_to_raw_part (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_num, int raw_offset)
> {
> @@ -4101,7 +4102,7 @@ pseudo_to_raw_part (frame_info_ptr next_frame,
> /* See value.h. */
>
> value *
> -pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> +pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_1_num, int raw_reg_2_num)
> {
> value *pseudo_reg_val
> @@ -4126,7 +4127,7 @@ pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> /* See value.h. */
>
> void
> -pseudo_to_concat_raw (frame_info_ptr next_frame,
> +pseudo_to_concat_raw (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_1_num, int raw_reg_2_num)
> {
> @@ -4149,7 +4150,7 @@ pseudo_to_concat_raw (frame_info_ptr next_frame,
> /* See value.h. */
>
> value *
> -pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> +pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_1_num, int raw_reg_2_num,
> int raw_reg_3_num)
> {
> @@ -4180,7 +4181,7 @@ pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> /* See value.h. */
>
> void
> -pseudo_to_concat_raw (frame_info_ptr next_frame,
> +pseudo_to_concat_raw (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_1_num, int raw_reg_2_num, int raw_reg_3_num)
> {
> diff --git a/gdb/value.h b/gdb/value.h
> index c7d3866038ab..e8d3c9fd907a 100644
> --- a/gdb/value.h
> +++ b/gdb/value.h
> @@ -162,13 +162,14 @@ struct value
> /* Allocate a lazy value representing register REGNUM in the frame previous
> to NEXT_FRAME. If TYPE is non-nullptr, use it as the value type.
> Otherwise, use `register_type` to obtain the type. */
> - static struct value *allocate_register_lazy (frame_info_ptr next_frame,
> - int regnum, type *type = nullptr);
> + static struct value *allocate_register_lazy (const frame_info_ptr &next_frame,
> + int regnum,
> + type *type = nullptr);
>
> /* Same as `allocate_register_lazy`, but make the value non-lazy.
>
> The caller is responsible for filling the value's contents. */
> - static struct value *allocate_register (frame_info_ptr next_frame,
> + static struct value *allocate_register (const frame_info_ptr &next_frame,
> int regnum, type *type = nullptr);
>
> /* Create a computed lvalue, with type TYPE, function pointers
> @@ -1110,7 +1111,7 @@ extern struct value *value_at (struct type *type, CORE_ADDR addr);
> properties. */
>
> extern struct value *value_at_lazy (struct type *type, CORE_ADDR addr,
> - frame_info_ptr frame = nullptr);
> + const frame_info_ptr &frame = nullptr);
>
> /* Like value_at, but ensures that the result is marked not_lval.
> This can be important if the memory is "volatile". */
> @@ -1120,7 +1121,7 @@ extern struct value *value_from_contents_and_address_unresolved
> (struct type *, const gdb_byte *, CORE_ADDR);
> extern struct value *value_from_contents_and_address
> (struct type *, const gdb_byte *, CORE_ADDR,
> - frame_info_ptr frame = nullptr);
> + const frame_info_ptr &frame = nullptr);
> extern struct value *value_from_contents (struct type *, const gdb_byte *);
>
> extern value *default_value_from_register (gdbarch *gdbarch, type *type,
> @@ -1128,10 +1129,10 @@ extern value *default_value_from_register (gdbarch *gdbarch, type *type,
> const frame_info_ptr &this_frame);
>
> extern struct value *value_from_register (struct type *type, int regnum,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> extern CORE_ADDR address_from_register (int regnum,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> extern struct value *value_of_variable (struct symbol *var,
> const struct block *b);
> @@ -1142,11 +1143,11 @@ extern struct value *address_of_variable (struct symbol *var,
> /* Return a value with the contents of register REGNUM as found in the frame
> previous to NEXT_FRAME. */
>
> -extern value *value_of_register (int regnum, frame_info_ptr next_frame);
> +extern value *value_of_register (int regnum, const frame_info_ptr &next_frame);
>
> /* Same as the above, but the value is not fetched. */
>
> -extern value *value_of_register_lazy (frame_info_ptr next_frame, int regnum);
> +extern value *value_of_register_lazy (const frame_info_ptr &next_frame, int regnum);
>
> /* Return the symbol's reading requirement. */
>
> @@ -1159,7 +1160,7 @@ extern int symbol_read_needs_frame (struct symbol *);
>
> extern struct value *read_var_value (struct symbol *var,
> const struct block *var_block,
> - frame_info_ptr frame);
> + const frame_info_ptr &frame);
>
> extern struct value *allocate_repeat_value (struct type *type, int count);
>
> @@ -1556,7 +1557,7 @@ extern int val_print_string (struct type *elttype, const char *encoding,
>
> extern void print_variable_and_value (const char *name,
> struct symbol *var,
> - frame_info_ptr frame,
> + const frame_info_ptr &frame,
> struct ui_file *stream,
> int indent);
>
> @@ -1667,13 +1668,13 @@ struct scoped_array_length_limiting
> The size of the pseudo register specifies how many bytes to use. The
> offset plus the size must not overflow the raw register's size. */
>
> -value *pseudo_from_raw_part (frame_info_ptr next_frame, int pseudo_reg_num,
> +value *pseudo_from_raw_part (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_num, int raw_offset);
>
> /* Write PSEUDO_BUF, the contents of a pseudo register, to part of raw register
> RAW_REG_NUM starting at RAW_OFFSET. */
>
> -void pseudo_to_raw_part (frame_info_ptr next_frame,
> +void pseudo_to_raw_part (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_num, int raw_offset);
>
> @@ -1683,26 +1684,26 @@ void pseudo_to_raw_part (frame_info_ptr next_frame,
> The sum of the sizes of raw registers must be equal to the size of the
> pseudo register. */
>
> -value *pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> +value *pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_1_num, int raw_reg_2_num);
>
> /* Write PSEUDO_BUF, the contents of a pseudo register, to the two raw registers
> RAW_REG_1_NUM and RAW_REG_2_NUM. */
>
> -void pseudo_to_concat_raw (frame_info_ptr next_frame,
> +void pseudo_to_concat_raw (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_1_num, int raw_reg_2_num);
>
> /* Same as the above, but with three raw registers. */
>
> -value *pseudo_from_concat_raw (frame_info_ptr next_frame, int pseudo_reg_num,
> +value *pseudo_from_concat_raw (const frame_info_ptr &next_frame, int pseudo_reg_num,
> int raw_reg_1_num, int raw_reg_2_num,
> int raw_reg_3_num);
>
> /* Write PSEUDO_BUF, the contents of a pseudo register, to the three raw
> registers RAW_REG_1_NUM, RAW_REG_2_NUM and RAW_REG_3_NUM. */
>
> -void pseudo_to_concat_raw (frame_info_ptr next_frame,
> +void pseudo_to_concat_raw (const frame_info_ptr &next_frame,
> gdb::array_view<const gdb_byte> pseudo_buf,
> int raw_reg_1_num, int raw_reg_2_num,
> int raw_reg_3_num);
> diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
> index 979dc1786e0a..125f3423be57 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, const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> return get_frame_register_unsigned (this_frame, VAX_AP_REGNUM);
> }
> @@ -423,7 +423,7 @@ static const struct frame_base vax_frame_base =
> /* Return number of arguments for FRAME. */
>
> static int
> -vax_frame_num_args (frame_info_ptr frame)
> +vax_frame_num_args (const frame_info_ptr &frame)
> {
> CORE_ADDR args;
>
> diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
> index b19c9491fd0f..16c6d41a961b 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)
> + const frame_info_ptr &this_frame)
> {
> enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
> CORE_ADDR next_addr;
> @@ -581,7 +581,7 @@ xstormy16_find_jmp_table_entry (struct gdbarch *gdbarch, CORE_ADDR faddr)
> }
>
> static CORE_ADDR
> -xstormy16_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
> +xstormy16_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (frame);
> CORE_ADDR tmp = xstormy16_resolve_jmp_table_entry (gdbarch, pc);
> @@ -653,7 +653,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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> struct xstormy16_frame_cache *cache;
> @@ -689,7 +689,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 (const frame_info_ptr &this_frame,
Trailing white space.
Thanks,
Andrew
> void **this_cache, int regnum)
> {
> struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
> @@ -707,7 +707,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 (const frame_info_ptr &this_frame, void **this_cache,
> struct frame_id *this_id)
> {
> struct xstormy16_frame_cache *cache = xstormy16_frame_cache (this_frame,
> @@ -721,7 +721,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 (const frame_info_ptr &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 2563d65f91e2..d116b34fd819 100644
> --- a/gdb/xtensa-tdep.c
> +++ b/gdb/xtensa-tdep.c
> @@ -1026,7 +1026,7 @@ 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, const frame_info_ptr &next_frame)
> {
> gdb_byte buf[8];
> CORE_ADDR pc;
> @@ -1044,7 +1044,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, const frame_info_ptr &this_frame)
> {
> CORE_ADDR pc, fp;
> xtensa_gdbarch_tdep *tdep = gdbarch_tdep<xtensa_gdbarch_tdep> (gdbarch);
> @@ -1217,16 +1217,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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame, void **this_cache)
> {
> xtensa_frame_cache_t *cache;
> CORE_ADDR ra, wb, ws, pc, sp, ps;
> @@ -1392,7 +1392,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> struct frame_id *this_id)
> {
> @@ -1406,7 +1406,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 (const frame_info_ptr &this_frame,
> void **this_cache,
> int regnum)
> {
> @@ -1509,7 +1509,7 @@ xtensa_unwind =
> };
>
> static CORE_ADDR
> -xtensa_frame_base_address (frame_info_ptr this_frame, void **this_cache)
> +xtensa_frame_base_address (const frame_info_ptr &this_frame, void **this_cache)
> {
> struct xtensa_frame_cache *cache =
> xtensa_frame_cache (this_frame, this_cache);
> @@ -2543,7 +2543,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 (const frame_info_ptr &this_frame,
> xtensa_frame_cache_t *cache, CORE_ADDR pc)
> {
> struct gdbarch *gdbarch = get_frame_arch (this_frame);
> @@ -2892,7 +2892,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 (const frame_info_ptr &this_frame,
> xtensa_frame_cache_t *cache,
> CORE_ADDR pc)
> {
> diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c
> index f03eafdc6f72..f2d000f53030 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 (const frame_info_ptr &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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
> void **this_prologue_cache, int regnum)
> {
> struct z80_unwind_cache *info
>
> base-commit: b47cef7ca8a2fa55acdab367c87c1ea076aec4b2
> --
> 2.43.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gdb: pass frames as `const frame_info_ptr &`
2024-02-20 11:24 ` Andrew Burgess
@ 2024-02-20 15:44 ` Simon Marchi
2024-02-21 14:13 ` Andrew Burgess
0 siblings, 1 reply; 4+ messages in thread
From: Simon Marchi @ 2024-02-20 15:44 UTC (permalink / raw)
To: Andrew Burgess, Simon Marchi, gdb-patches
On 2/20/24 06:24, Andrew Burgess wrote:
>
> Thank you for this!
>
> I've wanted this change since frame_info_ptr was first added, but never
> got around to actually writing the patch.
>
> I haven't looked through every line of this, but I did flick through,
> and what I saw looks good. I also applied the patch and did a build
> with no issues, except...
To my defense, they were there previously! But I might as well remove
them since I touch the lines.
>
> ... you've introduced trailing whitespace in 5 places! I've marked them
> all in the patch below.
When you reply in-line, can you trim the unrelevant portions of the
patch? It's a bit difficult to find your replies in 12k lines.
>
> I'd be happy to see this merged.
>
> Approved-By: Andrew Burgess <aburgess@redhat.com>
Thanks, will push with the spaces removed.
Simon
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] gdb: pass frames as `const frame_info_ptr &`
2024-02-20 15:44 ` Simon Marchi
@ 2024-02-21 14:13 ` Andrew Burgess
0 siblings, 0 replies; 4+ messages in thread
From: Andrew Burgess @ 2024-02-21 14:13 UTC (permalink / raw)
To: Simon Marchi, Simon Marchi, gdb-patches
Simon Marchi <simon.marchi@efficios.com> writes:
> On 2/20/24 06:24, Andrew Burgess wrote:
>>
>> Thank you for this!
>>
>> I've wanted this change since frame_info_ptr was first added, but never
>> got around to actually writing the patch.
>>
>> I haven't looked through every line of this, but I did flick through,
>> and what I saw looks good. I also applied the patch and did a build
>> with no issues, except...
>
> To my defense, they were there previously! But I might as well remove
> them since I touch the lines.
>
>>
>> ... you've introduced trailing whitespace in 5 places! I've marked them
>> all in the patch below.
>
> When you reply in-line, can you trim the unrelevant portions of the
> patch? It's a bit difficult to find your replies in 12k lines.
Sorry. My client auto-hides large blocks of quoted text. I'll try to
do better in future.
Thanks,
Andrew
>
>>
>> I'd be happy to see this merged.
>>
>> Approved-By: Andrew Burgess <aburgess@redhat.com>
>
> Thanks, will push with the spaces removed.
>
> Simon
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-02-21 14:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-19 18:07 [PATCH] gdb: pass frames as `const frame_info_ptr &` Simon Marchi
2024-02-20 11:24 ` Andrew Burgess
2024-02-20 15:44 ` Simon Marchi
2024-02-21 14:13 ` Andrew Burgess
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).