GDB (xrefs)

Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/m68k-linux-tdep.c File Reference
`#include "defs.h"`
`#include "gdbcore.h"`
`#include "frame.h"`
`#include "target.h"`
`#include "gdbtypes.h"`
`#include "osabi.h"`
`#include "regcache.h"`
`#include "objfiles.h"`
`#include "symtab.h"`
`#include "m68k-tdep.h"`
`#include "trad-frame.h"`
`#include "frame-unwind.h"`
`#include "glibc-tdep.h"`
`#include "solib-svr4.h"`
`#include "auxv.h"`
`#include "observer.h"`
`#include "elf/common.h"`
`#include "linux-tdep.h"`
`#include "regset.h"`

Go to the source code of this file.

## Classes
struct | m68k_linux_sigtramp_info

## Macros
#define | M68K_LINUX_JB_ELEMENT_SIZE 4
#define | M68K_LINUX_JB_PC 7
#define | IS_SIGTRAMP(insn1, insn2)
#define | IS_RT_SIGTRAMP(insn1, insn2)
#define | M68K_LINUX_GREGS_SIZE (20 * 4)
#define | M68K_LINUX_FPREGS_SIZE (27 * 4)

## Functions
static int | m68k_linux_pc_in_sigtramp (struct frame_info *this_frame)
static void | m68k_linux_inferior_created (struct target_ops *objfile, int from_tty)
static struct m68k_linux_sigtramp_info | m68k_linux_get_sigtramp_info (struct frame_info *this_frame)
static struct trad_frame_cache * | m68k_linux_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
static void | m68k_linux_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct value * | m68k_linux_sigtramp_frame_prev_register (struct frame_info *this_frame, void **this_cache, int regnum)
static int | m68k_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static void | m68k_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
static void | m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
void | _initialize_m68k_linux_tdep (void)

## Variables
static int | m68k_linux_sigcontext_reg_offset [M68K_NUM_REGS]
static int | m68k_uclinux_sigcontext_reg_offset [M68K_NUM_REGS]
static int | m68k_linux_ucontext_reg_offset [M68K_NUM_REGS]
static int | target_is_uclinux
static const struct frame_unwind | m68k_linux_sigtramp_frame_unwind
static const struct regcache_map_entry | m68k_linux_gregmap []
static const struct regcache_map_entry | m68k_linux_fpregmap []
static const struct regset | m68k_linux_gregset
static const struct regset | m68k_linux_fpregset

## Macro Definition Documentation

## ◆ IS_RT_SIGTRAMP

#define IS_RT_SIGTRAMP | ( |  | insn1,
|  |  | insn2
| ) |  |

Value:
(/* movel #173,d0; trap #0 */ \
(insn1 == 0x203c0000 && insn2 == 0x00ad4e40) \
/* moveq #82,d0; notb d0; trap #0 */ \
|| (insn1 == 0x70524600 && (insn2 >> 16) == 0x4e40))

Definition at line 53 of file m68k-linux-tdep.c.

Referenced by m68k_linux_pc_in_sigtramp().

## ◆ IS_SIGTRAMP

#define IS_SIGTRAMP | ( |  | insn1,
|  |  | insn2
| ) |  |

Value:
(/* addaw #20,sp; moveq #119,d0; trap #0 */ \
(insn1 == 0xdefc0014 && insn2 == 0x70774e40) \
/* moveq #119,d0; trap #0 */ \
|| insn1 == 0x70774e40)

Definition at line 47 of file m68k-linux-tdep.c.

Referenced by m68k_linux_pc_in_sigtramp().

## ◆ M68K_LINUX_FPREGS_SIZE

#define M68K_LINUX_FPREGS_SIZE (27 * 4)

Definition at line 353 of file m68k-linux-tdep.c.

Referenced by m68k_linux_iterate_over_regset_sections().

## ◆ M68K_LINUX_GREGS_SIZE

#define M68K_LINUX_GREGS_SIZE (20 * 4)

Definition at line 342 of file m68k-linux-tdep.c.

Referenced by m68k_linux_iterate_over_regset_sections().

## ◆ M68K_LINUX_JB_ELEMENT_SIZE

#define M68K_LINUX_JB_ELEMENT_SIZE 4

Definition at line 42 of file m68k-linux-tdep.c.

Referenced by m68k_linux_init_abi().

## ◆ M68K_LINUX_JB_PC

#define M68K_LINUX_JB_PC 7

Definition at line 43 of file m68k-linux-tdep.c.

Referenced by m68k_linux_init_abi().

## Function Documentation

## ◆ _initialize_m68k_linux_tdep()

void _initialize_m68k_linux_tdep | ( | void |  | ) |

Definition at line 425 of file m68k-linux-tdep.c.

References GDB_OSABI_LINUX, gdbarch_register_osabi(), m68k_linux_inferior_created(), m68k_linux_init_abi(), and observer_attach_inferior_created().

## ◆ m68k_linux_get_sigtramp_info()

static struct m68k_linux_sigtramp_info m68k_linux_get_sigtramp_info | ( | struct frame_info * | this_frame | ) |
| static

Definition at line 222 of file m68k-linux-tdep.c.

References gdbarch::byte_order, gdbarch_byte_order(), get_frame_arch(), get_frame_register_unsigned(), linux_is_uclinux(), m68k_linux_pc_in_sigtramp(), m68k_linux_sigcontext_reg_offset, m68k_linux_ucontext_reg_offset, M68K_SP_REGNUM, m68k_uclinux_sigcontext_reg_offset, read_memory_unsigned_integer(), m68k_linux_sigtramp_info::sc_reg_offset, m68k_linux_sigtramp_info::sigcontext_addr, and target_is_uclinux.

Referenced by m68k_linux_sigtramp_frame_cache().

## ◆ m68k_linux_inferior_created()

static void m68k_linux_inferior_created | ( | struct target_ops * | objfile,
|  | int | from_tty
| ) |  |
| static

Definition at line 214 of file m68k-linux-tdep.c.

References target_is_uclinux.

Referenced by _initialize_m68k_linux_tdep().

## ◆ m68k_linux_init_abi()

static void m68k_linux_init_abi | ( | struct gdbarch_info | info,
|  | struct gdbarch * | gdbarch
| ) |  |
| static

Definition at line 382 of file m68k-linux-tdep.c.

References find_solib_trampoline_target(), frame_unwind_append_unwinder(), gdbarch_tdep(), glibc_skip_solib_resolver(), gdbarch_tdep::jb_elt_size, gdbarch_tdep::jb_pc, linux_init_abi(), M68K_A1_REGNUM, m68k_linux_iterate_over_regset_sections(), M68K_LINUX_JB_ELEMENT_SIZE, M68K_LINUX_JB_PC, m68k_linux_sigtramp_frame_unwind, m68k_svr4_init_abi(), reg_struct_return, set_gdbarch_decr_pc_after_break(), set_gdbarch_fetch_tls_load_module_address(), set_gdbarch_iterate_over_regset_sections(), set_gdbarch_skip_solib_resolver(), set_gdbarch_skip_trampoline_code(), set_solib_svr4_fetch_link_map_offsets(), gdbarch_tdep::struct_return, gdbarch_tdep::struct_value_regnum, svr4_fetch_objfile_link_map(), and svr4_ilp32_fetch_link_map_offsets().

Referenced by _initialize_m68k_linux_tdep().

## ◆ m68k_linux_iterate_over_regset_sections()

static void m68k_linux_iterate_over_regset_sections | ( | struct gdbarch * | gdbarch,
|  | iterate_over_regset_sections_cb * | cb,
|  | void * | cb_data,
|  | const struct regcache * | regcache
| ) |  |
| static

Definition at line 372 of file m68k-linux-tdep.c.

References M68K_LINUX_FPREGS_SIZE, m68k_linux_fpregset, M68K_LINUX_GREGS_SIZE, and m68k_linux_gregset.

Referenced by m68k_linux_init_abi().

## ◆ m68k_linux_pc_in_sigtramp()

static int m68k_linux_pc_in_sigtramp | ( | struct frame_info * | this_frame | ) |
| static

Definition at line 64 of file m68k-linux-tdep.c.

References gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), get_frame_arch(), get_frame_pc(), IS_RT_SIGTRAMP, IS_SIGTRAMP, and safe_frame_unwind_memory().

Referenced by m68k_linux_get_sigtramp_info(), and m68k_linux_sigtramp_frame_sniffer().

## ◆ m68k_linux_sigtramp_frame_cache()

static struct trad_frame_cache* m68k_linux_sigtramp_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 251 of file m68k-linux-tdep.c.

References gdbarch::byte_order, extract_unsigned_integer(), frame_id_build(), gdbarch_byte_order(), get_frame_arch(), get_frame_pc(), get_frame_register(), m68k_linux_get_sigtramp_info(), M68K_NUM_REGS, M68K_SP_REGNUM, m68k_linux_sigtramp_info::sc_reg_offset, m68k_linux_sigtramp_info::sigcontext_addr, trad_frame_cache_zalloc(), trad_frame_set_id(), and trad_frame_set_reg_addr().

Referenced by m68k_linux_sigtramp_frame_prev_register(), and m68k_linux_sigtramp_frame_this_id().

## ◆ m68k_linux_sigtramp_frame_prev_register()

static struct value* m68k_linux_sigtramp_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | int | regnum
| ) |  |
| static

Definition at line 299 of file m68k-linux-tdep.c.

References m68k_linux_sigtramp_frame_cache(), regnum, trad_frame_cache::this_frame, and trad_frame_get_register().

## ◆ m68k_linux_sigtramp_frame_sniffer()

static int m68k_linux_sigtramp_frame_sniffer | ( | const struct frame_unwind * | self,
|  | struct frame_info * | this_frame,
|  | void ** | this_prologue_cache
| ) |  |
| static

Definition at line 310 of file m68k-linux-tdep.c.

References m68k_linux_pc_in_sigtramp(), and trad_frame_cache::this_frame.

## ◆ m68k_linux_sigtramp_frame_this_id()

static void m68k_linux_sigtramp_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | this_cache,
|  | struct frame_id * | this_id
| ) |  |
| static

Definition at line 289 of file m68k-linux-tdep.c.

References m68k_linux_sigtramp_frame_cache(), trad_frame_cache::this_frame, trad_frame_cache::this_id, and trad_frame_get_id().

## Variable Documentation

## ◆ m68k_linux_fpregmap

const struct regcache_map_entry m68k_linux_fpregmap[]
| static

Initial value:
=
{
{ 8, M68K_FP0_REGNUM, 12 },
{ 1, M68K_FPC_REGNUM, 4 },
{ 1, M68K_FPS_REGNUM, 4 },
{ 1, M68K_FPI_REGNUM, 4 },
{ 0 }
}
M68K_FPS_REGNUM
Definition: m68k-tdep.h:42
M68K_FPI_REGNUM
Definition: m68k-tdep.h:43
M68K_FPC_REGNUM
Definition: m68k-tdep.h:41
M68K_FP0_REGNUM
Definition: m68k-tdep.h:40

Definition at line 344 of file m68k-linux-tdep.c.

## ◆ m68k_linux_fpregset

const struct regset m68k_linux_fpregset
| static

Initial value:
=
{
m68k_linux_fpregmap,
regcache_supply_regset, regcache_collect_regset
}
m68k_linux_fpregmap
static const struct regcache_map_entry m68k_linux_fpregmap[]
Definition: m68k-linux-tdep.c:344
regcache_supply_regset
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
Definition: regcache.c:1192
regcache_collect_regset
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
Definition: regcache.c:1211

Definition at line 363 of file m68k-linux-tdep.c.

Referenced by m68k_linux_iterate_over_regset_sections().

## ◆ m68k_linux_gregmap

const struct regcache_map_entry m68k_linux_gregmap[]
| static

Initial value:
=
{
{ 7, M68K_D1_REGNUM, 4 },
{ 7, M68K_A0_REGNUM, 4 },
{ 1, M68K_D0_REGNUM, 4 },
{ 1, M68K_SP_REGNUM, 4 },
{ 1, REGCACHE_MAP_SKIP, 4 },
{ 1, M68K_PS_REGNUM, 4 },
{ 1, M68K_PC_REGNUM, 4 },
{ 0 }
}
M68K_PC_REGNUM
Definition: m68k-tdep.h:39
M68K_D1_REGNUM
Definition: m68k-tdep.h:30
M68K_D0_REGNUM
Definition: m68k-tdep.h:29
M68K_SP_REGNUM
Definition: m68k-tdep.h:37
M68K_A0_REGNUM
Definition: m68k-tdep.h:33
M68K_PS_REGNUM
Definition: m68k-tdep.h:38
REGCACHE_MAP_SKIP
Definition: regcache.h:168

Definition at line 329 of file m68k-linux-tdep.c.

## ◆ m68k_linux_gregset

const struct regset m68k_linux_gregset
| static

Initial value:
=
{
m68k_linux_gregmap,
regcache_supply_regset, regcache_collect_regset
}
regcache_supply_regset
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
Definition: regcache.c:1192
regcache_collect_regset
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
Definition: regcache.c:1211
m68k_linux_gregmap
static const struct regcache_map_entry m68k_linux_gregmap[]
Definition: m68k-linux-tdep.c:329

Definition at line 357 of file m68k-linux-tdep.c.

Referenced by m68k_linux_iterate_over_regset_sections().

## ◆ m68k_linux_sigcontext_reg_offset

int m68k_linux_sigcontext_reg_offset[M68K_NUM_REGS]
| static

Definition at line 98 of file m68k-linux-tdep.c.

Referenced by m68k_linux_get_sigtramp_info().

## ◆ m68k_linux_sigtramp_frame_unwind

const struct frame_unwind m68k_linux_sigtramp_frame_unwind
| static

Initial value:
=
{
SIGTRAMP_FRAME,
default_frame_unwind_stop_reason,
m68k_linux_sigtramp_frame_this_id,
m68k_linux_sigtramp_frame_prev_register,
NULL,
m68k_linux_sigtramp_frame_sniffer
}
SIGTRAMP_FRAME
Definition: frame.h:255
m68k_linux_sigtramp_frame_sniffer
static int m68k_linux_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: m68k-linux-tdep.c:310
m68k_linux_sigtramp_frame_prev_register
static struct value * m68k_linux_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
Definition: m68k-linux-tdep.c:299
default_frame_unwind_stop_reason
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
Definition: frame-unwind.c:184
m68k_linux_sigtramp_frame_this_id
static void m68k_linux_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
Definition: m68k-linux-tdep.c:289

Definition at line 317 of file m68k-linux-tdep.c.

Referenced by m68k_linux_init_abi().

## ◆ m68k_linux_ucontext_reg_offset

int m68k_linux_ucontext_reg_offset[M68K_NUM_REGS]
| static

Definition at line 165 of file m68k-linux-tdep.c.

Referenced by m68k_linux_get_sigtramp_info().

## ◆ m68k_uclinux_sigcontext_reg_offset

int m68k_uclinux_sigcontext_reg_offset[M68K_NUM_REGS]
| static

Definition at line 131 of file m68k-linux-tdep.c.

Referenced by m68k_linux_get_sigtramp_info().

## ◆ target_is_uclinux

int target_is_uclinux
| static

Definition at line 211 of file m68k-linux-tdep.c.

Referenced by m68k_linux_get_sigtramp_info(), and m68k_linux_inferior_created().