1 /* Target-dependent code for GNU/Linux, architecture independent. 2 3 Copyright (C) 2009-2020 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 25 struct regcache; 26 27 /* Enum used to define the extra fields of the siginfo type used by an 28 architecture. */ 29 enum linux_siginfo_extra_field_values 30 { 31 /* Add bound fields into the segmentation fault field. */ 32 LINUX_SIGINFO_FIELD_ADDR_BND = 1 33 }; 34 35 /* Defines a type for the values defined in linux_siginfo_extra_field_values. */ 36 DEF_ENUM_FLAGS_TYPE (enum linux_siginfo_extra_field_values, 37 linux_siginfo_extra_fields); 38 39 /* This function is suitable for architectures that 40 extend/override the standard siginfo in a specific way. */ 41 struct type *linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch, 42 linux_siginfo_extra_fields); 43 44 typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *, 45 ptid_t, 46 bfd *, char *, int *, 47 enum gdb_signal); 48 49 extern enum gdb_signal linux_gdb_signal_from_target (struct gdbarch *gdbarch, 50 int signal); 51 52 extern int linux_gdb_signal_to_target (struct gdbarch *gdbarch, 53 enum gdb_signal signal); 54 55 /* Default GNU/Linux implementation of `displaced_step_location', as 56 defined in gdbarch.h. Determines the entry point from AT_ENTRY in 57 the target auxiliary vector. */ 58 extern CORE_ADDR linux_displaced_step_location (struct gdbarch *gdbarch); 59 60 extern void linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch); 61 62 extern int linux_is_uclinux (void); 63 64 /* Fetch the AT_HWCAP entry from the auxv vector for the given TARGET. On 65 error, 0 is returned. */ 66 extern CORE_ADDR linux_get_hwcap (struct target_ops *target); 67 68 /* Fetch the AT_HWCAP2 entry from the auxv vector for the given TARGET. On 69 error, 0 is returned. */ 70 extern CORE_ADDR linux_get_hwcap2 (struct target_ops *target); 71 72 #endif /* linux-tdep.h */ 73