Commit | Line | Data |
---|---|---|
4aa995e1 PA |
1 | /* Target-dependent code for GNU/Linux, architecture independent. |
2 | ||
b811d2c2 | 3 | Copyright (C) 2009-2020 Free Software Foundation, Inc. |
4aa995e1 PA |
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 | ||
6432734d | 23 | #include "bfd.h" |
187b041e | 24 | #include "displaced-stepping.h" |
6432734d | 25 | |
187b041e | 26 | struct inferior; |
6432734d UW |
27 | struct regcache; |
28 | ||
43564574 WT |
29 | /* Enum used to define the extra fields of the siginfo type used by an |
30 | architecture. */ | |
31 | enum linux_siginfo_extra_field_values | |
32 | { | |
33 | /* Add bound fields into the segmentation fault field. */ | |
34 | LINUX_SIGINFO_FIELD_ADDR_BND = 1 | |
35 | }; | |
36 | ||
37 | /* Defines a type for the values defined in linux_siginfo_extra_field_values. */ | |
38 | DEF_ENUM_FLAGS_TYPE (enum linux_siginfo_extra_field_values, | |
39 | linux_siginfo_extra_fields); | |
40 | ||
190b495d WT |
41 | /* This function is suitable for architectures that |
42 | extend/override the standard siginfo in a specific way. */ | |
43 | struct type *linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch, | |
44 | linux_siginfo_extra_fields); | |
45 | ||
6432734d UW |
46 | typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *, |
47 | ptid_t, | |
48 | bfd *, char *, int *, | |
2ea28649 | 49 | enum gdb_signal); |
6432734d | 50 | |
eb14d406 SDJ |
51 | extern enum gdb_signal linux_gdb_signal_from_target (struct gdbarch *gdbarch, |
52 | int signal); | |
53 | ||
54 | extern int linux_gdb_signal_to_target (struct gdbarch *gdbarch, | |
55 | enum gdb_signal signal); | |
56 | ||
906d60cf PA |
57 | /* Default GNU/Linux implementation of `displaced_step_location', as |
58 | defined in gdbarch.h. Determines the entry point from AT_ENTRY in | |
59 | the target auxiliary vector. */ | |
60 | extern CORE_ADDR linux_displaced_step_location (struct gdbarch *gdbarch); | |
61 | ||
187b041e SM |
62 | |
63 | /* Implementation of gdbarch_displaced_step_prepare. */ | |
64 | ||
65 | extern displaced_step_prepare_status linux_displaced_step_prepare | |
66 | (gdbarch *arch, thread_info *thread, CORE_ADDR &displaced_pc); | |
67 | ||
68 | /* Implementation of gdbarch_displaced_step_finish. */ | |
69 | ||
70 | extern displaced_step_finish_status linux_displaced_step_finish | |
71 | (gdbarch *arch, thread_info *thread, gdb_signal sig); | |
72 | ||
73 | /* Implementation of gdbarch_displaced_step_copy_insn_closure_by_addr. */ | |
74 | ||
75 | extern const displaced_step_copy_insn_closure * | |
76 | linux_displaced_step_copy_insn_closure_by_addr | |
77 | (inferior *inf, CORE_ADDR addr); | |
78 | ||
79 | /* Implementation of gdbarch_displaced_step_restore_all_in_ptid. */ | |
80 | ||
81 | extern void linux_displaced_step_restore_all_in_ptid (inferior *parent_inf, | |
82 | ptid_t ptid); | |
83 | ||
84 | extern void linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch, | |
480af54c | 85 | int num_disp_step_buffers); |
a5ee0f0c | 86 | |
c01cbb3d YQ |
87 | extern int linux_is_uclinux (void); |
88 | ||
0f83012e AH |
89 | /* Fetch the AT_HWCAP entry from the auxv vector for the given TARGET. On |
90 | error, 0 is returned. */ | |
91 | extern CORE_ADDR linux_get_hwcap (struct target_ops *target); | |
92 | ||
93 | /* Fetch the AT_HWCAP2 entry from the auxv vector for the given TARGET. On | |
94 | error, 0 is returned. */ | |
95 | extern CORE_ADDR linux_get_hwcap2 (struct target_ops *target); | |
96 | ||
4aa995e1 | 97 | #endif /* linux-tdep.h */ |