35 #include "elf/common.h" 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 };
156 for (attempt = 0; attempt < ARRAY_SIZE (pcoffs); attempt++)
161 offs = sfoffs[attempt];
174 sp = pc - pcoffs[attempt];
188 return sp + sfoffs[attempt] + 128 + 24;
234 for (i = 1; i < 32; i++)
246 for (i = 4; i < 32; i++)
274 void **this_prologue_cache,
282 static struct value *
284 void **this_prologue_cache,
302 void **this_prologue_cache)
334 struct value *
function)
362 if (faddr_sect != NULL)
379 while (addr < endaddr)
390 if (tag == DT_PLTGOT)
400 return global_pointer;
CORE_ADDR(* find_global_pointer)(struct gdbarch *, struct value *)
static struct value * hppa_linux_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
static struct insn_pattern hppa_sigtramp[]
CORE_ADDR get_frame_pc(struct frame_info *frame)
static const struct regset hppa_linux_fpregset
void set_gdbarch_fetch_tls_load_module_address(struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype fetch_tls_load_module_address)
static const struct regcache_map_entry hppa_linux_fpregmap[]
static int hppa_linux_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
static const struct frame_unwind hppa_linux_sigtramp_frame_unwind
struct bfd_section * the_bfd_section
void() iterate_over_regset_sections_cb(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
CORE_ADDR hppa_skip_trampoline_code(struct frame_info *frame, CORE_ADDR pc)
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
int(* in_solib_call_trampoline)(struct gdbarch *gdbarch, CORE_ADDR pc)
CORE_ADDR glibc_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
static void hppa_linux_target_write_pc(struct regcache *regcache, CORE_ADDR v)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
ULONGEST align_down(ULONGEST v, int n)
#define obj_section_endaddr(s)
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
struct link_map_offsets * svr4_ilp32_fetch_link_map_offsets(void)
#define ALL_OBJFILE_OSECTIONS(objfile, osect)
void set_gdbarch_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
static CORE_ADDR hppa_linux_sigtramp_find_sigcontext(struct gdbarch *gdbarch, CORE_ADDR pc)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
struct value * hppa_frame_prev_register_helper(struct frame_info *this_frame, struct trad_frame_saved_reg saved_regs[], int regnum)
#define FRAME_OBSTACK_ZALLOC(TYPE)
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
int hppa_in_solib_call_trampoline(struct gdbarch *gdbarch, CORE_ADDR pc)
static int hppa_dwarf_reg_to_regnum(struct gdbarch *gdbarch, int reg)
static void hppa_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static CORE_ADDR hppa_linux_find_global_pointer(struct gdbarch *gdbarch, struct value *function)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
#define HPPA_MAX_INSN_PATTERN_LEN
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
struct obj_section * find_pc_section(CORE_ADDR pc)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
static int insns_match_pattern(struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
void _initialize_hppa_linux_tdep(void)
struct trad_frame_saved_reg * saved_regs
static void hppa_linux_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static int in_plt_section(CORE_ADDR pc)
#define obj_section_addr(s)
static LONGEST extract_signed_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
static struct hppa_linux_sigtramp_unwind_cache * hppa_linux_sigtramp_frame_unwind_cache(struct frame_info *this_frame, void **this_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
CORE_ADDR value_as_address(struct value *val)
void set_gdbarch_long_double_format(struct gdbarch *gdbarch, const struct floatformat **long_double_format)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype iterate_over_regset_sections)
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype skip_solib_resolver)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
static void hppa_linux_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
static const struct regcache_map_entry hppa_linux_gregmap[]
static const struct regset hppa_linux_regset
struct obj_section * sections_end