GDB (xrefs)
Loading...
Searching...
No Matches
linux-tdep.h
Go to the documentation of this file.
1/* Target-dependent code for GNU/Linux, architecture independent.
2
3 Copyright (C) 2009-2023 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20#ifndef LINUX_TDEP_H
21#define LINUX_TDEP_H
22
23#include "bfd.h"
24#include "displaced-stepping.h"
25
26struct inferior;
27struct regcache;
28
29/* Enum used to define the extra fields of the siginfo type used by an
30 architecture. */
32{
33 /* Add bound fields into the segmentation fault field. */
35};
36
37/* Defines a type for the values defined in linux_siginfo_extra_field_values. */
39 linux_siginfo_extra_fields);
40
41/* This function is suitable for architectures that
42 extend/override the standard siginfo in a specific way. */
44 linux_siginfo_extra_fields);
45
46/* Return true if ADDRESS is within the boundaries of a page mapped with
47 memory tagging protection. */
48bool linux_address_in_memtag_page (CORE_ADDR address);
49
50typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *,
51 ptid_t,
52 bfd *, char *, int *,
53 enum gdb_signal);
54
55extern enum gdb_signal linux_gdb_signal_from_target (struct gdbarch *gdbarch,
56 int signal);
57
59 enum gdb_signal signal);
60
61/* Default GNU/Linux implementation of `displaced_step_location', as
62 defined in gdbarch.h. Determines the entry point from AT_ENTRY in
63 the target auxiliary vector. */
64extern CORE_ADDR linux_displaced_step_location (struct gdbarch *gdbarch);
65
66
67/* Implementation of gdbarch_displaced_step_prepare. */
68
70 (gdbarch *arch, thread_info *thread, CORE_ADDR &displaced_pc);
71
72/* Implementation of gdbarch_displaced_step_finish. */
73
76
77/* Implementation of gdbarch_displaced_step_copy_insn_closure_by_addr. */
78
81 (inferior *inf, CORE_ADDR addr);
82
83/* Implementation of gdbarch_displaced_step_restore_all_in_ptid. */
84
86 ptid_t ptid);
87
88extern void linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
89 int num_disp_step_buffers);
90
91extern int linux_is_uclinux (void);
92
93/* Fetch the AT_HWCAP entry from auxv data AUXV. Use TARGET and GDBARCH to
94 parse auxv entries.
95
96 On error, 0 is returned. */
97extern CORE_ADDR linux_get_hwcap (const gdb::optional<gdb::byte_vector> &auxv,
98 struct target_ops *target, gdbarch *gdbarch);
99
100/* Same as the above, but obtain all the inputs from the current inferior. */
101
102extern CORE_ADDR linux_get_hwcap ();
103
104/* Fetch the AT_HWCAP2 entry from auxv data AUXV. Use TARGET and GDBARCH to
105 parse auxv entries.
106
107 On error, 0 is returned. */
108extern CORE_ADDR linux_get_hwcap2 (const gdb::optional<gdb::byte_vector> &auxv,
109 struct target_ops *target, gdbarch *gdbarch);
110
111/* Same as the above, but obtain all the inputs from the current inferior. */
112
113extern CORE_ADDR linux_get_hwcap2 ();
114
115/* Fetch (and possibly build) an appropriate `struct link_map_offsets'
116 for ILP32 and LP64 Linux systems. */
119
120#endif /* linux-tdep.h */
gdbarch * arch() const
Definition regcache.c:231
ptid_t ptid() const
Definition regcache.h:408
displaced_step_prepare_status
displaced_step_finish_status
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
Definition gnu-nat.c:1790
struct link_map_offsets * linux_lp64_fetch_link_map_offsets()
displaced_step_prepare_status linux_displaced_step_prepare(gdbarch *arch, thread_info *thread, CORE_ADDR &displaced_pc)
struct link_map_offsets * linux_ilp32_fetch_link_map_offsets()
void linux_displaced_step_restore_all_in_ptid(inferior *parent_inf, ptid_t ptid)
int linux_gdb_signal_to_target(struct gdbarch *gdbarch, enum gdb_signal signal)
enum gdb_signal linux_gdb_signal_from_target(struct gdbarch *gdbarch, int signal)
displaced_step_finish_status linux_displaced_step_finish(gdbarch *arch, thread_info *thread, const target_waitstatus &status)
CORE_ADDR linux_displaced_step_location(struct gdbarch *gdbarch)
linux_siginfo_extra_field_values
Definition linux-tdep.h:32
@ LINUX_SIGINFO_FIELD_ADDR_BND
Definition linux-tdep.h:34
CORE_ADDR linux_get_hwcap2()
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, int num_disp_step_buffers)
bool linux_address_in_memtag_page(CORE_ADDR address)
DEF_ENUM_FLAGS_TYPE(enum linux_siginfo_extra_field_values, linux_siginfo_extra_fields)
const displaced_step_copy_insn_closure * linux_displaced_step_copy_insn_closure_by_addr(inferior *inf, CORE_ADDR addr)
int linux_is_uclinux(void)
Definition linux-tdep.c:429
CORE_ADDR linux_get_hwcap()
struct type * linux_get_siginfo_type_with_fields(struct gdbarch *gdbarch, linux_siginfo_extra_fields)
Definition linux-tdep.c:272
Definition gnu-nat.c:153