35 #include "elf/common.h"
46 if (reg >= 72 && reg <= 72 + 28 * 2)
49 warning (
_(
"Unmapped DWARF DBX Register #%d encountered."), reg);
71 { 0x34190000, 0xfffffffd },
73 { 0x3414015a, 0xffffffff },
75 { 0xe4008200, 0xffffffff },
77 { 0x08000240, 0xffffffff },
81 #define HPPA_MAX_INSN_PATTERN_LEN (4)
99 for (i = 0; pattern[i].
mask; i++)
105 if ((insn[i] & pattern[i].
mask) == pattern[i].
data)
141 static int pcoffs[] = { 0, 4*4, 5*4 };
143 static int sfoffs[] = { 4*4, 10*4, 10*4 };
157 for (attempt = 0; attempt < ARRAY_SIZE (pcoffs); attempt++)
160 hppa_sigtramp, dummy))
162 offs = sfoffs[attempt];
175 sp = pc - pcoffs[attempt];
189 return sp + sfoffs[attempt] + 128 + 24;
235 for (i = 1; i < 32; i++)
247 for (i = 4; i < 32; i++)
275 void **this_prologue_cache,
283 static struct value *
285 void **this_prologue_cache,
303 void **this_prologue_cache)
335 struct value *
function)
363 if (faddr_sect != NULL)
380 while (addr < endaddr)
391 if (tag == DT_PLTGOT)
401 return global_pointer;
463 static const struct regset hppa_linux_regset =
469 static const struct regset hppa_linux_fpregset =
485 cb (
".reg2", 64 * 4, &hppa_linux_fpregset, NULL, cb_data);
CORE_ADDR(* find_global_pointer)(struct gdbarch *, struct value *)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
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)
CORE_ADDR get_frame_pc(struct frame_info *frame)
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)
struct bfd_section * the_bfd_section
initialize_file_ftype _initialize_hppa_linux_tdep
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)
void warning(const char *fmt,...)
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)
#define obj_section_addr(s)
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)
void initialize_file_ftype(void)
mach_port_t mach_port_t name mach_port_t mach_port_t name error_t int status
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
void( iterate_over_regset_sections_cb)(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
struct obj_section * find_pc_section(CORE_ADDR pc)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
static int insns_match_pattern(struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct frame_info *this_frame)
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)
struct obj_section * sections_end
static int in_plt_section(CORE_ADDR pc)
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_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype iterate_over_regset_sections)
LONGEST extract_signed_integer(const gdb_byte *, int, enum bfd_endian)
void set_gdbarch_skip_solib_resolver(struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype skip_solib_resolver)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
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[]