GDB (xrefs)

Classes | Macros | Enumerations | Functions | Variables
/tmp/gdb-8.1/gdb/moxie-tdep.c File Reference
`#include "defs.h"`
`#include "frame.h"`
`#include "frame-unwind.h"`
`#include "frame-base.h"`
`#include "symtab.h"`
`#include "gdbtypes.h"`
`#include "gdbcmd.h"`
`#include "gdbcore.h"`
`#include "value.h"`
`#include "inferior.h"`
`#include "symfile.h"`
`#include "objfiles.h"`
`#include "osabi.h"`
`#include "language.h"`
`#include "arch-utils.h"`
`#include "regcache.h"`
`#include "trad-frame.h"`
`#include "dis-asm.h"`
`#include "record.h"`
`#include "record-full.h"`
`#include "moxie-tdep.h"`
`#include <algorithm>`

Go to the source code of this file.

## Classes
struct | moxie_frame_cache
struct | moxie_unwind_cache

## Macros
#define | INST2OFFSET(o) ((((signed short)((o & ((1<<10)-1))<<6))>>6)<<1)

## Enumerations
enum | { REG_UNAVAIL = (CORE_ADDR) -1 }

## Functions
static CORE_ADDR | moxie_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
typedef | BP_MANIPULATION (moxie_break_insn)
static const char * | moxie_register_name (struct gdbarch *gdbarch, int reg_nr)
static struct type * | moxie_register_type (struct gdbarch *gdbarch, int reg_nr)
static void | moxie_store_return_value (struct type *type, struct regcache *regcache, const gdb_byte *valbuf)
static CORE_ADDR | moxie_analyze_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr, struct moxie_frame_cache *cache, struct gdbarch *gdbarch)
static CORE_ADDR | moxie_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static ULONGEST | moxie_process_readu (CORE_ADDR addr, gdb_byte *buf, int length, enum bfd_endian byte_order)
static std::vector< CORE_ADDR > | moxie_software_single_step (struct regcache *regcache)
static CORE_ADDR | moxie_read_pc (struct regcache *regcache)
static void | moxie_write_pc (struct regcache *regcache, CORE_ADDR val)
static CORE_ADDR | moxie_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
static void | moxie_extract_return_value (struct type *type, struct regcache *regcache, gdb_byte *dst)
static enum return_value_convention | moxie_return_value (struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
static struct moxie_frame_cache * | moxie_alloc_frame_cache (void)
static struct moxie_frame_cache * | moxie_frame_cache (struct frame_info *this_frame, void **this_cache)
static CORE_ADDR | moxie_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
static void | moxie_frame_this_id (struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
static struct value * | moxie_frame_prev_register (struct frame_info *this_frame, void **this_prologue_cache, int regnum)
static CORE_ADDR | moxie_frame_base_address (struct frame_info *this_frame, void **this_cache)
static struct frame_id | moxie_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
static int | moxie_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
static struct gdbarch * | moxie_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
void | _initialize_moxie_tdep (void)

## Variables
constexpr gdb_byte | moxie_break_insn [] = { 0x35, 0x00 }
static const struct frame_unwind | moxie_frame_unwind
static const struct frame_base | moxie_frame_base

## Macro Definition Documentation

## ◆ INST2OFFSET

#define INST2OFFSET | ( |  | o | ) | ((((signed short)((o & ((1<<10)-1))<<6))>>6)<<1)

Definition at line 294 of file moxie-tdep.c.

Referenced by moxie_software_single_step().

## Enumeration Type Documentation

## ◆ anonymous enum

anonymous enum

Enumerator
REG_UNAVAIL |

Definition at line 45 of file moxie-tdep.c.

## Function Documentation

## ◆ _initialize_moxie_tdep()

void _initialize_moxie_tdep | ( | void |  | ) |

Definition at line 1162 of file moxie-tdep.c.

References moxie_gdbarch_init(), and register_gdbarch_init().

## ◆ BP_MANIPULATION()

typedef BP_MANIPULATION | ( | moxie_break_insn |  | ) |

Definition at line 69 of file moxie-tdep.c.

## ◆ moxie_alloc_frame_cache()

static struct moxie_frame_cache* moxie_alloc_frame_cache | ( | void |  | ) |
| static

Definition at line 526 of file moxie-tdep.c.

References moxie_frame_cache::base, FRAME_OBSTACK_ZALLOC, moxie_frame_cache::framesize, MOXIE_NUM_REGS, moxie_frame_cache::pc, REG_UNAVAIL, moxie_frame_cache::saved_regs, and moxie_frame_cache::saved_sp.

Referenced by moxie_frame_cache().

## ◆ moxie_analyze_prologue()

static CORE_ADDR moxie_analyze_prologue | ( | CORE_ADDR | start_addr,
|  | CORE_ADDR | end_addr,
|  | struct moxie_frame_cache * | cache,
|  | struct gdbarch * | gdbarch
| ) |  |
| static

Definition at line 133 of file moxie-tdep.c.

References gdbarch::byte_order, moxie_frame_cache::framesize, gdbarch_byte_order(), MOXIE_FP_REGNUM, MOXIE_PC_REGNUM, offset, read_memory_integer(), read_memory_unsigned_integer(), regnum, and moxie_frame_cache::saved_regs.

Referenced by moxie_frame_cache(), and moxie_skip_prologue().

## ◆ moxie_dummy_id()

static struct frame_id moxie_dummy_id | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | this_frame
| ) |  |
| static

Definition at line 653 of file moxie-tdep.c.

References frame_id_build(), get_frame_pc(), get_frame_register_unsigned(), and MOXIE_SP_REGNUM.

Referenced by moxie_gdbarch_init().

## ◆ moxie_extract_return_value()

static void moxie_extract_return_value | ( | struct type * | type,
|  | struct regcache * | regcache,
|  | gdb_byte * | dst
| ) |  |
| static

Definition at line 482 of file moxie-tdep.c.

References regcache::arch(), gdbarch::byte_order, gdbarch_byte_order(), regcache_cooked_read_unsigned(), RET1_REGNUM, store_unsigned_integer(), and TYPE_LENGTH.

Referenced by moxie_return_value().

## ◆ moxie_frame_align()

static CORE_ADDR moxie_frame_align | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | sp
| ) |  |
| static

Definition at line 60 of file moxie-tdep.c.

Referenced by moxie_gdbarch_init().

## ◆ moxie_frame_base_address()

static CORE_ADDR moxie_frame_base_address | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 637 of file moxie-tdep.c.

References moxie_frame_cache::base, and moxie_frame_cache().

## ◆ moxie_frame_cache()

static struct moxie_frame_cache* moxie_frame_cache | ( | struct frame_info * | this_frame,
|  | void ** | this_cache
| ) |  |
| static

Definition at line 546 of file moxie-tdep.c.

References moxie_frame_cache::base, moxie_frame_cache::framesize, get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_register_unsigned(), moxie_alloc_frame_cache(), moxie_analyze_prologue(), MOXIE_FP_REGNUM, MOXIE_NUM_REGS, moxie_frame_cache::pc, REG_UNAVAIL, moxie_frame_cache::saved_regs, and moxie_frame_cache::saved_sp.

Referenced by moxie_frame_base_address(), moxie_frame_prev_register(), and moxie_frame_this_id().

## ◆ moxie_frame_prev_register()

static struct value* moxie_frame_prev_register | ( | struct frame_info * | this_frame,
|  | void ** | this_prologue_cache,
|  | int | regnum
| ) |  |
| static

Definition at line 607 of file moxie-tdep.c.

References frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_register(), gdb_assert, moxie_frame_cache(), MOXIE_SP_REGNUM, REG_UNAVAIL, regnum, moxie_frame_cache::saved_regs, and moxie_frame_cache::saved_sp.

## ◆ moxie_frame_this_id()

static void moxie_frame_this_id | ( | struct frame_info * | this_frame,
|  | void ** | this_prologue_cache,
|  | struct frame_id * | this_id
| ) |  |
| static

Definition at line 591 of file moxie-tdep.c.

References moxie_frame_cache::base, frame_id_build(), moxie_frame_cache(), moxie_frame_cache::pc, and moxie_frame_cache::saved_sp.

## ◆ moxie_gdbarch_init()

static struct gdbarch* moxie_gdbarch_init | ( | struct gdbarch_info | info,
|  | struct gdbarch_list * | arches
| ) |  |
| static

Definition at line 1095 of file moxie-tdep.c.

References core_addr_lessthan(), frame_base_set_default(), frame_unwind_append_unwinder(), gdbarch_list::gdbarch, gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), moxie_dummy_id(), moxie_frame_align(), moxie_frame_base, moxie_frame_unwind, MOXIE_NUM_REGS, MOXIE_PC_REGNUM, moxie_process_record(), moxie_read_pc(), moxie_register_name(), moxie_register_type(), moxie_return_value(), moxie_skip_prologue(), moxie_software_single_step(), MOXIE_SP_REGNUM, moxie_unwind_pc(), moxie_unwind_sp(), moxie_write_pc(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_dummy_id(), set_gdbarch_frame_align(), set_gdbarch_inner_than(), set_gdbarch_num_regs(), set_gdbarch_overlay_update(), set_gdbarch_pc_regnum(), set_gdbarch_process_record(), set_gdbarch_read_pc(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_software_single_step(), set_gdbarch_sp_regnum(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(), set_gdbarch_wchar_bit(), set_gdbarch_wchar_signed(), set_gdbarch_write_pc(), simple_overlay_update(), and XCNEW.

Referenced by _initialize_moxie_tdep().

## ◆ moxie_process_readu()

static ULONGEST moxie_process_readu | ( | CORE_ADDR | addr,
|  | gdb_byte * | buf,
|  | int | length,
|  | enum bfd_endian | byte_order
| ) |  |
| static

Definition at line 276 of file moxie-tdep.c.

References _, trad_frame_saved_reg::addr, extract_unsigned_integer(), paddress(), printf_unfiltered(), record_debug, target_gdbarch(), and target_read_memory().

Referenced by moxie_process_record(), and moxie_software_single_step().

## ◆ moxie_process_record()

static int moxie_process_record | ( | struct gdbarch * | gdbarch,
|  | struct regcache * | regcache,
|  | CORE_ADDR | addr
| ) |  |
| static

Definition at line 665 of file moxie-tdep.c.

References frame_info::addr, extract_unsigned_integer(), fprintf_unfiltered(), gdb_stdlog, gdbarch_byte_order(), MOXIE_CC_REGNUM, MOXIE_FP_REGNUM, MOXIE_PC_REGNUM, moxie_process_readu(), MOXIE_SP_REGNUM, offset, paddress(), record_debug, record_full_arch_list_add_end(), record_full_arch_list_add_mem(), record_full_arch_list_add_reg(), regcache_raw_read(), RET1_REGNUM, and target_gdbarch().

Referenced by moxie_gdbarch_init().

## ◆ moxie_read_pc()

static CORE_ADDR moxie_read_pc | ( | struct regcache * | regcache | ) |
| static

Definition at line 454 of file moxie-tdep.c.

References MOXIE_PC_REGNUM, and regcache_cooked_read_unsigned().

Referenced by moxie_gdbarch_init().

## ◆ moxie_register_name()

static const char* moxie_register_name | ( | struct gdbarch * | gdbarch,
|  | int | reg_nr
| ) |  |
| static

Definition at line 82 of file moxie-tdep.c.

References MOXIE_NUM_REGS.

Referenced by moxie_gdbarch_init().

## ◆ moxie_register_type()

static struct type* moxie_register_type | ( | struct gdbarch * | gdbarch,
|  | int | reg_nr
| ) |  |
| static

Definition at line 94 of file moxie-tdep.c.

References builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type::builtin_int32, builtin_type(), MOXIE_FP_REGNUM, MOXIE_PC_REGNUM, and MOXIE_SP_REGNUM.

Referenced by moxie_gdbarch_init().

## ◆ moxie_return_value()

static enum return_value_convention moxie_return_value | ( | struct gdbarch * | gdbarch,
|  | struct value * | function,
|  | struct type * | valtype,
|  | struct regcache * | regcache,
|  | gdb_byte * | readbuf,
|  | const gdb_byte * | writebuf
| ) |  |
| static

Definition at line 507 of file moxie-tdep.c.

References moxie_extract_return_value(), moxie_store_return_value(), RETURN_VALUE_REGISTER_CONVENTION, RETURN_VALUE_STRUCT_CONVENTION, and TYPE_LENGTH.

Referenced by moxie_gdbarch_init().

## ◆ moxie_skip_prologue()

static CORE_ADDR moxie_skip_prologue | ( | struct gdbarch * | gdbarch,
|  | CORE_ADDR | pc
| ) |  |
| static

Definition at line 204 of file moxie-tdep.c.

References symtab_and_line::end, find_pc_line(), find_pc_partial_function(), language_asm, lookup_symbol(), memset(), moxie_analyze_prologue(), moxie_frame_cache::pc, skip_prologue_using_sal(), block_symbol::symbol, SYMBOL_LANGUAGE, and VAR_DOMAIN.

Referenced by moxie_gdbarch_init().

## ◆ moxie_software_single_step()

static std::vector<CORE_ADDR> moxie_software_single_step | ( | struct regcache * | regcache | ) |
| static

Definition at line 299 of file moxie-tdep.c.

References regcache::arch(), gdbarch::byte_order, gdbarch_byte_order(), INST2OFFSET, MOXIE_FP_REGNUM, moxie_process_readu(), regcache_cooked_read_unsigned(), regcache_raw_read(), and regcache_read_pc().

Referenced by moxie_gdbarch_init().

## ◆ moxie_store_return_value()

static void moxie_store_return_value | ( | struct type * | type,
|  | struct regcache * | regcache,
|  | const gdb_byte * | valbuf
| ) |  |
| static

Definition at line 108 of file moxie-tdep.c.

References regcache::arch(), gdbarch::byte_order, extract_unsigned_integer(), gdbarch_byte_order(), regcache_cooked_write_unsigned(), RET1_REGNUM, and TYPE_LENGTH.

Referenced by moxie_return_value().

## ◆ moxie_unwind_pc()

static CORE_ADDR moxie_unwind_pc | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | next_frame
| ) |  |
| static

Definition at line 582 of file moxie-tdep.c.

References frame_unwind_register_unsigned(), and MOXIE_PC_REGNUM.

Referenced by moxie_gdbarch_init().

## ◆ moxie_unwind_sp()

static CORE_ADDR moxie_unwind_sp | ( | struct gdbarch * | gdbarch,
|  | struct frame_info * | next_frame
| ) |  |
| static

Definition at line 473 of file moxie-tdep.c.

References frame_unwind_register_unsigned(), and MOXIE_SP_REGNUM.

Referenced by moxie_gdbarch_init().

## ◆ moxie_write_pc()

static void moxie_write_pc | ( | struct regcache * | regcache,
|  | CORE_ADDR | val
| ) |  |
| static

Definition at line 465 of file moxie-tdep.c.

References MOXIE_PC_REGNUM, and regcache_cooked_write_unsigned().

Referenced by moxie_gdbarch_init().

## Variable Documentation

## ◆ moxie_break_insn

constexpr gdb_byte moxie_break_insn[] = { 0x35, 0x00 }

Definition at line 67 of file moxie-tdep.c.

## ◆ moxie_frame_base

const struct frame_base moxie_frame_base
| static

Initial value:
= {
&moxie_frame_unwind,
moxie_frame_base_address,
moxie_frame_base_address,
moxie_frame_base_address
}
moxie_frame_unwind
static const struct frame_unwind moxie_frame_unwind
Definition: moxie-tdep.c:625
moxie_frame_base_address
static CORE_ADDR moxie_frame_base_address(struct frame_info *this_frame, void **this_cache)
Definition: moxie-tdep.c:637

Definition at line 645 of file moxie-tdep.c.

Referenced by moxie_gdbarch_init().

## ◆ moxie_frame_unwind

const struct frame_unwind moxie_frame_unwind
| static

Initial value:
= {
NORMAL_FRAME,
default_frame_unwind_stop_reason,
moxie_frame_this_id,
moxie_frame_prev_register,
NULL,
default_frame_sniffer
}
moxie_frame_this_id
static void moxie_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition: moxie-tdep.c:591
NORMAL_FRAME
Definition: frame.h:244
moxie_frame_prev_register
static struct value * moxie_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
Definition: moxie-tdep.c:607
default_frame_sniffer
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
Definition: frame-unwind.c:174
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

Definition at line 625 of file moxie-tdep.c.

Referenced by moxie_gdbarch_init().