23 #include "floatformat.h"
38 #include "elf/common.h"
44 #define M68K_LINUX_JB_ELEMENT_SIZE 4
45 #define M68K_LINUX_JB_PC 7
49 #define IS_SIGTRAMP(insn1, insn2) \
51 (insn1 == 0xdefc0014 && insn2 == 0x70774e40) \
53 || insn1 == 0x70774e40)
55 #define IS_RT_SIGTRAMP(insn1, insn2) \
57 (insn1 == 0x203c0000 && insn2 == 0x00ad4e40) \
59 || (insn1 == 0x70524600 && (insn2 >> 16) == 0x4e40))
71 unsigned long insn0, insn1, insn2;
89 insn0 = ((insn0 << 16) & 0xffffffff) | (insn1 >> 16);
90 insn1 = ((insn1 << 16) & 0xffffffff) | (insn2 >> 16);
301 static struct value *
315 void **this_prologue_cache)
345 #define M68K_LINUX_GREGS_SIZE (20 * 4)
356 #define M68K_LINUX_FPREGS_SIZE (27 * 4)
360 static const struct regset m68k_linux_gregset =
366 static const struct regset m68k_linux_fpregset =
void m68k_svr4_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
static const struct regcache_map_entry m68k_linux_gregmap[]
static int m68k_uclinux_sigcontext_reg_offset[M68K_NUM_REGS]
void trad_frame_set_reg_addr(struct trad_frame_cache *this_trad_cache, int regnum, CORE_ADDR addr)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
int linux_is_uclinux(void)
CORE_ADDR sigcontext_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)
#define IS_RT_SIGTRAMP(insn1, insn2)
#define M68K_LINUX_GREGS_SIZE
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
CORE_ADDR glibc_skip_solib_resolver(struct gdbarch *gdbarch, CORE_ADDR pc)
static void m68k_linux_inferior_created(struct target_ops *objfile, int from_tty)
static struct trad_frame_cache * m68k_linux_sigtramp_frame_cache(struct frame_info *this_frame, void **this_cache)
void trad_frame_set_id(struct trad_frame_cache *this_trad_cache, struct frame_id this_id)
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)
initialize_file_ftype _initialize_m68k_linux_tdep
struct link_map_offsets * svr4_ilp32_fetch_link_map_offsets(void)
static struct value * m68k_linux_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
#define M68K_LINUX_JB_ELEMENT_SIZE
#define IS_SIGTRAMP(insn1, insn2)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
struct observer * observer_attach_inferior_created(observer_inferior_created_ftype *f)
void trad_frame_get_id(struct trad_frame_cache *this_trad_cache, struct frame_id *this_id)
static int m68k_linux_pc_in_sigtramp(struct frame_info *this_frame)
#define M68K_LINUX_FPREGS_SIZE
enum struct_return struct_return
void initialize_file_ftype(void)
CORE_ADDR find_solib_trampoline_target(struct frame_info *frame, CORE_ADDR pc)
int safe_frame_unwind_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
void set_gdbarch_decr_pc_after_break(struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break)
static const struct regcache_map_entry m68k_linux_fpregmap[]
static void m68k_linux_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct m68k_linux_sigtramp_info m68k_linux_get_sigtramp_info(struct frame_info *this_frame)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
static int target_is_uclinux
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
static void m68k_linux_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
struct trad_frame_cache * trad_frame_cache_zalloc(struct frame_info *this_frame)
static int m68k_linux_ucontext_reg_offset[M68K_NUM_REGS]
void( iterate_over_regset_sections_cb)(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
struct frame_info * this_frame
static void m68k_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static int m68k_linux_sigcontext_reg_offset[M68K_NUM_REGS]
void get_frame_register(struct frame_info *frame, int regnum, gdb_byte *buf)
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
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 value * trad_frame_get_register(struct trad_frame_cache *this_trad_cache, struct frame_info *this_frame, int regnum)
enum bfd_endian byte_order
static int m68k_linux_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
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)