mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 01:07:52 +00:00
gdb: pass core file to gdbarch_core_read_x86_xsave_layout
Continuing the removal of 'current_program_space->core_bfd ()' from GDB, this commit updates the gdbarch method 'gdbarch_core_read_x86_xsave_layout' to take the core file BFD as a reference parameter. For now this just moves the 'current_program_space->core_bfd ()' calls up the program stack into core_target::fetch_x86_xsave_layout. In the future I plan to move the core file BFD object out of the program_space and into the core_target, at which point these new global accesses can also be removed. There should be no user visible changes after this commit. Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
@@ -1912,7 +1912,9 @@ core_target::fetch_x86_xsave_layout ()
|
|||||||
gdbarch_core_read_x86_xsave_layout_p (m_core_gdbarch))
|
gdbarch_core_read_x86_xsave_layout_p (m_core_gdbarch))
|
||||||
{
|
{
|
||||||
x86_xsave_layout layout;
|
x86_xsave_layout layout;
|
||||||
if (!gdbarch_core_read_x86_xsave_layout (m_core_gdbarch, layout))
|
bfd *cbfd = current_program_space->core_bfd ();
|
||||||
|
gdb_assert (cbfd != nullptr);
|
||||||
|
if (!gdbarch_core_read_x86_xsave_layout (m_core_gdbarch, *cbfd, layout))
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
return layout;
|
return layout;
|
||||||
|
|||||||
@@ -4090,13 +4090,13 @@ gdbarch_core_read_x86_xsave_layout_p (struct gdbarch *gdbarch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, x86_xsave_layout &xsave_layout)
|
gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, struct bfd &cbfd, x86_xsave_layout &xsave_layout)
|
||||||
{
|
{
|
||||||
gdb_assert (gdbarch != NULL);
|
gdb_assert (gdbarch != NULL);
|
||||||
gdb_assert (gdbarch->core_read_x86_xsave_layout != NULL);
|
gdb_assert (gdbarch->core_read_x86_xsave_layout != NULL);
|
||||||
if (gdbarch_debug >= 2)
|
if (gdbarch_debug >= 2)
|
||||||
gdb_printf (gdb_stdlog, "gdbarch_core_read_x86_xsave_layout called\n");
|
gdb_printf (gdb_stdlog, "gdbarch_core_read_x86_xsave_layout called\n");
|
||||||
return gdbarch->core_read_x86_xsave_layout (gdbarch, xsave_layout);
|
return gdbarch->core_read_x86_xsave_layout (gdbarch, cbfd, xsave_layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -1069,13 +1069,13 @@ typedef LONGEST (gdbarch_core_xfer_siginfo_ftype) (struct gdbarch *gdbarch, stru
|
|||||||
extern LONGEST gdbarch_core_xfer_siginfo (struct gdbarch *gdbarch, struct bfd &cbfd, gdb_byte *readbuf, ULONGEST offset, ULONGEST len);
|
extern LONGEST gdbarch_core_xfer_siginfo (struct gdbarch *gdbarch, struct bfd &cbfd, gdb_byte *readbuf, ULONGEST offset, ULONGEST len);
|
||||||
extern void set_gdbarch_core_xfer_siginfo (struct gdbarch *gdbarch, gdbarch_core_xfer_siginfo_ftype *core_xfer_siginfo);
|
extern void set_gdbarch_core_xfer_siginfo (struct gdbarch *gdbarch, gdbarch_core_xfer_siginfo_ftype *core_xfer_siginfo);
|
||||||
|
|
||||||
/* Read x86 XSAVE layout information from core file into XSAVE_LAYOUT.
|
/* Read x86 XSAVE layout information from core file CBFD into XSAVE_LAYOUT.
|
||||||
Returns true if the layout was read successfully. */
|
Returns true if the layout was read successfully. */
|
||||||
|
|
||||||
extern bool gdbarch_core_read_x86_xsave_layout_p (struct gdbarch *gdbarch);
|
extern bool gdbarch_core_read_x86_xsave_layout_p (struct gdbarch *gdbarch);
|
||||||
|
|
||||||
typedef bool (gdbarch_core_read_x86_xsave_layout_ftype) (struct gdbarch *gdbarch, x86_xsave_layout &xsave_layout);
|
typedef bool (gdbarch_core_read_x86_xsave_layout_ftype) (struct gdbarch *gdbarch, struct bfd &cbfd, x86_xsave_layout &xsave_layout);
|
||||||
extern bool gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, x86_xsave_layout &xsave_layout);
|
extern bool gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, struct bfd &cbfd, x86_xsave_layout &xsave_layout);
|
||||||
extern void set_gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, gdbarch_core_read_x86_xsave_layout_ftype *core_read_x86_xsave_layout);
|
extern void set_gdbarch_core_read_x86_xsave_layout (struct gdbarch *gdbarch, gdbarch_core_read_x86_xsave_layout_ftype *core_read_x86_xsave_layout);
|
||||||
|
|
||||||
/* BFD target to use when generating a core file. */
|
/* BFD target to use when generating a core file. */
|
||||||
|
|||||||
@@ -1803,12 +1803,12 @@ of bytes read (zero indicates EOF, a negative value indicates failure).
|
|||||||
|
|
||||||
Method(
|
Method(
|
||||||
comment="""
|
comment="""
|
||||||
Read x86 XSAVE layout information from core file into XSAVE_LAYOUT.
|
Read x86 XSAVE layout information from core file CBFD into XSAVE_LAYOUT.
|
||||||
Returns true if the layout was read successfully.
|
Returns true if the layout was read successfully.
|
||||||
""",
|
""",
|
||||||
type="bool",
|
type="bool",
|
||||||
name="core_read_x86_xsave_layout",
|
name="core_read_x86_xsave_layout",
|
||||||
params=[("x86_xsave_layout &", "xsave_layout")],
|
params=[("struct bfd &", "cbfd"), ("x86_xsave_layout &", "xsave_layout")],
|
||||||
predicate=True,
|
predicate=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -274,11 +274,10 @@ i386_fbsd_core_read_xsave_info (bfd *abfd, x86_xsave_layout &layout)
|
|||||||
/* See i386-fbsd-tdep.h. */
|
/* See i386-fbsd-tdep.h. */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
i386_fbsd_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
i386_fbsd_core_read_x86_xsave_layout (struct gdbarch *gdbarch, bfd &cbfd,
|
||||||
x86_xsave_layout &layout)
|
x86_xsave_layout &layout)
|
||||||
{
|
{
|
||||||
return i386_fbsd_core_read_xsave_info (current_program_space->core_bfd (),
|
return i386_fbsd_core_read_xsave_info (&cbfd, layout) != 0;
|
||||||
layout) != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Implement the core_read_description gdbarch method. */
|
/* Implement the core_read_description gdbarch method. */
|
||||||
|
|||||||
@@ -32,8 +32,9 @@
|
|||||||
uint64_t i386_fbsd_core_read_xsave_info (bfd *abfd, x86_xsave_layout &layout);
|
uint64_t i386_fbsd_core_read_xsave_info (bfd *abfd, x86_xsave_layout &layout);
|
||||||
|
|
||||||
/* Implement the core_read_x86_xsave_layout gdbarch method. */
|
/* Implement the core_read_x86_xsave_layout gdbarch method. */
|
||||||
bool i386_fbsd_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
extern bool i386_fbsd_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
||||||
x86_xsave_layout &layout);
|
bfd &cbfd,
|
||||||
|
x86_xsave_layout &layout);
|
||||||
|
|
||||||
/* The format of the XSAVE extended area is determined by hardware.
|
/* The format of the XSAVE extended area is determined by hardware.
|
||||||
Cores store the XSAVE extended area in a NT_X86_XSTATE note that
|
Cores store the XSAVE extended area in a NT_X86_XSTATE note that
|
||||||
|
|||||||
@@ -1105,11 +1105,10 @@ i386_linux_core_read_xsave_info (bfd *abfd, x86_xsave_layout &layout)
|
|||||||
/* See i386-linux-tdep.h. */
|
/* See i386-linux-tdep.h. */
|
||||||
|
|
||||||
bool
|
bool
|
||||||
i386_linux_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
i386_linux_core_read_x86_xsave_layout (struct gdbarch *gdbarch, bfd &cbfd,
|
||||||
x86_xsave_layout &layout)
|
x86_xsave_layout &layout)
|
||||||
{
|
{
|
||||||
return i386_linux_core_read_xsave_info (current_program_space->core_bfd (),
|
return i386_linux_core_read_xsave_info (&cbfd, layout) != 0;
|
||||||
layout) != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* See arch/x86-linux-tdesc.h. */
|
/* See arch/x86-linux-tdesc.h. */
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ extern uint64_t i386_linux_core_read_xsave_info (bfd *abfd,
|
|||||||
|
|
||||||
/* Implement the core_read_x86_xsave_layout gdbarch method. */
|
/* Implement the core_read_x86_xsave_layout gdbarch method. */
|
||||||
extern bool i386_linux_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
extern bool i386_linux_core_read_x86_xsave_layout (struct gdbarch *gdbarch,
|
||||||
|
bfd &cbfd,
|
||||||
x86_xsave_layout &layout);
|
x86_xsave_layout &layout);
|
||||||
|
|
||||||
extern int i386_linux_gregset_reg_offset[];
|
extern int i386_linux_gregset_reg_offset[];
|
||||||
|
|||||||
Reference in New Issue
Block a user