35#include "elf/common.h"
42 if (reg >= 0 && reg <= 32)
46 if (reg >= 72 && reg <= 72 + 28 * 2)
70 { 0x34190000, 0xfffffffd },
72 { 0x3414015a, 0xffffffff },
74 { 0xe4008200, 0xffffffff },
76 { 0x08000240, 0xffffffff },
80#define HPPA_MAX_INSN_PATTERN_LEN (4)
98 for (i = 0; pattern[i].
mask; i++)
104 if ((insn[i] & pattern[i].
mask) == pattern[i].
data)
140 static int pcoffs[] = { 0, 4*4, 5*4 };
142 static int sfoffs[] = { 4*4, 10*4, 10*4 };
148 sp = align_down (pc, 64);
156 for (attempt = 0; attempt < ARRAY_SIZE (pcoffs); attempt++)
161 offs = sfoffs[attempt];
174 sp = pc - pcoffs[attempt];
186 return sp + sfoffs[attempt] + 128 + 24;
232 for (i = 1; i < 32; i++)
244 for (i = 4; i < 32; i++)
272 void **this_prologue_cache,
282 void **this_prologue_cache,
288 info->saved_regs,
regnum);
300 void **this_prologue_cache)
312 "hppa linux sigtramp",
333 struct value *function)
361 if (faddr_sect != NULL)
365 if (strcmp (osect->the_bfd_section->name,
".dynamic") == 0)
369 addr = osect->addr ();
383 if (tag == DT_PLTGOT)
385 CORE_ADDR global_pointer;
395 return global_pointer;
static LONGEST extract_signed_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
ULONGEST get_frame_register_unsigned(frame_info_ptr frame, int regnum)
CORE_ADDR get_frame_pc(frame_info_ptr frame)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
struct gdbarch * get_frame_arch(frame_info_ptr this_frame)
#define FRAME_OBSTACK_ZALLOC(TYPE)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc)
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code)
void set_gdbarch_long_double_format(struct gdbarch *gdbarch, const struct floatformat **long_double_format)
void set_gdbarch_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum)
void set_gdbarch_fetch_tls_load_module_address(struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections)
void iterate_over_regset_sections_cb(const char *sect_name, int supply_size, int collect_size, const struct regset *regset, const char *human_name, void *cb_data)
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
CORE_ADDR glibc_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
static int hppa_linux_sigtramp_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
static void hppa_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static const struct regcache_map_entry hppa_linux_gregmap[]
static CORE_ADDR hppa_linux_sigtramp_find_sigcontext(struct gdbarch *gdbarch, CORE_ADDR pc)
static void hppa_linux_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
#define HPPA_MAX_INSN_PATTERN_LEN
static void hppa_linux_target_write_pc(struct regcache *regcache, CORE_ADDR v)
static const struct regcache_map_entry hppa_linux_fpregmap[]
static const struct regset hppa_linux_regset
static int hppa_dwarf_reg_to_regnum(struct gdbarch *gdbarch, int reg)
static const struct regset hppa_linux_fpregset
static struct insn_pattern hppa_sigtramp[]
static int insns_match_pattern(struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
void _initialize_hppa_linux_tdep()
static void hppa_linux_sigtramp_frame_this_id(frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
static struct hppa_linux_sigtramp_unwind_cache * hppa_linux_sigtramp_frame_unwind_cache(frame_info_ptr this_frame, void **this_cache)
static CORE_ADDR hppa_linux_find_global_pointer(struct gdbarch *gdbarch, struct value *function)
static const struct frame_unwind hppa_linux_sigtramp_frame_unwind
static struct value * hppa_linux_sigtramp_frame_prev_register(frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
CORE_ADDR hppa_skip_trampoline_code(frame_info_ptr frame, CORE_ADDR pc)
int hppa_in_solib_call_trampoline(struct gdbarch *gdbarch, CORE_ADDR pc)
struct value * hppa_frame_prev_register_helper(frame_info_ptr this_frame, trad_frame_saved_reg saved_regs[], int regnum)
link_map_offsets * linux_ilp32_fetch_link_map_offsets()
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch, int num_disp_step_buffers)
struct obj_section * find_pc_section(CORE_ADDR pc)
static int in_plt_section(CORE_ADDR pc)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
CORE_ADDR(* find_global_pointer)(struct gdbarch *, struct value *)
int(* in_solib_call_trampoline)(struct gdbarch *gdbarch, CORE_ADDR pc)
trad_frame_saved_reg * saved_regs
CORE_ADDR endaddr() const
iterator_range< section_iterator > sections()
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
CORE_ADDR value_as_address(struct value *val)