struct trad_frame_saved_reg;
-enum { HPPA_INSTRUCTION_SIZE = 4 };
-
/* Register numbers of various important registers.
Note that some of these values are "real" register numbers,
and correspond to the general registers of the machine,
HPPA_RP_REGNUM = 2, /* return pointer */
HPPA_FP_REGNUM = 3, /* The ABI's frame pointer, when used */
HPPA_SP_REGNUM = 30, /* Stack pointer. */
+ HPPA_R31_REGNUM = 31,
HPPA_SAR_REGNUM = 32, /* Shift Amount Register */
HPPA_IPSW_REGNUM = 41, /* Interrupt Processor Status Word */
HPPA_PCOQ_HEAD_REGNUM = 33, /* instruction offset queue head */
/* Is this an ELF target? This can be 64-bit HP-UX, or a 32/64-bit GNU/Linux
system. */
int is_elf;
+
+ /* Given a function address, try to find the global pointer for the
+ corresponding shared object. */
+ CORE_ADDR (*find_global_pointer) (struct value *);
+
+ /* 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. */
+ int (*in_solib_call_trampoline) (CORE_ADDR pc, char *name);
};
/*
int hppa_extract_14 (unsigned);
int hppa_low_sign_extend (unsigned int, unsigned int);
int hppa_sign_extend (unsigned int, unsigned int);
+CORE_ADDR hppa_symbol_address(const char *sym);
void
hppa_frame_prev_register_helper (struct frame_info *next_frame,
- struct trad_frame_saved_reg saved_regs[],
+ struct trad_frame_saved_reg *saved_regs,
int regnum, int *optimizedp,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, void *valuep);