[arm] Cleanup: use hex for offsets
[binutils-gdb.git] / gdb / hppa-tdep.h
index f961258899ae2435a72542c1d132e88d2ae99ff2..f1e24a272c4dbf47475e56a702d2ee318b1208bf 100644 (file)
@@ -1,7 +1,6 @@
 /* Target-dependent code for the HP PA-RISC architecture.
 
-   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-   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 */
@@ -76,26 +84,25 @@ enum hppa_regnum
 #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
@@ -103,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;
 };
 
 /*
@@ -184,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);
@@ -228,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);
@@ -236,14 +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 */