X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fhppa-tdep.h;h=f1e24a272c4dbf47475e56a702d2ee318b1208bf;hb=e008305278cb42a576107cd8aa9f0b182eea1af2;hp=e2d87525cb071c3387f9087faedf6b939517a10d;hpb=4c38e0a4fcb69f8586d8db0b9cdb8dbab5980811;p=binutils-gdb.git diff --git a/gdb/hppa-tdep.h b/gdb/hppa-tdep.h index e2d87525cb0..f1e24a272c4 100644 --- a/gdb/hppa-tdep.h +++ b/gdb/hppa-tdep.h @@ -1,7 +1,6 @@ /* Target-dependent code for the HP PA-RISC architecture. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. + Copyright (C) 2003-2022 Free Software Foundation, Inc. This file is part of GDB. @@ -21,6 +20,8 @@ #ifndef HPPA_TDEP_H #define HPPA_TDEP_H +#include "gdbarch.h" + struct trad_frame_saved_reg; struct objfile; struct so_list; @@ -51,6 +52,13 @@ enum hppa_regnum HPPA_ISR_REGNUM = 39, /* Interrupt Space Register */ HPPA_IOR_REGNUM = 40, /* Interrupt Offset Register */ HPPA_SR4_REGNUM = 43, /* space register 4 */ + HPPA_SR0_REGNUM = 44, /* space register 0 */ + HPPA_SR1_REGNUM = 45, /* space register 1 */ + HPPA_SR2_REGNUM = 46, /* space register 2 */ + HPPA_SR3_REGNUM = 47, /* space register 3 */ + HPPA_SR5_REGNUM = 48, /* space register 5 */ + HPPA_SR6_REGNUM = 49, /* space register 6 */ + HPPA_SR7_REGNUM = 50, /* space register 7 */ HPPA_RCR_REGNUM = 51, /* Recover Counter (also known as cr0) */ HPPA_PID0_REGNUM = 52, /* Protection ID */ HPPA_PID1_REGNUM = 53, /* Protection ID */ @@ -59,42 +67,42 @@ enum hppa_regnum HPPA_CCR_REGNUM = 54, /* Coprocessor Configuration Register */ HPPA_TR0_REGNUM = 57, /* Temporary Registers (cr24 -> cr31) */ HPPA_CR26_REGNUM = 59, - HPPA_CR27_REGNUM = 60, /* Base register for thread-local storage, cr27 */ + HPPA_CR27_REGNUM = 60, /* Base register for thread-local + storage, cr27 */ HPPA_FP0_REGNUM = 64, /* First floating-point. */ HPPA_FP4_REGNUM = 72, HPPA64_FP4_REGNUM = 68, HPPA_FP31R_REGNUM = 127, /* Last floating-point. */ - HPPA_ARG0_REGNUM = 26, /* The first argument of a callee. */ - HPPA_ARG1_REGNUM = 25, /* The second argument of a callee. */ - HPPA_ARG2_REGNUM = 24, /* The third argument of a callee. */ - HPPA_ARG3_REGNUM = 23 /* The fourth argument of a callee. */ + HPPA_ARG0_REGNUM = 26, /* The first argument of a callee. */ + HPPA_ARG1_REGNUM = 25, /* The second argument of a callee. */ + HPPA_ARG2_REGNUM = 24, /* The third argument of a callee. */ + HPPA_ARG3_REGNUM = 23 /* The fourth argument of a callee. */ }; /* Instruction size. */ #define HPPA_INSN_SIZE 4 /* Target-dependent structure in gdbarch. */ -struct gdbarch_tdep +struct hppa_gdbarch_tdep : gdbarch_tdep { /* The number of bytes in an address. For now, this field is designed to allow us to differentiate hppa32 from hppa64 targets. */ - int bytes_per_address; + int bytes_per_address = 0; /* Is this an ELF target? This can be 64-bit HP-UX, or a 32/64-bit GNU/Linux system. */ - int is_elf; + int is_elf = 0; /* Given a function address, try to find the global pointer for the corresponding shared object. */ - CORE_ADDR (*find_global_pointer) (struct gdbarch *, struct value *); + CORE_ADDR (*find_global_pointer) (struct gdbarch *, struct value *) = nullptr; /* For shared libraries, each call goes through a small piece of - trampoline code in the ".plt", or equivalent, section. - IN_SOLIB_CALL_TRAMPOLINE evaluates to nonzero if we are currently - stopped in one of these. */ + trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE + evaluates to nonzero if we are currently stopped in one of these. */ int (*in_solib_call_trampoline) (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name); + CORE_ADDR pc) = nullptr; /* For targets that support multiple spaces, we may have additional stubs in the return path. These stubs are internal to the ABI, and users are @@ -102,14 +110,14 @@ struct gdbarch_tdep adjust the pc to the real caller. This improves the behavior of commands that traverse frames such as "up" and "finish". */ void (*unwind_adjust_stub) (struct frame_info *this_frame, CORE_ADDR base, - struct trad_frame_saved_reg *saved_regs); + trad_frame_saved_reg *saved_regs) = nullptr; /* These are solib-dependent methods. They are really HPUX only, but we don't have a HPUX-specific tdep vector at the moment. */ - CORE_ADDR (*solib_thread_start_addr) (struct so_list *so); - CORE_ADDR (*solib_get_got_by_pc) (CORE_ADDR addr); - CORE_ADDR (*solib_get_solib_by_pc) (CORE_ADDR addr); - CORE_ADDR (*solib_get_text_base) (struct objfile *objfile); + CORE_ADDR (*solib_thread_start_addr) (struct so_list *so) = nullptr; + CORE_ADDR (*solib_get_got_by_pc) (CORE_ADDR addr) = nullptr; + CORE_ADDR (*solib_get_solib_by_pc) (CORE_ADDR addr) = nullptr; + CORE_ADDR (*solib_get_text_base) (struct objfile *objfile) = nullptr; }; /* @@ -155,8 +163,8 @@ struct unwind_table_entry /* This is *NOT* part of an actual unwind_descriptor in an object file. It is *ONLY* part of the "internalized" descriptors that - we create from those in a file. - */ + we create from those in a file. */ + struct { unsigned int stub_type:4; /* 0..3 */ @@ -183,39 +191,6 @@ enum unwind_stub_types struct unwind_table_entry *find_unwind_entry (CORE_ADDR); -/* We use the objfile->obj_private pointer for two things: - * 1. An unwind table; - * - * 2. A pointer to any associated shared library object. - * - * #defines are used to help refer to these objects. - */ - -/* Info about the unwind table associated with an object file. - * This is hung off of the "objfile->obj_private" pointer, and - * is allocated in the objfile's psymbol obstack. This allows - * us to have unique unwind info for each executable and shared - * library that we are debugging. - */ -struct hppa_unwind_info - { - struct unwind_table_entry *table; /* Pointer to unwind info */ - struct unwind_table_entry *cache; /* Pointer to last entry we found */ - int last; /* Index of last entry */ - }; - -struct hppa_objfile_private - { - struct hppa_unwind_info *unwind_info; /* a pointer */ - struct so_list *so_info; /* a pointer */ - CORE_ADDR dp; - - int dummy_call_sequence_reg; - CORE_ADDR dummy_call_sequence_addr; - }; - -extern const struct objfile_data *hppa_objfile_priv_data; - int hppa_get_field (unsigned word, int from, int to); int hppa_extract_5_load (unsigned int); unsigned hppa_extract_5R_store (unsigned int); @@ -227,7 +202,7 @@ CORE_ADDR hppa_symbol_address(const char *sym); extern struct value * hppa_frame_prev_register_helper (struct frame_info *this_frame, - struct trad_frame_saved_reg *saved_regs, + trad_frame_saved_reg *saved_regs, int regnum); extern CORE_ADDR hppa_read_pc (struct regcache *regcache); @@ -235,15 +210,12 @@ extern void hppa_write_pc (struct regcache *regcache, CORE_ADDR pc); extern CORE_ADDR hppa_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame); -extern struct minimal_symbol * +extern struct bound_minimal_symbol hppa_lookup_stub_minimal_symbol (const char *name, - enum unwind_stub_types stub_type); - -extern struct hppa_objfile_private * -hppa_init_objfile_priv_data (struct objfile *objfile); + enum unwind_stub_types stub_type); extern int hppa_in_solib_call_trampoline (struct gdbarch *gdbarch, - CORE_ADDR pc, char *name); + CORE_ADDR pc); extern CORE_ADDR hppa_skip_trampoline_code (struct frame_info *, CORE_ADDR pc); #endif /* hppa-tdep.h */