gdb: introduce displaced_step_closure_up type alias
To help with readability, add the type displaced_step_closure_up, an alias for std::unique_ptr<displaced_step_closure>, and use it throughout the code base. gdb/ChangeLog: * aarch64-tdep.c (aarch64_displaced_step_copy_insn): Use displaced_step_closure_up. * aarch64-tdep.h (aarch64_displaced_step_copy_insn): Likewise. (struct displaced_step_closure_up): * amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise. * amd64-tdep.h (amd64_displaced_step_copy_insn): Likewise. * arm-linux-tdep.c (arm_linux_displaced_step_copy_insn): Likewise. * gdbarch.sh (displaced_step_copy_insn): Likewise. * gdbarch.c, gdbarch.h: Re-generate. * i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Use displaced_step_closure_up. * i386-tdep.c (i386_displaced_step_copy_insn): Likewise. * i386-tdep.h (i386_displaced_step_copy_insn): Likewise. * infrun.h (displaced_step_closure_up): New type alias. (struct displaced_step_inferior_state) <step_closure>: Change type to displaced_step_closure_up. * rs6000-tdep.c (ppc_displaced_step_copy_insn): Use displaced_step_closure_up. * s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
This commit is contained in:
parent
1a627e7e6c
commit
fdb61c6c39
@ -1,3 +1,26 @@
|
|||||||
|
2020-02-14 Simon Marchi <simon.marchi@efficios.com>
|
||||||
|
|
||||||
|
* aarch64-tdep.c (aarch64_displaced_step_copy_insn): Use
|
||||||
|
displaced_step_closure_up.
|
||||||
|
* aarch64-tdep.h (aarch64_displaced_step_copy_insn): Likewise.
|
||||||
|
(struct displaced_step_closure_up):
|
||||||
|
* amd64-tdep.c (amd64_displaced_step_copy_insn): Likewise.
|
||||||
|
* amd64-tdep.h (amd64_displaced_step_copy_insn): Likewise.
|
||||||
|
* arm-linux-tdep.c (arm_linux_displaced_step_copy_insn):
|
||||||
|
Likewise.
|
||||||
|
* gdbarch.sh (displaced_step_copy_insn): Likewise.
|
||||||
|
* gdbarch.c, gdbarch.h: Re-generate.
|
||||||
|
* i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Use
|
||||||
|
displaced_step_closure_up.
|
||||||
|
* i386-tdep.c (i386_displaced_step_copy_insn): Likewise.
|
||||||
|
* i386-tdep.h (i386_displaced_step_copy_insn): Likewise.
|
||||||
|
* infrun.h (displaced_step_closure_up): New type alias.
|
||||||
|
(struct displaced_step_inferior_state) <step_closure>: Change
|
||||||
|
type to displaced_step_closure_up.
|
||||||
|
* rs6000-tdep.c (ppc_displaced_step_copy_insn): Use
|
||||||
|
displaced_step_closure_up.
|
||||||
|
* s390-tdep.c (s390_displaced_step_copy_insn): Likewise.
|
||||||
|
|
||||||
2020-02-14 Tom Tromey <tom@tromey.com>
|
2020-02-14 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* minidebug.c (gnu_debug_key): New global.
|
* minidebug.c (gnu_debug_key): New global.
|
||||||
|
@ -2999,7 +2999,7 @@ static const struct aarch64_insn_visitor visitor =
|
|||||||
|
|
||||||
/* Implement the "displaced_step_copy_insn" gdbarch method. */
|
/* Implement the "displaced_step_copy_insn" gdbarch method. */
|
||||||
|
|
||||||
std::unique_ptr<displaced_step_closure>
|
displaced_step_closure_up
|
||||||
aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#define AARCH64_TDEP_H
|
#define AARCH64_TDEP_H
|
||||||
|
|
||||||
#include "arch/aarch64.h"
|
#include "arch/aarch64.h"
|
||||||
|
#include "infrun.h"
|
||||||
|
|
||||||
/* Forward declarations. */
|
/* Forward declarations. */
|
||||||
struct gdbarch;
|
struct gdbarch;
|
||||||
@ -106,7 +107,7 @@ const target_desc *aarch64_read_description (uint64_t vq, bool pauth_p);
|
|||||||
extern int aarch64_process_record (struct gdbarch *gdbarch,
|
extern int aarch64_process_record (struct gdbarch *gdbarch,
|
||||||
struct regcache *regcache, CORE_ADDR addr);
|
struct regcache *regcache, CORE_ADDR addr);
|
||||||
|
|
||||||
struct std::unique_ptr<displaced_step_closure>
|
displaced_step_closure_up
|
||||||
aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs);
|
struct regcache *regs);
|
||||||
|
@ -1465,7 +1465,7 @@ fixup_displaced_copy (struct gdbarch *gdbarch,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<displaced_step_closure>
|
displaced_step_closure_up
|
||||||
amd64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
amd64_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
@ -26,6 +26,7 @@ struct frame_info;
|
|||||||
struct regcache;
|
struct regcache;
|
||||||
|
|
||||||
#include "i386-tdep.h"
|
#include "i386-tdep.h"
|
||||||
|
#include "infrun.h"
|
||||||
|
|
||||||
/* Register numbers of various important registers. */
|
/* Register numbers of various important registers. */
|
||||||
|
|
||||||
@ -87,7 +88,7 @@ enum amd64_regnum
|
|||||||
|
|
||||||
#define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1)
|
#define AMD64_NUM_REGS (AMD64_GSBASE_REGNUM + 1)
|
||||||
|
|
||||||
extern std::unique_ptr<displaced_step_closure> amd64_displaced_step_copy_insn
|
extern displaced_step_closure_up amd64_displaced_step_copy_insn
|
||||||
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
|
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs);
|
struct regcache *regs);
|
||||||
extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch,
|
extern void amd64_displaced_step_fixup (struct gdbarch *gdbarch,
|
||||||
|
@ -1103,7 +1103,7 @@ arm_catch_kernel_helper_return (struct gdbarch *gdbarch, CORE_ADDR from,
|
|||||||
the program has stepped into a Linux kernel helper routine (which must be
|
the program has stepped into a Linux kernel helper routine (which must be
|
||||||
handled as a special case). */
|
handled as a special case). */
|
||||||
|
|
||||||
static std::unique_ptr<displaced_step_closure>
|
static displaced_step_closure_up
|
||||||
arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
arm_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
@ -3936,7 +3936,7 @@ gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch)
|
|||||||
return gdbarch->displaced_step_copy_insn != NULL;
|
return gdbarch->displaced_step_copy_insn != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<displaced_step_closure>
|
displaced_step_closure_up
|
||||||
gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
|
gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
|
||||||
{
|
{
|
||||||
gdb_assert (gdbarch != NULL);
|
gdb_assert (gdbarch != NULL);
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "frame.h"
|
#include "frame.h"
|
||||||
#include "dis-asm.h"
|
#include "dis-asm.h"
|
||||||
#include "gdb_obstack.h"
|
#include "gdb_obstack.h"
|
||||||
|
#include "infrun.h"
|
||||||
|
|
||||||
struct floatformat;
|
struct floatformat;
|
||||||
struct ui_file;
|
struct ui_file;
|
||||||
@ -55,7 +56,6 @@ struct obstack;
|
|||||||
struct bp_target_info;
|
struct bp_target_info;
|
||||||
struct target_desc;
|
struct target_desc;
|
||||||
struct symbol;
|
struct symbol;
|
||||||
struct displaced_step_closure;
|
|
||||||
struct syscall;
|
struct syscall;
|
||||||
struct agent_expr;
|
struct agent_expr;
|
||||||
struct axs_value;
|
struct axs_value;
|
||||||
@ -1036,8 +1036,8 @@ extern void set_gdbarch_max_insn_length (struct gdbarch *gdbarch, ULONGEST max_i
|
|||||||
|
|
||||||
extern int gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch);
|
extern int gdbarch_displaced_step_copy_insn_p (struct gdbarch *gdbarch);
|
||||||
|
|
||||||
typedef std::unique_ptr<displaced_step_closure> (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
|
typedef displaced_step_closure_up (gdbarch_displaced_step_copy_insn_ftype) (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
|
||||||
extern std::unique_ptr<displaced_step_closure> gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
|
extern displaced_step_closure_up gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs);
|
||||||
extern void set_gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn);
|
extern void set_gdbarch_displaced_step_copy_insn (struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype *displaced_step_copy_insn);
|
||||||
|
|
||||||
/* Return true if GDB should use hardware single-stepping to execute
|
/* Return true if GDB should use hardware single-stepping to execute
|
||||||
|
@ -816,7 +816,7 @@ V;ULONGEST;max_insn_length;;;0;0
|
|||||||
# If the instruction cannot execute out of line, return NULL. The
|
# If the instruction cannot execute out of line, return NULL. The
|
||||||
# core falls back to stepping past the instruction in-line instead in
|
# core falls back to stepping past the instruction in-line instead in
|
||||||
# that case.
|
# that case.
|
||||||
M;std::unique_ptr<displaced_step_closure>;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs
|
M;displaced_step_closure_up;displaced_step_copy_insn;CORE_ADDR from, CORE_ADDR to, struct regcache *regs;from, to, regs
|
||||||
|
|
||||||
# Return true if GDB should use hardware single-stepping to execute
|
# Return true if GDB should use hardware single-stepping to execute
|
||||||
# the displaced instruction identified by CLOSURE. If false,
|
# the displaced instruction identified by CLOSURE. If false,
|
||||||
@ -1312,6 +1312,7 @@ cat <<EOF
|
|||||||
#include "frame.h"
|
#include "frame.h"
|
||||||
#include "dis-asm.h"
|
#include "dis-asm.h"
|
||||||
#include "gdb_obstack.h"
|
#include "gdb_obstack.h"
|
||||||
|
#include "infrun.h"
|
||||||
|
|
||||||
struct floatformat;
|
struct floatformat;
|
||||||
struct ui_file;
|
struct ui_file;
|
||||||
@ -1328,7 +1329,6 @@ struct obstack;
|
|||||||
struct bp_target_info;
|
struct bp_target_info;
|
||||||
struct target_desc;
|
struct target_desc;
|
||||||
struct symbol;
|
struct symbol;
|
||||||
struct displaced_step_closure;
|
|
||||||
struct syscall;
|
struct syscall;
|
||||||
struct agent_expr;
|
struct agent_expr;
|
||||||
struct axs_value;
|
struct axs_value;
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include "symtab.h"
|
#include "symtab.h"
|
||||||
#include "arch-utils.h"
|
#include "arch-utils.h"
|
||||||
#include "xml-syscall.h"
|
#include "xml-syscall.h"
|
||||||
|
#include "infrun.h"
|
||||||
|
|
||||||
#include "i387-tdep.h"
|
#include "i387-tdep.h"
|
||||||
#include "gdbsupport/x86-xstate.h"
|
#include "gdbsupport/x86-xstate.h"
|
||||||
@ -797,12 +798,12 @@ i386_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
|||||||
which does not seem worth it. The same effect is achieved by patching that
|
which does not seem worth it. The same effect is achieved by patching that
|
||||||
'nop' instruction there instead. */
|
'nop' instruction there instead. */
|
||||||
|
|
||||||
static std::unique_ptr<displaced_step_closure>
|
static displaced_step_closure_up
|
||||||
i386_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
i386_linux_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
{
|
{
|
||||||
std::unique_ptr<displaced_step_closure> closure_
|
displaced_step_closure_up closure_
|
||||||
= i386_displaced_step_copy_insn (gdbarch, from, to, regs);
|
= i386_displaced_step_copy_insn (gdbarch, from, to, regs);
|
||||||
|
|
||||||
if (i386_linux_get_syscall_number_from_regcache (regs) != -1)
|
if (i386_linux_get_syscall_number_from_regcache (regs) != -1)
|
||||||
|
@ -798,7 +798,7 @@ i386_insn_is_jump (struct gdbarch *gdbarch, CORE_ADDR addr)
|
|||||||
|
|
||||||
/* Some kernels may run one past a syscall insn, so we have to cope. */
|
/* Some kernels may run one past a syscall insn, so we have to cope. */
|
||||||
|
|
||||||
std::unique_ptr<displaced_step_closure>
|
displaced_step_closure_up
|
||||||
i386_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
i386_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
@ -428,7 +428,7 @@ extern void
|
|||||||
|
|
||||||
typedef buf_displaced_step_closure i386_displaced_step_closure;
|
typedef buf_displaced_step_closure i386_displaced_step_closure;
|
||||||
|
|
||||||
extern std::unique_ptr<displaced_step_closure> i386_displaced_step_copy_insn
|
extern displaced_step_closure_up i386_displaced_step_copy_insn
|
||||||
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
|
(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs);
|
struct regcache *regs);
|
||||||
extern void i386_displaced_step_fixup (struct gdbarch *gdbarch,
|
extern void i386_displaced_step_fixup (struct gdbarch *gdbarch,
|
||||||
|
@ -265,6 +265,8 @@ struct displaced_step_closure
|
|||||||
virtual ~displaced_step_closure () = 0;
|
virtual ~displaced_step_closure () = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
using displaced_step_closure_up = std::unique_ptr<displaced_step_closure>;
|
||||||
|
|
||||||
/* A simple displaced step closure that contains only a byte buffer. */
|
/* A simple displaced step closure that contains only a byte buffer. */
|
||||||
|
|
||||||
struct buf_displaced_step_closure : displaced_step_closure
|
struct buf_displaced_step_closure : displaced_step_closure
|
||||||
@ -310,7 +312,7 @@ struct displaced_step_inferior_state
|
|||||||
|
|
||||||
/* The closure provided gdbarch_displaced_step_copy_insn, to be used
|
/* The closure provided gdbarch_displaced_step_copy_insn, to be used
|
||||||
for post-step cleanup. */
|
for post-step cleanup. */
|
||||||
std::unique_ptr<displaced_step_closure> step_closure;
|
displaced_step_closure_up step_closure;
|
||||||
|
|
||||||
/* The address of the original instruction, and the copy we
|
/* The address of the original instruction, and the copy we
|
||||||
made. */
|
made. */
|
||||||
|
@ -855,7 +855,7 @@ typedef buf_displaced_step_closure ppc_displaced_step_closure;
|
|||||||
|
|
||||||
/* We can't displaced step atomic sequences. */
|
/* We can't displaced step atomic sequences. */
|
||||||
|
|
||||||
static std::unique_ptr<displaced_step_closure>
|
static displaced_step_closure_up
|
||||||
ppc_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
ppc_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
@ -425,7 +425,7 @@ typedef buf_displaced_step_closure s390_displaced_step_closure;
|
|||||||
|
|
||||||
/* Implementation of gdbarch_displaced_step_copy_insn. */
|
/* Implementation of gdbarch_displaced_step_copy_insn. */
|
||||||
|
|
||||||
static std::unique_ptr<displaced_step_closure>
|
static displaced_step_closure_up
|
||||||
s390_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
s390_displaced_step_copy_insn (struct gdbarch *gdbarch,
|
||||||
CORE_ADDR from, CORE_ADDR to,
|
CORE_ADDR from, CORE_ADDR to,
|
||||||
struct regcache *regs)
|
struct regcache *regs)
|
||||||
|
Loading…
Reference in New Issue
Block a user