GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Macros | Functions | Variables
hppa-tdep.c File Reference
#include "defs.h"
#include "bfd.h"
#include "inferior.h"
#include "regcache.h"
#include "completer.h"
#include "osabi.h"
#include "arch-utils.h"
#include "symtab.h"
#include "dis-asm.h"
#include "trad-frame.h"
#include "frame-unwind.h"
#include "frame-base.h"
#include "gdbcore.h"
#include "gdbcmd.h"
#include "gdbtypes.h"
#include "objfiles.h"
#include "hppa-tdep.h"
#include <algorithm>

Go to the source code of this file.

Classes

struct  hppa_unwind_info
 
struct  hppa_objfile_private
 
struct  hppa_frame_cache
 
struct  hppa_stub_unwind_cache
 
struct  insn_pattern
 

Macros

#define MASK_5   0x1f
 
#define MASK_11   0x7ff
 
#define MASK_14   0x3fff
 
#define MASK_21   0x1fffff
 
#define UNWIND_ENTRY_SIZE   16
 
#define STUB_UNWIND_ENTRY_SIZE   8
 
#define pif(FLD)   if (u->FLD) gdb_printf (" "#FLD);
 
#define pin(FLD)   gdb_printf ("\t"#FLD" = 0x%x\n", u->FLD);
 
#define HPPA_MAX_INSN_PATTERN_LEN   4
 

Functions

static int hppa_sign_extend (unsigned val, unsigned bits)
 
static int hppa_low_hppa_sign_extend (unsigned val, unsigned bits)
 
int hppa_get_field (unsigned word, int from, int to)
 
int hppa_extract_5_load (unsigned word)
 
unsigned hppa_extract_5r_store (unsigned word)
 
unsigned hppa_extract_5R_store (unsigned word)
 
int hppa_extract_14 (unsigned word)
 
int hppa_extract_21 (unsigned word)
 
int hppa_extract_17 (unsigned word)
 
CORE_ADDR hppa_symbol_address (const char *sym)
 
static int compare_unwind_entries (const void *arg1, const void *arg2)
 
static void record_text_segment_lowaddr (bfd *abfd, asection *section, void *data)
 
static void internalize_unwinds (struct objfile *objfile, struct unwind_table_entry *table, asection *section, unsigned int entries, size_t size, CORE_ADDR text_offset)
 
static void read_unwind_info (struct objfile *objfile)
 
struct unwind_table_entryfind_unwind_entry (CORE_ADDR pc)
 
static int hppa_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 
typedef BP_MANIPULATION (hppa_break_insn)
 
static const char * hppa64_register_name (struct gdbarch *gdbarch, int i)
 
static int hppa64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 
static CORE_ADDR hppa32_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
static int hppa64_integral_or_pointer_p (const struct type *type)
 
static int hppa64_floating_p (const struct type *type)
 
static CORE_ADDR hppa64_convert_code_addr_to_fptr (struct gdbarch *gdbarch, CORE_ADDR code)
 
static CORE_ADDR hppa64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
 
static enum return_value_convention hppa32_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static enum return_value_convention hppa64_return_value (struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
 
static CORE_ADDR hppa32_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
 
static CORE_ADDR hppa32_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static CORE_ADDR hppa64_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static CORE_ADDR hppa_read_pc (readable_regcache *regcache)
 
void hppa_write_pc (struct regcache *regcache, CORE_ADDR pc)
 
static int prologue_inst_adjust_sp (unsigned long inst)
 
static int is_branch (unsigned long inst)
 
static int inst_saves_gr (unsigned long inst)
 
static int inst_saves_fr (unsigned long inst)
 
static CORE_ADDR skip_prologue_hard_way (struct gdbarch *gdbarch, CORE_ADDR pc, int stop_before_branch)
 
static CORE_ADDR after_prologue (CORE_ADDR pc)
 
static CORE_ADDR hppa_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 
static struct unwind_table_entryhppa_find_unwind_entry_in_block (frame_info_ptr this_frame)
 
static struct hppa_frame_cache * hppa_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void hppa_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuehppa_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static int hppa_frame_unwind_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
 
static struct hppa_frame_cachehppa_fallback_frame_cache (frame_info_ptr this_frame, void **this_cache)
 
static void hppa_fallback_frame_this_id (frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
 
static struct valuehppa_fallback_frame_prev_register (frame_info_ptr this_frame, void **this_cache, int regnum)
 
static struct hppa_stub_unwind_cachehppa_stub_frame_unwind_cache (frame_info_ptr this_frame, void **this_cache)
 
static void hppa_stub_frame_this_id (frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
 
static struct valuehppa_stub_frame_prev_register (frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
 
static int hppa_stub_unwind_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
 
CORE_ADDR hppa_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 
static void unwind_command (const char *exp, int from_tty)
 
static struct typehppa32_register_type (struct gdbarch *gdbarch, int regnum)
 
static struct typehppa64_register_type (struct gdbarch *gdbarch, int regnum)
 
static int hppa32_cannot_store_register (struct gdbarch *gdbarch, int regnum)
 
static int hppa32_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
 
static int hppa64_cannot_store_register (struct gdbarch *gdbarch, int regnum)
 
static int hppa64_cannot_fetch_register (struct gdbarch *gdbarch, int regnum)
 
static CORE_ADDR hppa_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
 
static CORE_ADDR hppa_fetch_pointer_argument (frame_info_ptr frame, int argi, struct type *type)
 
static enum register_status hppa_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache, int regnum, gdb_byte *buf)
 
static CORE_ADDR hppa_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
 
struct valuehppa_frame_prev_register_helper (frame_info_ptr this_frame, trad_frame_saved_reg saved_regs[], int regnum)
 
static int hppa_match_insns (struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
 
static int hppa_match_insns_relaxed (struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
 
static int hppa_in_dyncall (CORE_ADDR pc)
 
int hppa_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc)
 
CORE_ADDR hppa_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
 
static struct gdbarchhppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
static void hppa_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 
void _initialize_hppa_tdep ()
 

Variables

static bool hppa_debug = false
 
static const int hppa32_num_regs = 128
 
static const int hppa64_num_regs = 96
 
static const registry< objfile >::key< hppa_objfile_privatehppa_objfile_priv_data
 
constexpr gdb_byte hppa_break_insn [] = {0x00, 0x01, 0x00, 0x04}
 
static const struct frame_unwind hppa_frame_unwind
 
static const struct frame_unwind hppa_fallback_frame_unwind
 
static const struct frame_unwind hppa_stub_frame_unwind
 
static struct insn_pattern hppa_long_branch_stub []
 
static struct insn_pattern hppa_long_branch_pic_stub []
 
static struct insn_pattern hppa_import_stub []
 
static struct insn_pattern hppa_import_pic_stub []
 
static struct insn_pattern hppa_plt_stub []
 

Macro Definition Documentation

◆ HPPA_MAX_INSN_PATTERN_LEN

#define HPPA_MAX_INSN_PATTERN_LEN   4

Definition at line 2792 of file hppa-tdep.c.

Referenced by hppa_in_solib_call_trampoline(), and hppa_skip_trampoline_code().

◆ MASK_11

#define MASK_11   0x7ff

Definition at line 92 of file hppa-tdep.c.

◆ MASK_14

#define MASK_14   0x3fff

Definition at line 93 of file hppa-tdep.c.

Referenced by hppa_extract_14().

◆ MASK_21

#define MASK_21   0x1fffff

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

Referenced by hppa_extract_21().

◆ MASK_5

#define MASK_5   0x1f

Definition at line 91 of file hppa-tdep.c.

Referenced by hppa_extract_5_load(), hppa_extract_5r_store(), and hppa_extract_5R_store().

◆ pif

#define pif ( FLD)    if (u->FLD) gdb_printf (" "#FLD);

◆ pin

#define pin ( FLD)    gdb_printf ("\t"#FLD" = 0x%x\n", u->FLD);

◆ STUB_UNWIND_ENTRY_SIZE

#define STUB_UNWIND_ENTRY_SIZE   8

Definition at line 98 of file hppa-tdep.c.

Referenced by read_unwind_info().

◆ UNWIND_ENTRY_SIZE

#define UNWIND_ENTRY_SIZE   16

Definition at line 97 of file hppa-tdep.c.

Referenced by read_unwind_info().

Function Documentation

◆ _initialize_hppa_tdep()

void _initialize_hppa_tdep ( )

◆ after_prologue()

static CORE_ADDR after_prologue ( CORE_ADDR pc)
static

◆ BP_MANIPULATION()

typedef BP_MANIPULATION ( hppa_break_insn )

Definition at line 594 of file hppa-tdep.c.

References gdb_static_assert(), and hppa32_num_regs.

◆ compare_unwind_entries()

static int compare_unwind_entries ( const void * arg1,
const void * arg2 )
static

Definition at line 213 of file hppa-tdep.c.

References unwind_table_entry::region_start.

Referenced by read_unwind_info().

◆ find_unwind_entry()

struct unwind_table_entry * find_unwind_entry ( CORE_ADDR pc)

◆ hppa32_cannot_fetch_register()

static int hppa32_cannot_fetch_register ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 2634 of file hppa-tdep.c.

References hppa32_cannot_store_register(), HPPA_CR26_REGNUM, HPPA_CR27_REGNUM, and regnum.

Referenced by hppa_gdbarch_init().

◆ hppa32_cannot_store_register()

static int hppa32_cannot_store_register ( struct gdbarch * gdbarch,
int regnum )
static

◆ hppa32_convert_from_func_ptr_addr()

static CORE_ADDR hppa32_convert_from_func_ptr_addr ( struct gdbarch * gdbarch,
CORE_ADDR addr,
struct target_ops * targ )
static

◆ hppa32_frame_align()

static CORE_ADDR hppa32_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR addr )
static

Definition at line 1264 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa32_push_dummy_call()

static CORE_ADDR hppa32_push_dummy_call ( struct gdbarch * gdbarch,
struct value * function,
struct regcache * regcache,
CORE_ADDR bp_addr,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )
static

◆ hppa32_register_type()

static struct type * hppa32_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ hppa32_return_value()

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

◆ hppa64_cannot_fetch_register()

static int hppa64_cannot_fetch_register ( struct gdbarch * gdbarch,
int regnum )
static

Definition at line 2653 of file hppa-tdep.c.

References hppa64_cannot_store_register(), HPPA_CR26_REGNUM, HPPA_CR27_REGNUM, and regnum.

Referenced by hppa_gdbarch_init().

◆ hppa64_cannot_store_register()

static int hppa64_cannot_store_register ( struct gdbarch * gdbarch,
int regnum )
static

◆ hppa64_convert_code_addr_to_fptr()

static CORE_ADDR hppa64_convert_code_addr_to_fptr ( struct gdbarch * gdbarch,
CORE_ADDR code )
static

◆ hppa64_dwarf_reg_to_regnum()

static int hppa64_dwarf_reg_to_regnum ( struct gdbarch * gdbarch,
int reg )
static

Definition at line 674 of file hppa-tdep.c.

References HPPA64_FP4_REGNUM.

Referenced by hppa_gdbarch_init().

◆ hppa64_floating_p()

static int hppa64_floating_p ( const struct type * type)
static

Definition at line 890 of file hppa-tdep.c.

References type::code(), and type::length().

Referenced by hppa64_push_dummy_call(), and hppa64_return_value().

◆ hppa64_frame_align()

static CORE_ADDR hppa64_frame_align ( struct gdbarch * gdbarch,
CORE_ADDR addr )
static

Definition at line 1274 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa64_integral_or_pointer_p()

static int hppa64_integral_or_pointer_p ( const struct type * type)
static

Definition at line 863 of file hppa-tdep.c.

References type::code(), and type::length().

Referenced by hppa64_push_dummy_call(), and hppa64_return_value().

◆ hppa64_push_dummy_call()

static CORE_ADDR hppa64_push_dummy_call ( struct gdbarch * gdbarch,
struct value * function,
struct regcache * regcache,
CORE_ADDR bp_addr,
int nargs,
struct value ** args,
CORE_ADDR sp,
function_call_return_method return_method,
CORE_ADDR struct_addr )
static

◆ hppa64_register_name()

static const char * hppa64_register_name ( struct gdbarch * gdbarch,
int i )
static

Definition at line 640 of file hppa-tdep.c.

References gdb_static_assert(), and hppa64_num_regs.

Referenced by hppa_gdbarch_init().

◆ hppa64_register_type()

static struct type * hppa64_register_type ( struct gdbarch * gdbarch,
int regnum )
static

◆ hppa64_return_value()

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

◆ hppa_addr_bits_remove()

static CORE_ADDR hppa_addr_bits_remove ( struct gdbarch * gdbarch,
CORE_ADDR addr )
static

Definition at line 2663 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa_dump_tdep()

static void hppa_dump_tdep ( struct gdbarch * gdbarch,
struct ui_file * file )
static

◆ hppa_extract_14()

int hppa_extract_14 ( unsigned word)

◆ hppa_extract_17()

int hppa_extract_17 ( unsigned word)

Definition at line 186 of file hppa-tdep.c.

References hppa_get_field(), and hppa_sign_extend().

◆ hppa_extract_21()

int hppa_extract_21 ( unsigned word)

Definition at line 164 of file hppa-tdep.c.

References hppa_get_field(), hppa_sign_extend(), and MASK_21.

Referenced by hppa_skip_trampoline_code(), and prologue_inst_adjust_sp().

◆ hppa_extract_5_load()

int hppa_extract_5_load ( unsigned word)

Definition at line 132 of file hppa-tdep.c.

References hppa_low_hppa_sign_extend(), and MASK_5.

Referenced by prologue_inst_adjust_sp().

◆ hppa_extract_5r_store()

unsigned hppa_extract_5r_store ( unsigned word)

Definition at line 140 of file hppa-tdep.c.

References MASK_5.

Referenced by inst_saves_fr().

◆ hppa_extract_5R_store()

unsigned hppa_extract_5R_store ( unsigned word)

Definition at line 148 of file hppa-tdep.c.

References MASK_5.

Referenced by inst_saves_fr(), and inst_saves_gr().

◆ hppa_fallback_frame_cache()

static struct hppa_frame_cache * hppa_fallback_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ hppa_fallback_frame_prev_register()

static struct value * hppa_fallback_frame_prev_register ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

◆ hppa_fallback_frame_this_id()

static void hppa_fallback_frame_this_id ( frame_info_ptr this_frame,
void ** this_cache,
struct frame_id * this_id )
static

Definition at line 2379 of file hppa-tdep.c.

References frame_id_build(), get_frame_func(), and hppa_fallback_frame_cache().

◆ hppa_fetch_pointer_argument()

static CORE_ADDR hppa_fetch_pointer_argument ( frame_info_ptr frame,
int argi,
struct type * type )
static

Definition at line 2678 of file hppa-tdep.c.

References get_frame_register_unsigned(), and HPPA_R0_REGNUM.

Referenced by hppa_gdbarch_init().

◆ hppa_find_global_pointer()

static CORE_ADDR hppa_find_global_pointer ( struct gdbarch * gdbarch,
struct value * function )
static

Definition at line 2703 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa_find_unwind_entry_in_block()

static struct unwind_table_entry * hppa_find_unwind_entry_in_block ( frame_info_ptr this_frame)
static

◆ hppa_frame_cache()

static struct hppa_frame_cache * hppa_frame_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ hppa_frame_prev_register()

static struct value * hppa_frame_prev_register ( frame_info_ptr this_frame,
void ** this_cache,
int regnum )
static

Definition at line 2267 of file hppa-tdep.c.

References hppa_frame_cache(), hppa_frame_prev_register_helper(), and regnum.

◆ hppa_frame_prev_register_helper()

struct value * hppa_frame_prev_register_helper ( frame_info_ptr this_frame,
trad_frame_saved_reg saved_regs[],
int regnum )

◆ hppa_frame_this_id()

static void hppa_frame_this_id ( frame_info_ptr this_frame,
void ** this_cache,
struct frame_id * this_id )
static

◆ hppa_frame_unwind_sniffer()

static int hppa_frame_unwind_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_cache )
static

Definition at line 2277 of file hppa-tdep.c.

References hppa_find_unwind_entry_in_block().

◆ hppa_gdbarch_init()

static struct gdbarch * hppa_gdbarch_init ( struct gdbarch_info info,
struct gdbarch_list * arches )
static

Definition at line 2982 of file hppa-tdep.c.

References arches, hppa_gdbarch_tdep::bytes_per_address, core_addr_greaterthan(), hppa_gdbarch_tdep::find_global_pointer, floatformats_ieee_quad, frame_unwind_append_unwinder(), gdbarch_alloc(), gdbarch_init_osabi(), gdbarch_list_lookup_by_info(), hppa32_cannot_fetch_register(), hppa32_cannot_store_register(), hppa32_convert_from_func_ptr_addr(), hppa32_frame_align(), hppa32_num_regs, hppa32_push_dummy_call(), hppa32_register_type(), hppa32_return_value(), hppa64_cannot_fetch_register(), hppa64_cannot_store_register(), hppa64_dwarf_reg_to_regnum(), hppa64_frame_align(), hppa64_num_regs, hppa64_push_dummy_call(), hppa64_register_name(), hppa64_register_type(), hppa64_return_value(), hppa_addr_bits_remove(), hppa_fallback_frame_unwind, hppa_fetch_pointer_argument(), hppa_find_global_pointer(), HPPA_FP0_REGNUM, hppa_frame_unwind, hppa_pseudo_register_read(), hppa_read_pc(), hppa_skip_prologue(), HPPA_SP_REGNUM, hppa_stack_frame_destroyed_p(), hppa_stub_frame_unwind, hppa_unwind_pc(), hppa_write_pc(), gdbarch::info(), set_gdbarch_addr_bits_remove(), set_gdbarch_believe_pcc_promotion(), set_gdbarch_breakpoint_kind_from_pc(), set_gdbarch_cannot_fetch_register(), set_gdbarch_cannot_store_register(), set_gdbarch_convert_from_func_ptr_addr(), set_gdbarch_dwarf2_reg_to_regnum(), set_gdbarch_fetch_pointer_argument(), set_gdbarch_fp0_regnum(), set_gdbarch_frame_align(), set_gdbarch_have_nonsteppable_watchpoint(), set_gdbarch_inner_than(), set_gdbarch_long_bit(), set_gdbarch_long_double_bit(), set_gdbarch_long_double_format(), set_gdbarch_long_long_bit(), set_gdbarch_num_regs(), set_gdbarch_pseudo_register_read(), set_gdbarch_ptr_bit(), set_gdbarch_push_dummy_call(), set_gdbarch_read_pc(), set_gdbarch_register_name(), set_gdbarch_register_type(), set_gdbarch_return_value(), set_gdbarch_skip_prologue(), set_gdbarch_sp_regnum(), set_gdbarch_stack_frame_destroyed_p(), set_gdbarch_sw_breakpoint_from_kind(), set_gdbarch_unwind_pc(), and set_gdbarch_write_pc().

Referenced by _initialize_hppa_tdep().

◆ hppa_get_field()

int hppa_get_field ( unsigned word,
int from,
int to )

Definition at line 124 of file hppa-tdep.c.

Referenced by hppa_extract_17(), and hppa_extract_21().

◆ hppa_in_dyncall()

static int hppa_in_dyncall ( CORE_ADDR pc)
static

◆ hppa_in_solib_call_trampoline()

int hppa_in_solib_call_trampoline ( struct gdbarch * gdbarch,
CORE_ADDR pc )

◆ hppa_low_hppa_sign_extend()

static int hppa_low_hppa_sign_extend ( unsigned val,
unsigned bits )
static

Definition at line 115 of file hppa-tdep.c.

References bits.

Referenced by hppa_extract_14(), hppa_extract_5_load(), and hppa_frame_cache().

◆ hppa_match_insns()

static int hppa_match_insns ( struct gdbarch * gdbarch,
CORE_ADDR pc,
struct insn_pattern * pattern,
unsigned int * insn )
static

◆ hppa_match_insns_relaxed()

static int hppa_match_insns_relaxed ( struct gdbarch * gdbarch,
CORE_ADDR pc,
struct insn_pattern * pattern,
unsigned int * insn )
static

Definition at line 2830 of file hppa-tdep.c.

References HPPA_INSN_SIZE, hppa_match_insns(), and insn_pattern::mask.

Referenced by hppa_in_solib_call_trampoline().

◆ hppa_pseudo_register_read()

static enum register_status hppa_pseudo_register_read ( struct gdbarch * gdbarch,
readable_regcache * regcache,
int regnum,
gdb_byte * buf )
static

◆ hppa_read_pc()

static CORE_ADDR hppa_read_pc ( readable_regcache * regcache)
static

◆ hppa_sign_extend()

static int hppa_sign_extend ( unsigned val,
unsigned bits )
static

Definition at line 107 of file hppa-tdep.c.

References bits.

Referenced by hppa_extract_17(), and hppa_extract_21().

◆ hppa_skip_prologue()

static CORE_ADDR hppa_skip_prologue ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

Definition at line 1807 of file hppa-tdep.c.

References after_prologue(), symtab_and_line::pc, and skip_prologue_hard_way().

Referenced by hppa_gdbarch_init().

◆ hppa_skip_trampoline_code()

CORE_ADDR hppa_skip_trampoline_code ( frame_info_ptr frame,
CORE_ADDR pc )

◆ hppa_stack_frame_destroyed_p()

static int hppa_stack_frame_destroyed_p ( struct gdbarch * gdbarch,
CORE_ADDR pc )
static

◆ hppa_stub_frame_prev_register()

static struct value * hppa_stub_frame_prev_register ( frame_info_ptr this_frame,
void ** this_prologue_cache,
int regnum )
static

◆ hppa_stub_frame_this_id()

static void hppa_stub_frame_this_id ( frame_info_ptr this_frame,
void ** this_prologue_cache,
struct frame_id * this_id )
static

Definition at line 2439 of file hppa-tdep.c.

References frame_id_build(), get_frame_func(), and hppa_stub_frame_unwind_cache().

◆ hppa_stub_frame_unwind_cache()

static struct hppa_stub_unwind_cache * hppa_stub_frame_unwind_cache ( frame_info_ptr this_frame,
void ** this_cache )
static

◆ hppa_stub_unwind_sniffer()

static int hppa_stub_unwind_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_cache )
static

◆ hppa_symbol_address()

CORE_ADDR hppa_symbol_address ( const char * sym)

◆ hppa_unwind_pc()

CORE_ADDR hppa_unwind_pc ( struct gdbarch * gdbarch,
frame_info_ptr next_frame )

◆ hppa_write_pc()

void hppa_write_pc ( struct regcache * regcache,
CORE_ADDR pc )

◆ inst_saves_fr()

static int inst_saves_fr ( unsigned long inst)
static

Definition at line 1493 of file hppa-tdep.c.

References hppa_extract_5r_store(), and hppa_extract_5R_store().

Referenced by hppa_frame_cache(), and skip_prologue_hard_way().

◆ inst_saves_gr()

static int inst_saves_gr ( unsigned long inst)
static

Definition at line 1452 of file hppa-tdep.c.

References hppa_extract_5R_store().

Referenced by hppa_frame_cache(), and skip_prologue_hard_way().

◆ internalize_unwinds()

static void internalize_unwinds ( struct objfile * objfile,
struct unwind_table_entry * table,
asection * section,
unsigned int entries,
size_t size,
CORE_ADDR text_offset )
static

◆ is_branch()

static int is_branch ( unsigned long inst)
static

◆ prologue_inst_adjust_sp()

static int prologue_inst_adjust_sp ( unsigned long inst)
static

◆ read_unwind_info()

static void read_unwind_info ( struct objfile * objfile)
static

◆ record_text_segment_lowaddr()

static void record_text_segment_lowaddr ( bfd * abfd,
asection * section,
void * data )
static

Definition at line 227 of file hppa-tdep.c.

References value.

Referenced by internalize_unwinds().

◆ skip_prologue_hard_way()

static CORE_ADDR skip_prologue_hard_way ( struct gdbarch * gdbarch,
CORE_ADDR pc,
int stop_before_branch )
static

◆ unwind_command()

static void unwind_command ( const char * exp,
int from_tty )
static

Variable Documentation

◆ hppa32_num_regs

const int hppa32_num_regs = 128
static

Definition at line 47 of file hppa-tdep.c.

Referenced by BP_MANIPULATION(), and hppa_gdbarch_init().

◆ hppa64_num_regs

const int hppa64_num_regs = 96
static

Definition at line 48 of file hppa-tdep.c.

Referenced by hppa64_register_name(), and hppa_gdbarch_init().

◆ hppa_break_insn

constexpr gdb_byte hppa_break_insn[] = {0x00, 0x01, 0x00, 0x04}
constexpr

Definition at line 592 of file hppa-tdep.c.

◆ hppa_debug

bool hppa_debug = false
static

◆ hppa_fallback_frame_unwind

const struct frame_unwind hppa_fallback_frame_unwind
static
Initial value:
=
{
"hppa prologue",
NULL,
}
int default_frame_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
enum unwind_stop_reason default_frame_unwind_stop_reason(frame_info_ptr this_frame, void **this_cache)
@ NORMAL_FRAME
Definition frame.h:187
static void hppa_fallback_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
Definition hppa-tdep.c:2379
static struct value * hppa_fallback_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
Definition hppa-tdep.c:2389

Definition at line 2399 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa_frame_unwind

const struct frame_unwind hppa_frame_unwind
static
Initial value:
=
{
"hppa unwind table",
NULL,
}
static int hppa_frame_unwind_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
Definition hppa-tdep.c:2277
static void hppa_frame_this_id(frame_info_ptr this_frame, void **this_cache, struct frame_id *this_id)
Definition hppa-tdep.c:2254
static struct value * hppa_frame_prev_register(frame_info_ptr this_frame, void **this_cache, int regnum)
Definition hppa-tdep.c:2267

Definition at line 2286 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().

◆ hppa_import_pic_stub

struct insn_pattern hppa_import_pic_stub[]
static
Initial value:
= {
{ 0x2a600000, 0xffe00000 },
{ 0x48350000, 0xffffb000 },
{ 0xeaa0c000, 0xffffffff },
{ 0x48330000, 0xffffb000 },
{ 0, 0 },
}

Definition at line 2771 of file hppa-tdep.c.

Referenced by hppa_in_solib_call_trampoline(), and hppa_skip_trampoline_code().

◆ hppa_import_stub

struct insn_pattern hppa_import_stub[]
static
Initial value:
= {
{ 0x2b600000, 0xffe00000 },
{ 0x48350000, 0xffffb000 },
{ 0xeaa0c000, 0xffffffff },
{ 0x48330000, 0xffffb000 },
{ 0, 0 }
}

Definition at line 2759 of file hppa-tdep.c.

Referenced by hppa_in_solib_call_trampoline(), and hppa_skip_trampoline_code().

◆ hppa_long_branch_pic_stub

struct insn_pattern hppa_long_branch_pic_stub[]
static
Initial value:
= {
{ 0xe8200000, 0xffe00000 },
{ 0x28200000, 0xffe00000 },
{ 0xe0202002, 0xffe02002 },
{ 0, 0 }
}

Definition at line 2749 of file hppa-tdep.c.

Referenced by hppa_in_solib_call_trampoline().

◆ hppa_long_branch_stub

struct insn_pattern hppa_long_branch_stub[]
static
Initial value:
= {
{ 0x20200000, 0xffe00000 },
{ 0xe0202002, 0xffe02002 },
{ 0, 0 }
}

Definition at line 2741 of file hppa-tdep.c.

Referenced by hppa_in_solib_call_trampoline().

◆ hppa_objfile_priv_data

const registry<objfile>::key<hppa_objfile_private> hppa_objfile_priv_data
static

Definition at line 88 of file hppa-tdep.c.

Referenced by find_unwind_entry(), and read_unwind_info().

◆ hppa_plt_stub

struct insn_pattern hppa_plt_stub[]
static
Initial value:
= {
{ 0xea9f1fdd, 0xffffffff },
{ 0xd6801c1e, 0xffffffff },
{ 0, 0 }
}

Definition at line 2783 of file hppa-tdep.c.

Referenced by hppa_skip_trampoline_code().

◆ hppa_stub_frame_unwind

const struct frame_unwind hppa_stub_frame_unwind
static
Initial value:
= {
"hppa stub",
NULL,
}
static int hppa_stub_unwind_sniffer(const struct frame_unwind *self, frame_info_ptr this_frame, void **this_cache)
Definition hppa-tdep.c:2465
static void hppa_stub_frame_this_id(frame_info_ptr this_frame, void **this_prologue_cache, struct frame_id *this_id)
Definition hppa-tdep.c:2439
static struct value * hppa_stub_frame_prev_register(frame_info_ptr this_frame, void **this_prologue_cache, int regnum)
Definition hppa-tdep.c:2451

Definition at line 2481 of file hppa-tdep.c.

Referenced by hppa_gdbarch_init().