mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
Continuing the removal of 'current_program_space->core_bfd ()' from GDB, this commit updates two gdbarch methods: gdbarch_core_xfer_shared_libraries gdbarch_core_xfer_shared_libraries_aix 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::xfer_partial. 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>
94 lines
3.2 KiB
C++
94 lines
3.2 KiB
C++
/* Copyright (C) 2008-2025 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef GDB_WINDOWS_TDEP_H
|
|
#define GDB_WINDOWS_TDEP_H
|
|
|
|
#include "frame-unwind.h"
|
|
|
|
struct gdbarch;
|
|
|
|
extern struct cmd_list_element *info_w32_cmdlist;
|
|
|
|
extern void init_w32_command_list (void);
|
|
|
|
extern void windows_xfer_shared_library (const char* so_name,
|
|
CORE_ADDR load_addr,
|
|
CORE_ADDR *text_offset_cached,
|
|
struct gdbarch *gdbarch,
|
|
std::string &xml);
|
|
|
|
extern ULONGEST windows_core_xfer_shared_libraries (struct gdbarch *gdbarch,
|
|
struct bfd &cbfd,
|
|
gdb_byte *readbuf,
|
|
ULONGEST offset,
|
|
ULONGEST len);
|
|
|
|
extern std::string windows_core_pid_to_str (struct gdbarch *gdbarch,
|
|
ptid_t ptid);
|
|
|
|
/* To be called from the various GDB_OSABI_WINDOWS handlers for the
|
|
various Windows architectures and machine types. */
|
|
|
|
extern void windows_init_abi (struct gdbarch_info info,
|
|
struct gdbarch *gdbarch);
|
|
|
|
/* To be called from the various GDB_OSABI_CYGWIN handlers for the
|
|
various Windows architectures and machine types. */
|
|
|
|
extern void cygwin_init_abi (struct gdbarch_info info,
|
|
struct gdbarch *gdbarch);
|
|
|
|
/* Return true if the Portable Executable behind ABFD uses the Cygwin dll
|
|
(cygwin1.dll). */
|
|
|
|
extern bool is_linked_with_cygwin_dll (bfd *abfd);
|
|
|
|
/* Cygwin sigwapper unwinder. Unwinds signal frames over
|
|
sigbe/sigdelayed. */
|
|
|
|
class cygwin_sigwrapper_frame_unwind : public frame_unwind
|
|
{
|
|
public:
|
|
explicit cygwin_sigwrapper_frame_unwind
|
|
(gdb::array_view<const gdb::array_view<const gdb_byte>> patterns_list);
|
|
|
|
/* Architecture-specific list of instruction patterns to match.
|
|
It's a list of patterns instead of single pattern because some
|
|
architectures want to match more than one function
|
|
(sigbe/sigdelayed & friends). Each potential instruction
|
|
sequence is assumed to be followed by 4 bytes for tls::stackptr.
|
|
If any pattern in the list matches, then the frame is assumed to
|
|
be a sigwrapper frame. */
|
|
gdb::array_view<const gdb::array_view<const gdb_byte>> patterns_list;
|
|
|
|
/* Calculate the frame ID of a cygwin wrapper. */
|
|
void this_id (const frame_info_ptr &this_frame, void **this_prologue_cache,
|
|
struct frame_id *id) const override;
|
|
|
|
/* Sniff the frame to tell if this unwinder should be used. */
|
|
int sniff (const frame_info_ptr &this_frame,
|
|
void **this_prologue_cache) const override;
|
|
|
|
/* Calculate the value of a given register in the previous frame. */
|
|
struct value *prev_register (const frame_info_ptr &this_frame,
|
|
void **this_cache,
|
|
int regnum) const override;
|
|
};
|
|
|
|
#endif /* GDB_WINDOWS_TDEP_H */
|