92 #define MASK_14 0x3fff 93 #define MASK_21 0x1fffff 96 #define UNWIND_ENTRY_SIZE 16 97 #define STUB_UNWIND_ENTRY_SIZE 8 108 return (
int) (val >> (
bits - 1) ? (-(1 <<
bits)) | val : val);
116 return (
int) ((val & 0x1 ? (-(1 << (
bits - 1))) : 0) | val >> 1);
125 return ((word) >> (31 - (to)) & ((1 << ((to) - (from) + 1)) - 1));
149 return (word >> 16 &
MASK_5);
190 (word & 0x1) << 16, 17) << 2;
214 memset (priv, 0,
sizeof (*priv));
241 if ((section->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
242 == (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
244 bfd_vma
value = section->vma - section->filepos;
247 if (
value < *low_text_segment_address)
248 *low_text_segment_address =
value;
254 asection *section,
unsigned int entries,
265 char *buf = (
char *) alloca (
size);
276 low_text_segment_address = -1;
280 &low_text_segment_address);
282 text_offset = low_text_segment_address;
293 for (i = 0; i < entries; i++)
302 tmp = bfd_get_32 (
objfile->
obfd, (bfd_byte *) buf);
308 table[i].
reserved = (tmp >> 26) & 0x1;
309 table[i].
Entry_SR = (tmp >> 25) & 0x1;
310 table[i].
Entry_FR = (tmp >> 21) & 0xf;
311 table[i].
Entry_GR = (tmp >> 16) & 0x1f;
319 table[i].
cxx_info = (tmp >> 8) & 0x1;
323 table[i].
Save_SP = (tmp >> 4) & 0x1;
324 table[i].
Save_RP = (tmp >> 3) & 0x1;
326 table[i].
save_r19 = (tmp >> 1) & 0x1;
328 tmp = bfd_get_32 (
objfile->
obfd, (bfd_byte *) buf);
353 asection *unwind_sec, *stub_unwind_sec;
354 size_t unwind_size, stub_unwind_size, total_size;
355 unsigned index, unwind_entries;
356 unsigned stub_entries, total_entries;
379 unwind_sec = unwind_sec->next)
381 if (strcmp (unwind_sec->name,
"$UNWIND_START$") == 0
382 || strcmp (unwind_sec->name,
".PARISC.unwind") == 0)
384 unwind_size = bfd_section_size (
objfile->
obfd, unwind_sec);
387 total_entries += unwind_entries;
393 stub_unwind_sec = bfd_get_section_by_name (
objfile->
obfd,
"$UNWIND_END$");
397 stub_unwind_size = bfd_section_size (
objfile->
obfd, stub_unwind_sec);
402 stub_unwind_size = 0;
407 total_entries += stub_entries;
413 ui->last = total_entries - 1;
420 unwind_sec = unwind_sec->next)
422 if (strcmp (unwind_sec->name,
"$UNWIND_START$") == 0
423 || strcmp (unwind_sec->name,
".PARISC.unwind") == 0)
425 unwind_size = bfd_section_size (
objfile->
obfd, unwind_sec);
429 unwind_entries, unwind_size, text_offset);
430 index += unwind_entries;
435 if (stub_unwind_size > 0)
438 char *buf = (
char *) alloca (stub_unwind_size);
441 bfd_get_section_contents (
objfile->
obfd, stub_unwind_sec, buf,
442 0, stub_unwind_size);
445 for (i = 0; i < stub_entries; i++, index++)
454 ui->table[index].region_start += text_offset;
456 ui->table[index].stub_unwind.stub_type = bfd_get_8 (
objfile->
obfd,
459 ui->table[index].region_end
460 =
ui->table[index].region_start + 4 *
461 (bfd_get_16 (
objfile->
obfd, (bfd_byte *) buf) - 1);
474 if (obj_private == NULL)
488 int first, middle, last;
519 error (
_(
"Internal error reading unwind information."));
526 && pc >=
ui->cache->region_start
527 && pc <= ui->cache->region_end)
540 while (first <= last)
542 middle = (first + last) / 2;
543 if (pc >=
ui->table[middle].region_start
544 && pc <= ui->table[middle].region_end)
546 ui->cache = &
ui->table[middle];
550 return &
ui->table[middle];
553 if (pc < ui->table[middle].region_start)
590 if ((inst & 0xffffc000) == 0x37de0000
595 if (((inst & 0x0fc010e0) == 0x0fc010e0
596 || (inst & 0x0fc010e0) == 0x0fc010e0)
601 if (inst == 0xe840c000 || inst == 0xe840c002)
616 static const char *names[] = {
617 "flags",
"r1",
"rp",
"r3",
618 "r4",
"r5",
"r6",
"r7",
619 "r8",
"r9",
"r10",
"r11",
620 "r12",
"r13",
"r14",
"r15",
621 "r16",
"r17",
"r18",
"r19",
622 "r20",
"r21",
"r22",
"r23",
623 "r24",
"r25",
"r26",
"dp",
624 "ret0",
"ret1",
"sp",
"r31",
625 "sar",
"pcoqh",
"pcsqh",
"pcoqt",
626 "pcsqt",
"eiem",
"iir",
"isr",
627 "ior",
"ipsw",
"goto",
"sr4",
628 "sr0",
"sr1",
"sr2",
"sr3",
629 "sr5",
"sr6",
"sr7",
"cr0",
630 "cr8",
"cr9",
"ccr",
"cr12",
631 "cr13",
"cr24",
"cr25",
"cr26",
632 "mpsfu_high",
"mpsfu_low",
"mpsfu_ovflo",
"pad",
633 "fpsr",
"fpe1",
"fpe2",
"fpe3",
634 "fpe4",
"fpe5",
"fpe6",
"fpe7",
635 "fr4",
"fr4R",
"fr5",
"fr5R",
636 "fr6",
"fr6R",
"fr7",
"fr7R",
637 "fr8",
"fr8R",
"fr9",
"fr9R",
638 "fr10",
"fr10R",
"fr11",
"fr11R",
639 "fr12",
"fr12R",
"fr13",
"fr13R",
640 "fr14",
"fr14R",
"fr15",
"fr15R",
641 "fr16",
"fr16R",
"fr17",
"fr17R",
642 "fr18",
"fr18R",
"fr19",
"fr19R",
643 "fr20",
"fr20R",
"fr21",
"fr21R",
644 "fr22",
"fr22R",
"fr23",
"fr23R",
645 "fr24",
"fr24R",
"fr25",
"fr25R",
646 "fr26",
"fr26R",
"fr27",
"fr27R",
647 "fr28",
"fr28R",
"fr29",
"fr29R",
648 "fr30",
"fr30R",
"fr31",
"fr31R" 650 if (i < 0 || i >= (
sizeof (names) /
sizeof (*names)))
659 static const char *names[] = {
660 "flags",
"r1",
"rp",
"r3",
661 "r4",
"r5",
"r6",
"r7",
662 "r8",
"r9",
"r10",
"r11",
663 "r12",
"r13",
"r14",
"r15",
664 "r16",
"r17",
"r18",
"r19",
665 "r20",
"r21",
"r22",
"r23",
666 "r24",
"r25",
"r26",
"dp",
667 "ret0",
"ret1",
"sp",
"r31",
668 "sar",
"pcoqh",
"pcsqh",
"pcoqt",
669 "pcsqt",
"eiem",
"iir",
"isr",
670 "ior",
"ipsw",
"goto",
"sr4",
671 "sr0",
"sr1",
"sr2",
"sr3",
672 "sr5",
"sr6",
"sr7",
"cr0",
673 "cr8",
"cr9",
"ccr",
"cr12",
674 "cr13",
"cr24",
"cr25",
"cr26",
675 "mpsfu_high",
"mpsfu_low",
"mpsfu_ovflo",
"pad",
676 "fpsr",
"fpe1",
"fpe2",
"fpe3",
677 "fr4",
"fr5",
"fr6",
"fr7",
678 "fr8",
"fr9",
"fr10",
"fr11",
679 "fr12",
"fr13",
"fr14",
"fr15",
680 "fr16",
"fr17",
"fr18",
"fr19",
681 "fr20",
"fr21",
"fr22",
"fr23",
682 "fr24",
"fr25",
"fr26",
"fr27",
683 "fr28",
"fr29",
"fr30",
"fr31" 685 if (i < 0 || i >= (
sizeof (names) /
sizeof (*names)))
696 if (
reg >= 0 &&
reg <= 32)
700 if (
reg >= 72 &&
reg < 72 + 28 * 2 && !(
reg & 1))
739 for (write_pass = 0; write_pass < 2; write_pass++)
747 int small_struct = 0;
749 for (i = 0; i < nargs; i++)
751 struct value *arg = args[i];
757 memset (param_val, 0,
sizeof param_val);
768 struct_end - struct_ptr);
798 if (param_len > 4 && param_len < 8)
802 param_ptr += param_len;
803 if (param_len == 8 && !small_struct)
804 param_ptr =
align_up (param_ptr, 8);
815 write_memory (param_end - param_ptr, param_val, param_len);
822 int grreg = 26 - (param_ptr - 36) / 4;
823 int fpLreg = 72 + (param_ptr - 36) / 4 * 2;
824 int fpreg = 74 + (param_ptr - 32) / 8 * 4;
845 struct_end = sp +
align_up (struct_ptr, 64);
851 param_end = struct_end +
align_up (param_ptr, 64);
894 return (len == 1 || len == 2 || len == 4 || len == 8);
917 return (len == 4 || len == 8 || len == 16);
988 for (i = 0; i < nargs; i++)
990 struct value *arg = args[i];
993 const bfd_byte *valbuf;
1095 offset % 8, std::min (len, 8), valbuf);
1096 offset += std::min (len, 8);
1097 valbuf += std::min (len, 8);
1098 len -= std::min (len, 8);
1159 if (readbuf != NULL)
1162 if (writebuf != NULL)
1170 if (readbuf != NULL)
1172 if (writebuf != NULL)
1252 std::min (len, 8), readbuf);
1253 readbuf += std::min (len, 8);
1254 len -= std::min (len, 8);
1264 std::min (len, 8), writebuf);
1265 writebuf += std::min (len, 8);
1266 len -= std::min (len, 8);
1320 if (ipsw & 0x00200000)
1342 static int save_high21;
1345 if ((inst & 0xffffc000) == 0x37de0000)
1349 if ((inst & 0xffe00000) == 0x6fc00000)
1353 if ((inst & 0xffe00008) == 0x73c00008)
1354 return (inst & 0x1 ? -(1 << 13) : 0) | (((inst >> 4) & 0x3ff) << 3);
1358 if ((inst & 0xffe00000) == 0x2bc00000)
1364 if ((inst & 0xffff0000) == 0x343e0000)
1368 if ((inst & 0xffffffe0) == 0x2fd01220)
1480 switch ((inst >> 26) & 0x0f)
1483 switch ((inst >> 6) & 0x0f)
1522 if ((inst & 0xfc00dfc0) == 0x2c001200)
1524 if ((inst & 0xfc000002) == 0x70000002)
1527 if ((inst & 0xfc00df80) == 0x24001200)
1529 if ((inst & 0xfc000002) == 0x7c000000)
1543 int stop_before_branch)
1548 unsigned long inst, stack_remaining, save_gr, save_fr, save_rp, save_sp;
1549 unsigned long args_stored,
status, i, restart_gr, restart_fr;
1551 int final_iteration;
1579 for (i = 3; i < u->
Entry_GR + 3; i++)
1585 save_gr |= (1 << i);
1587 save_gr &= ~restart_gr;
1591 for (i = 12; i < u->
Entry_FR + 12; i++)
1592 save_fr |= (1 << i);
1593 save_fr &= ~restart_fr;
1595 final_iteration = 0;
1611 while (save_gr || save_fr || save_rp || save_sp || stack_remaining > 0
1614 unsigned int reg_num;
1615 unsigned long old_stack_remaining, old_save_gr, old_save_fr;
1616 unsigned long old_save_rp, old_save_sp, next_inst;
1620 old_save_gr = save_gr;
1621 old_save_fr = save_fr;
1622 old_save_rp = save_rp;
1623 old_save_sp = save_sp;
1624 old_stack_remaining = stack_remaining;
1638 if (inst == 0x6bc23fd9 || inst == 0x0fc212c1 || inst == 0x73c23fe1)
1643 if ((inst & 0xffffc000) == 0x6fc10000
1644 || (inst & 0xffffc00c) == 0x73c10008)
1649 if ((inst & 0xffe00000) == 0x37a00000
1650 || (inst & 0xffffffe0) == 0x081d0240)
1658 save_gr &= ~(1 << reg_num);
1688 save_fr &= ~(1 << reg_num);
1699 if ((inst & 0xfc000000) == 0x34000000
1725 if ((inst & 0xfc000000) != 0x34000000)
1739 if (
is_branch (inst) && stop_before_branch)
1752 && !(save_gr || save_fr || save_rp || save_sp || stack_remaining > 0)
1753 && old_save_gr == save_gr && old_save_fr == save_fr
1754 && old_save_rp == save_rp && old_save_sp == save_sp
1755 && old_stack_remaining == stack_remaining)
1763 if (final_iteration)
1766 final_iteration = 1;
1776 if (save_gr || (save_fr && !(restart_fr || restart_gr)))
1779 restart_gr = save_gr;
1780 restart_fr = save_fr;
1816 if (sal.
end < func_end)
1849 if (post_prologue_pc != 0)
1850 return std::max (
pc, post_prologue_pc);
1897 if ((*this_cache) != NULL)
1905 (*this_cache) = cache;
1919 for (i = 3; i < u->
Entry_GR + 3; i++)
1925 saved_gr_mask |= (1 << i);
1930 for (i = 12; i < u->
Entry_FR + 12; i++)
1931 saved_fr_mask |= (1 << i);
1948 int final_iteration = 0;
1950 int looking_for_sp = u->
Save_SP;
1951 int looking_for_rp = u->
Save_RP;
1984 if (prologue_end != 0 && end_pc > prologue_end)
1985 end_pc = prologue_end;
1990 ((saved_gr_mask || saved_fr_mask
1991 || looking_for_sp || looking_for_rp
2002 error (
_(
"Cannot read instruction at %s."),
2014 if (inst == 0x6bc23fd9)
2019 else if (inst == 0x6bc23fd1)
2024 else if (inst == 0x0fc212c1
2025 || inst == 0x73c23fe1)
2034 if ((inst & 0xffffc000) == 0x6fc10000
2035 || (inst & 0xffffc00c) == 0x73c10008)
2040 else if (inst == 0x08030241)
2047 if (
reg >= 3 &&
reg <= 18
2050 saved_gr_mask &= ~(1 <<
reg);
2055 else if ((inst & 0xfc00000c) == 0x70000008)
2062 if ((inst >> 26) == 0x1c)
2063 offset = (inst & 0x1 ? -(1 << 13) : 0)
2064 | (((inst >> 4) & 0x3ff) << 3);
2065 else if ((inst >> 26) == 0x03)
2089 if ((inst & 0xffffc000) == 0x34610000
2090 || (inst & 0xffffc000) == 0x37c10000)
2094 if (
reg >= 12 &&
reg <= 21)
2099 saved_fr_mask &= ~(1 <<
reg);
2116 if (final_iteration)
2121 final_iteration = 1;
2135 "prologue_end=%s) ",
2160 if (u->alloca_frame)
2161 fp -= u->Total_frame_size << 3;
2164 && (u->Save_SP || u->alloca_frame) && fp != 0)
2188 cache->base = this_sp - frame_size;
2261 cache->saved_regs[
reg].addr += cache->base;
2293 static struct value *
2295 void **this_cache,
int regnum)
2305 struct frame_info *this_frame,
void **this_cache)
2337 unsigned int frame_size = 0;
2343 "{ hppa_fallback_frame_cache (frame=%d) -> ",
2347 (*this_cache) = cache;
2356 for (pc = start_pc; pc < cur_pc; pc += 4)
2365 if (insn == 0x6bc23fd9)
2370 else if (insn == 0x0fc212c1
2371 || insn == 0x73c23fe1)
2381 frame_size, found_rp);
2384 cache->
base -= frame_size;
2413 static struct value *
2415 void **this_cache,
int regnum)
2466 void **this_prologue_cache,
2476 static struct value *
2478 void **this_prologue_cache,
int regnum)
2484 error (
_(
"Requesting registers from null frame."));
2538 if (ipsw & 0x00200000)
2582 if (exp != 0 && *exp != 0)
2603 #define pif(FLD) if (u->FLD) printf_unfiltered (" "#FLD); 2632 #define pin(FLD) printf_unfiltered ("\t"#FLD" = 0x%x\n", u->FLD); 2668 static struct type *
2677 static struct type *
2737 return (addr &= ~0x3);
2785 struct value *pcoq_val =
2808 { 0x20200000, 0xffe00000 },
2810 { 0xe0202002, 0xffe02002 },
2816 { 0xe8200000, 0xffe00000 },
2818 { 0x28200000, 0xffe00000 },
2820 { 0xe0202002, 0xffe02002 },
2826 { 0x2b600000, 0xffe00000 },
2828 { 0x48350000, 0xffffb000 },
2830 { 0xeaa0c000, 0xffffffff },
2832 { 0x48330000, 0xffffb000 },
2838 { 0x2a600000, 0xffe00000 },
2840 { 0x48350000, 0xffffb000 },
2842 { 0xeaa0c000, 0xffffffff },
2844 { 0x48330000, 0xffffb000 },
2850 { 0xea9f1fdd, 0xffffffff },
2852 { 0xd6801c1e, 0xffffffff },
2857 #define HPPA_MAX_INSN_PATTERN_LEN 4 2875 for (i = 0; pattern[i].
mask; i++)
2881 if ((insn[i] & pattern[i].
mask) == pattern[i].
data)
2900 while (pattern[len].
mask)
2997 warning (
_(
"Cannot resolve PLT stub at %s."),
3096 internal_error (__FILE__, __LINE__,
_(
"Unsupported address size: %d"),
3198 _(
"Print unwind table entry at given address."),
3203 Set whether hppa target specific debugging information should be displayed."),
3205 Show whether hppa target specific debugging information is displayed."),
_(
"\ 3206 This flag controls whether hppa target specific debugging information is\n\ 3207 displayed. This information is particularly useful for debugging frame\n\ 3208 unwinding problems."),
CORE_ADDR(* find_global_pointer)(struct gdbarch *, struct value *)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
void set_gdbarch_frame_align(struct gdbarch *gdbarch, gdbarch_frame_align_ftype frame_align)
void set_gdbarch_have_nonsteppable_watchpoint(struct gdbarch *gdbarch, int have_nonsteppable_watchpoint)
void set_gdbarch_cannot_fetch_register(struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype cannot_fetch_register)
static void internalize_unwinds(struct objfile *objfile, struct unwind_table_entry *table, asection *section, unsigned int entries, size_t size, CORE_ADDR text_offset)
char * hex_string(LONGEST num)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
CORE_ADDR get_frame_address_in_block(struct frame_info *this_frame)
static struct insn_pattern hppa_long_branch_pic_stub[]
static struct insn_pattern hppa_import_stub[]
int hppa_extract_5_load(unsigned word)
int putchar_unfiltered(int c)
CORE_ADDR hppa_read_pc(struct regcache *regcache)
static int hppa64_cannot_fetch_register(struct gdbarch *gdbarch, int regnum)
#define SECT_OFF_TEXT(objfile)
static int hppa_frame_unwind_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
struct type * builtin_func_ptr
CORE_ADDR get_frame_pc(struct frame_info *frame)
static CORE_ADDR hppa_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
void set_gdbarch_fp0_regnum(struct gdbarch *gdbarch, int fp0_regnum)
unsigned int Save_MRP_in_frame
#define MSYMBOL_LINKAGE_NAME(symbol)
void gdbarch_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
static void hppa_dump_tdep(struct gdbarch *gdbarch, struct ui_file *file)
static int hppa_stub_unwind_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_cache)
static int inst_saves_fr(unsigned long inst)
struct value * trad_frame_get_prev_register(struct frame_info *this_frame, struct trad_frame_saved_reg this_saved_regs[], int regnum)
static struct hppa_frame_cache * hppa_fallback_frame_cache(struct frame_info *this_frame, void **this_cache)
unsigned int Variable_Frame
int gdbarch_push_dummy_code_p(struct gdbarch *gdbarch)
int trad_frame_addr_p(struct trad_frame_saved_reg this_saved_regs[], int regnum)
unsigned int Two_Instruction_SP_Increment
unsigned int Cannot_unwind
struct bfd_section * the_bfd_section
#define BMSYMBOL_VALUE_ADDRESS(symbol)
CORE_ADDR hppa_skip_trampoline_code(struct frame_info *frame, CORE_ADDR pc)
void warning(const char *fmt,...)
int(* in_solib_call_trampoline)(struct gdbarch *gdbarch, CORE_ADDR pc)
void trad_frame_set_value(struct trad_frame_saved_reg this_saved_regs[], int regnum, LONGEST val)
struct gdbarch_tdep * tdep
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
static struct insn_pattern hppa_plt_stub[]
void set_gdbarch_addr_bits_remove(struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype addr_bits_remove)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
void _initialize_hppa_tdep(void)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
unsigned int Total_frame_size
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
void * memset(T *s, int c, size_t n)=delete
void internal_error(const char *file, int line, const char *fmt,...)
CORE_ADDR hppa_symbol_address(const char *sym)
#define obj_section_endaddr(s)
static CORE_ADDR after_prologue(CORE_ADDR pc)
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, int struct_return, CORE_ADDR struct_addr)
static struct value * hppa_stub_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
void regcache_cooked_write_part(struct regcache *regcache, int regnum, int offset, int len, const gdb_byte *buf)
struct unwind_table_entry::@75 stub_unwind
static CORE_ADDR hppa64_frame_align(struct gdbarch *gdbarch, CORE_ADDR addr)
const struct floatformat * floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN]
#define ALL_OBJFILE_OSECTIONS(objfile, osect)
struct gdbarch_list * gdbarch_list_lookup_by_info(struct gdbarch_list *arches, const struct gdbarch_info *info)
int dummy_call_sequence_reg
int gdbarch_num_regs(struct gdbarch *gdbarch)
struct bound_minimal_symbol hppa_lookup_stub_minimal_symbol(const char *name, enum unwind_stub_types stub_type)
const struct bfd_arch_info * bfd_arch_info
struct trad_frame_saved_reg * saved_regs
void set_gdbarch_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
void(* unwind_adjust_stub)(struct frame_info *this_frame, CORE_ADDR base, struct trad_frame_saved_reg *saved_regs)
static void read_unwind_info(struct objfile *objfile)
static const struct objfile_data * hppa_objfile_priv_data
#define bits(obj, st, fn)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
#define MSYMBOL_VALUE(symbol)
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)
static struct hppa_frame_cache * hppa_frame_cache(struct frame_info *this_frame, void **this_cache)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
#define host_address_to_string(ADDR)
unsigned int cxx_try_catch
struct value * frame_unwind_got_constant(struct frame_info *frame, int regnum, ULONGEST val)
static int hppa_in_dyncall(CORE_ADDR pc)
static CORE_ADDR hppa_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
int hppa_in_solib_call_trampoline(struct gdbarch *gdbarch, CORE_ADDR pc)
void gdbarch_register(enum bfd_architecture bfd_architecture, gdbarch_init_ftype *init, gdbarch_dump_tdep_ftype *dump_tdep)
static struct gdbarch * hppa_gdbarch_init(struct gdbarch_info info, struct gdbarch_list *arches)
CORE_ADDR dummy_call_sequence_addr
static CORE_ADDR skip_prologue_hard_way(struct gdbarch *gdbarch, CORE_ADDR pc, int stop_before_branch)
static struct unwind_table_entry * hppa_find_unwind_entry_in_block(struct frame_info *this_frame)
static CORE_ADDR hppa_fetch_pointer_argument(struct frame_info *frame, int argi, struct type *type)
unsigned int Cleanup_defined
void set_gdbarch_register_type(struct gdbarch *gdbarch, gdbarch_register_type_ftype register_type)
struct type * check_typedef(struct type *type)
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
const gdb_byte * value_contents(struct value *value)
static struct value * hppa_fallback_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
CORE_ADDR gdbarch_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
static const struct frame_unwind hppa_stub_frame_unwind
unsigned hppa_extract_5r_store(unsigned word)
objfile(bfd *, const char *, objfile_flags)
typedef BP_MANIPULATION(hppa_break_insn)
void set_gdbarch_stack_frame_destroyed_p(struct gdbarch *gdbarch, gdbarch_stack_frame_destroyed_p_ftype stack_frame_destroyed_p)
static const char * hppa64_register_name(struct gdbarch *gdbarch, int i)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
int safe_frame_unwind_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
int hppa_extract_14(unsigned word)
void set_gdbarch_dummy_id(struct gdbarch *gdbarch, gdbarch_dummy_id_ftype dummy_id)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
const gdb_byte * value_contents_all(struct value *value)
static int hppa64_cannot_store_register(struct gdbarch *gdbarch, int regnum)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
static int is_branch(unsigned long inst)
unsigned int MPE_XL_interrupt_marker
#define ANOFFSET(secoff, whichone)
struct gdbarch * get_objfile_arch(const struct objfile *objfile)
void set_gdbarch_cannot_store_register(struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype cannot_store_register)
static int hppa_low_hppa_sign_extend(unsigned val, unsigned bits)
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
static int inst_saves_gr(unsigned long inst)
void set_gdbarch_unwind_pc(struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype unwind_pc)
struct type * builtin_uint32
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static struct frame_id hppa_dummy_id(struct gdbarch *gdbarch, struct frame_info *this_frame)
unsigned int alloca_frame
unsigned int sched_entry_seq
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
struct value * value_cast(struct type *type, struct value *arg2)
void set_gdbarch_read_pc(struct gdbarch *gdbarch, gdbarch_read_pc_ftype read_pc)
static struct value * hppa_frame_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
static int hppa32_cannot_fetch_register(struct gdbarch *gdbarch, int regnum)
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)
void set_gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, gdbarch_convert_from_func_ptr_addr_ftype convert_from_func_ptr_addr)
struct trad_frame_saved_reg * saved_regs
void printf_unfiltered(const char *format,...)
struct cmd_list_element * setdebuglist
static struct type * hppa64_register_type(struct gdbarch *gdbarch, int regnum)
struct obj_section * find_pc_section(CORE_ADDR pc)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
int gdbarch_in_solib_return_trampoline(struct gdbarch *gdbarch, CORE_ADDR pc, const char *name)
struct cmd_list_element * maintenanceprintlist
unsigned int Separate_Package_Body
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype breakpoint_kind_from_pc)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
unsigned int Millicode_save_sr0
void set_gdbarch_long_long_bit(struct gdbarch *gdbarch, int long_long_bit)
LONGEST unpack_long(struct type *type, const gdb_byte *valaddr)
#define STUB_UNWIND_ENTRY_SIZE
int hppa_extract_17(unsigned word)
void hppa_write_pc(struct regcache *regcache, CORE_ADDR pc)
static int hppa64_floating_p(const struct type *type)
static const struct frame_unwind hppa_frame_unwind
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, int struct_return, CORE_ADDR struct_addr)
struct hppa_unwind_info * unwind_info
CORE_ADDR hppa_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
#define HPPA_MAX_INSN_PATTERN_LEN
static struct insn_pattern hppa_import_pic_stub[]
unsigned int HP_UX_interrupt_marker
void set_gdbarch_pseudo_register_read(struct gdbarch *gdbarch, gdbarch_pseudo_register_read_ftype pseudo_register_read)
ULONGEST align_up(ULONGEST v, int n)
#define ALL_MSYMBOLS(objfile, m)
#define TYPE_TARGET_TYPE(thistype)
struct type * builtin_double
static const struct frame_unwind hppa_fallback_frame_unwind
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)
int frame_relative_level(struct frame_info *fi)
CORE_ADDR parse_and_eval_address(const char *exp)
#define UNWIND_ENTRY_SIZE
#define TYPE_CODE(thistype)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
static CORE_ADDR hppa64_convert_code_addr_to_fptr(struct gdbarch *gdbarch, CORE_ADDR code)
static struct hppa_stub_unwind_cache * hppa_stub_frame_unwind_cache(struct frame_info *this_frame, void **this_cache)
static int hppa64_integral_or_pointer_p(const struct type *type)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static int in_plt_section(CORE_ADDR pc)
static int prologue_inst_adjust_sp(unsigned long inst)
struct minimal_symbol * minsym
#define obj_section_addr(s)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static CORE_ADDR hppa32_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
static void hppa_fallback_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
static struct type * hppa32_register_type(struct gdbarch *gdbarch, int regnum)
enum register_status regcache_cooked_read(struct regcache *regcache, int regnum, gdb_byte *buf)
void set_gdbarch_fetch_pointer_argument(struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype fetch_pointer_argument)
int hppa_get_field(unsigned word, int from, int to)
static int compare_unwind_entries(const void *arg1, const void *arg2)
static void hppa_frame_this_id(struct frame_info *this_frame, void **this_cache, struct frame_id *this_id)
CORE_ADDR(* solib_get_text_base)(struct objfile *objfile)
static int hppa32_cannot_store_register(struct gdbarch *gdbarch, int regnum)
static int hppa_sign_extend(unsigned val, unsigned bits)
unsigned int Frame_Extension_Millicode
static int hppa_match_insns_relaxed(struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
static const int hppa64_num_regs
unsigned long long ULONGEST
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
static struct hppa_objfile_private * hppa_init_objfile_priv_data(struct objfile *objfile)
struct unwind_table_entry * cache
int register_size(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
struct type * value_type(const struct value *value)
void set_gdbarch_long_bit(struct gdbarch *gdbarch, int long_bit)
enum register_status regcache_cooked_read_part(struct regcache *regcache, int regnum, int offset, int len, gdb_byte *buf)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
struct cmd_list_element * showdebuglist
static int hppa_stack_frame_destroyed_p(struct gdbarch *gdbarch, CORE_ADDR pc)
void set_gdbarch_long_double_format(struct gdbarch *gdbarch, const struct floatformat **long_double_format)
static int hppa64_dwarf_reg_to_regnum(struct gdbarch *gdbarch, int reg)
static CORE_ADDR hppa32_frame_align(struct gdbarch *gdbarch, CORE_ADDR addr)
static void hppa_stub_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
int core_addr_greaterthan(CORE_ADDR lhs, CORE_ADDR rhs)
#define TYPE_LENGTH(thistype)
void set_gdbarch_ptr_bit(struct gdbarch *gdbarch, int ptr_bit)
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype push_dummy_call)
static void record_text_segment_lowaddr(bfd *abfd, asection *section, void *data)
struct unwind_table_entry * find_unwind_entry(CORE_ADDR pc)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
struct section_offsets * section_offsets
void gdb_flush(struct ui_file *file)
struct type * builtin_uint64
void set_gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, gdbarch_sw_breakpoint_from_kind_ftype sw_breakpoint_from_kind)
CORE_ADDR read_memory_typed_address(CORE_ADDR addr, struct type *type)
#define ALL_OBJFILES(obj)
static CORE_ADDR hppa_find_global_pointer(struct gdbarch *gdbarch, struct value *function)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
void set_gdbarch_skip_prologue(struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype skip_prologue)
unsigned hppa_extract_5R_store(unsigned word)
static const int hppa32_num_regs
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
static int hppa_match_insns(struct gdbarch *gdbarch, CORE_ADDR pc, struct insn_pattern *pattern, unsigned int *insn)
enum bfd_endian byte_order
struct unwind_table_entry * table
void set_gdbarch_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype register_name)
CORE_ADDR get_frame_func(struct frame_info *this_frame)
void error(const char *fmt,...)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, struct gdbarch_tdep *tdep)
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype inner_than)
unsigned int Stack_Overflow_Check
static enum register_status hppa_pseudo_register_read(struct gdbarch *gdbarch, struct regcache *regcache, int regnum, gdb_byte *buf)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
constexpr gdb_byte hppa_break_insn[]
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
static struct insn_pattern hppa_long_branch_stub[]
int hppa_extract_21(unsigned word)
unsigned int Region_description
static void unwind_command(const char *exp, int from_tty)
struct type * builtin_float
struct obj_section * sections_end
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)