91 #define MASK_14 0x3fff
92 #define MASK_21 0x1fffff
95 #define UNWIND_ENTRY_SIZE 16
96 #define STUB_UNWIND_ENTRY_SIZE 8
107 return (
int) (val >> (bits - 1) ? (-1 << bits) | val : val);
115 return (
int) ((val & 0x1 ? (-1 << (bits - 1)) : 0) | val >> 1);
124 return ((word) >> (31 - (to)) & ((1 << ((to) - (from) + 1)) - 1));
148 return (word >> 16 &
MASK_5);
189 (word & 0x1) << 16, 17) << 2;
212 set_objfile_data (objfile, hppa_objfile_priv_data, priv);
213 memset (priv, 0,
sizeof (*priv));
240 if ((section->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
241 == (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
243 bfd_vma
value = section->vma - section->filepos;
246 if (value < *low_text_segment_address)
247 *low_text_segment_address = value;
253 asection *section,
unsigned int entries,
264 char *buf = alloca (size);
275 low_text_segment_address = -1;
277 bfd_map_over_sections (objfile->
obfd,
279 &low_text_segment_address);
281 text_offset = low_text_segment_address;
288 bfd_get_section_contents (objfile->
obfd, section, buf, 0, size);
292 for (i = 0; i < entries; i++)
298 table[i].
region_end = bfd_get_32 (objfile->
obfd, (bfd_byte *) buf);
301 tmp = bfd_get_32 (objfile->
obfd, (bfd_byte *) buf);
307 table[i].
reserved = (tmp >> 26) & 0x1;
308 table[i].
Entry_SR = (tmp >> 25) & 0x1;
309 table[i].
Entry_FR = (tmp >> 21) & 0xf;
310 table[i].
Entry_GR = (tmp >> 16) & 0x1f;
318 table[i].
cxx_info = (tmp >> 8) & 0x1;
322 table[i].
Save_SP = (tmp >> 4) & 0x1;
323 table[i].
Save_RP = (tmp >> 3) & 0x1;
325 table[i].
save_r19 = (tmp >> 1) & 0x1;
327 tmp = bfd_get_32 (objfile->
obfd, (bfd_byte *) buf);
352 asection *unwind_sec, *stub_unwind_sec;
353 size_t unwind_size, stub_unwind_size, total_size;
354 unsigned index, unwind_entries;
355 unsigned stub_entries, total_entries;
376 for (unwind_sec = objfile->
obfd->sections;
378 unwind_sec = unwind_sec->next)
380 if (strcmp (unwind_sec->name,
"$UNWIND_START$") == 0
381 || strcmp (unwind_sec->name,
".PARISC.unwind") == 0)
383 unwind_size = bfd_section_size (objfile->
obfd, unwind_sec);
386 total_entries += unwind_entries;
392 stub_unwind_sec = bfd_get_section_by_name (objfile->
obfd,
"$UNWIND_END$");
396 stub_unwind_size = bfd_section_size (objfile->
obfd, stub_unwind_sec);
401 stub_unwind_size = 0;
406 total_entries += stub_entries;
412 ui->
last = total_entries - 1;
417 for (unwind_sec = objfile->
obfd->sections;
419 unwind_sec = unwind_sec->next)
421 if (strcmp (unwind_sec->name,
"$UNWIND_START$") == 0
422 || strcmp (unwind_sec->name,
".PARISC.unwind") == 0)
424 unwind_size = bfd_section_size (objfile->
obfd, unwind_sec);
428 unwind_entries, unwind_size, text_offset);
429 index += unwind_entries;
434 if (stub_unwind_size > 0)
437 char *buf = alloca (stub_unwind_size);
440 bfd_get_section_contents (objfile->
obfd, stub_unwind_sec, buf,
441 0, stub_unwind_size);
444 for (i = 0; i < stub_entries; i++, index++)
460 (bfd_get_16 (objfile->
obfd, (bfd_byte *) buf) - 1);
472 objfile_data (objfile, hppa_objfile_priv_data);
473 if (obj_private == NULL)
487 int first, middle, last;
507 priv = objfile_data (objfile, hppa_objfile_priv_data);
514 priv = objfile_data (objfile, hppa_objfile_priv_data);
516 error (
_(
"Internal error reading unwind information."));
524 && pc <= ui->cache->region_end)
537 while (first <= last)
539 middle = (first + last) / 2;
541 && pc <= ui->table[middle].region_end)
547 return &ui->
table[middle];
550 if (pc < ui->table[middle].region_start)
587 if ((inst & 0xffffc000) == 0x37de0000
592 if (((inst & 0x0fc010e0) == 0x0fc010e0
593 || (inst & 0x0fc010e0) == 0x0fc010e0)
598 if (inst == 0xe840c000 || inst == 0xe840c002)
604 static const unsigned char *
607 static const unsigned char breakpoint[] = {0x00, 0x01, 0x00, 0x04};
608 (*len) =
sizeof (breakpoint);
617 static char *names[] = {
618 "flags",
"r1",
"rp",
"r3",
619 "r4",
"r5",
"r6",
"r7",
620 "r8",
"r9",
"r10",
"r11",
621 "r12",
"r13",
"r14",
"r15",
622 "r16",
"r17",
"r18",
"r19",
623 "r20",
"r21",
"r22",
"r23",
624 "r24",
"r25",
"r26",
"dp",
625 "ret0",
"ret1",
"sp",
"r31",
626 "sar",
"pcoqh",
"pcsqh",
"pcoqt",
627 "pcsqt",
"eiem",
"iir",
"isr",
628 "ior",
"ipsw",
"goto",
"sr4",
629 "sr0",
"sr1",
"sr2",
"sr3",
630 "sr5",
"sr6",
"sr7",
"cr0",
631 "cr8",
"cr9",
"ccr",
"cr12",
632 "cr13",
"cr24",
"cr25",
"cr26",
633 "mpsfu_high",
"mpsfu_low",
"mpsfu_ovflo",
"pad",
634 "fpsr",
"fpe1",
"fpe2",
"fpe3",
635 "fpe4",
"fpe5",
"fpe6",
"fpe7",
636 "fr4",
"fr4R",
"fr5",
"fr5R",
637 "fr6",
"fr6R",
"fr7",
"fr7R",
638 "fr8",
"fr8R",
"fr9",
"fr9R",
639 "fr10",
"fr10R",
"fr11",
"fr11R",
640 "fr12",
"fr12R",
"fr13",
"fr13R",
641 "fr14",
"fr14R",
"fr15",
"fr15R",
642 "fr16",
"fr16R",
"fr17",
"fr17R",
643 "fr18",
"fr18R",
"fr19",
"fr19R",
644 "fr20",
"fr20R",
"fr21",
"fr21R",
645 "fr22",
"fr22R",
"fr23",
"fr23R",
646 "fr24",
"fr24R",
"fr25",
"fr25R",
647 "fr26",
"fr26R",
"fr27",
"fr27R",
648 "fr28",
"fr28R",
"fr29",
"fr29R",
649 "fr30",
"fr30R",
"fr31",
"fr31R"
651 if (i < 0 || i >= (
sizeof (names) /
sizeof (*names)))
660 static char *names[] = {
661 "flags",
"r1",
"rp",
"r3",
662 "r4",
"r5",
"r6",
"r7",
663 "r8",
"r9",
"r10",
"r11",
664 "r12",
"r13",
"r14",
"r15",
665 "r16",
"r17",
"r18",
"r19",
666 "r20",
"r21",
"r22",
"r23",
667 "r24",
"r25",
"r26",
"dp",
668 "ret0",
"ret1",
"sp",
"r31",
669 "sar",
"pcoqh",
"pcsqh",
"pcoqt",
670 "pcsqt",
"eiem",
"iir",
"isr",
671 "ior",
"ipsw",
"goto",
"sr4",
672 "sr0",
"sr1",
"sr2",
"sr3",
673 "sr5",
"sr6",
"sr7",
"cr0",
674 "cr8",
"cr9",
"ccr",
"cr12",
675 "cr13",
"cr24",
"cr25",
"cr26",
676 "mpsfu_high",
"mpsfu_low",
"mpsfu_ovflo",
"pad",
677 "fpsr",
"fpe1",
"fpe2",
"fpe3",
678 "fr4",
"fr5",
"fr6",
"fr7",
679 "fr8",
"fr9",
"fr10",
"fr11",
680 "fr12",
"fr13",
"fr14",
"fr15",
681 "fr16",
"fr17",
"fr18",
"fr19",
682 "fr20",
"fr21",
"fr22",
"fr23",
683 "fr24",
"fr25",
"fr26",
"fr27",
684 "fr28",
"fr29",
"fr30",
"fr31"
686 if (i < 0 || i >= (
sizeof (names) /
sizeof (*names)))
701 if (reg >= 72 && reg < 72 + 28 * 2 && !(reg & 1))
704 warning (
_(
"Unmapped DWARF DBX Register #%d encountered."), reg);
745 for (write_pass = 0; write_pass < 2; write_pass++)
753 int small_struct = 0;
755 for (i = 0; i < nargs; i++)
757 struct value *arg = args[i];
763 memset (param_val, 0,
sizeof param_val);
774 struct_end - struct_ptr);
797 memcpy (param_val + param_len -
TYPE_LENGTH (type),
804 if (param_len > 4 && param_len < 8)
808 param_ptr += param_len;
809 if (param_len == 8 && !small_struct)
810 param_ptr =
align_up (param_ptr, 8);
821 write_memory (param_end - param_ptr, param_val, param_len);
828 int grreg = 26 - (param_ptr - 36) / 4;
829 int fpLreg = 72 + (param_ptr - 36) / 4 * 2;
830 int fpreg = 74 + (param_ptr - 32) / 8 * 4;
851 struct_end = sp +
align_up (struct_ptr, 64);
857 param_end = struct_end +
align_up (param_ptr, 64);
900 return (len == 1 || len == 2 || len == 4 || len == 8);
922 return (len == 4 || len == 8 || len == 16);
993 for (i = 0; i < nargs; i++)
995 struct value *arg = args[i];
998 const bfd_byte *valbuf;
1100 offset % 8,
min (len, 8), valbuf);
1101 offset +=
min (len, 8);
1102 valbuf +=
min (len, 8);
1103 len -=
min (len, 8);
1164 if (readbuf != NULL)
1167 if (writebuf != NULL)
1175 if (readbuf != NULL)
1177 if (writebuf != NULL)
1257 min (len, 8), readbuf);
1258 readbuf +=
min (len, 8);
1259 len -=
min (len, 8);
1269 min (len, 8), writebuf);
1270 writebuf +=
min (len, 8);
1271 len -=
min (len, 8);
1325 if (ipsw & 0x00200000)
1347 static int save_high21;
1350 if ((inst & 0xffffc000) == 0x37de0000)
1354 if ((inst & 0xffe00000) == 0x6fc00000)
1358 if ((inst & 0xffe00008) == 0x73c00008)
1359 return (inst & 0x1 ? -1 << 13 : 0) | (((inst >> 4) & 0x3ff) << 3);
1363 if ((inst & 0xffe00000) == 0x2bc00000)
1369 if ((inst & 0xffff0000) == 0x343e0000)
1373 if ((inst & 0xffffffe0) == 0x2fd01220)
1485 switch ((inst >> 26) & 0x0f)
1488 switch ((inst >> 6) & 0x0f)
1527 if ((inst & 0xfc00dfc0) == 0x2c001200)
1529 if ((inst & 0xfc000002) == 0x70000002)
1532 if ((inst & 0xfc00df80) == 0x24001200)
1534 if ((inst & 0xfc000002) == 0x7c000000)
1548 int stop_before_branch)
1553 unsigned long inst, stack_remaining, save_gr, save_fr, save_rp, save_sp;
1554 unsigned long args_stored,
status, i, restart_gr, restart_fr;
1556 int final_iteration;
1584 for (i = 3; i < u->
Entry_GR + 3; i++)
1590 save_gr |= (1 << i);
1592 save_gr &= ~restart_gr;
1596 for (i = 12; i < u->
Entry_FR + 12; i++)
1597 save_fr |= (1 << i);
1598 save_fr &= ~restart_fr;
1600 final_iteration = 0;
1616 while (save_gr || save_fr || save_rp || save_sp || stack_remaining > 0
1619 unsigned int reg_num;
1620 unsigned long old_stack_remaining, old_save_gr, old_save_fr;
1621 unsigned long old_save_rp, old_save_sp, next_inst;
1625 old_save_gr = save_gr;
1626 old_save_fr = save_fr;
1627 old_save_rp = save_rp;
1628 old_save_sp = save_sp;
1629 old_stack_remaining = stack_remaining;
1643 if (inst == 0x6bc23fd9 || inst == 0x0fc212c1 || inst == 0x73c23fe1)
1648 if ((inst & 0xffffc000) == 0x6fc10000
1649 || (inst & 0xffffc00c) == 0x73c10008)
1654 if ((inst & 0xffe00000) == 0x37a00000
1655 || (inst & 0xffffffe0) == 0x081d0240)
1663 save_gr &= ~(1 << reg_num);
1693 save_fr &= ~(1 << reg_num);
1704 if ((inst & 0xfc000000) == 0x34000000
1730 if ((inst & 0xfc000000) != 0x34000000)
1744 if (
is_branch (inst) && stop_before_branch)
1757 && !(save_gr || save_fr || save_rp || save_sp || stack_remaining > 0)
1758 && old_save_gr == save_gr && old_save_fr == save_fr
1759 && old_save_rp == save_rp && old_save_sp == save_sp
1760 && old_stack_remaining == stack_remaining)
1768 if (final_iteration)
1771 final_iteration = 1;
1781 if (save_gr || (save_fr && !(restart_fr || restart_gr)))
1784 restart_gr = save_gr;
1785 restart_fr = save_fr;
1821 if (sal.
end < func_end)
1854 if (post_prologue_pc != 0)
1855 return max (pc, post_prologue_pc);
1902 if ((*this_cache) != NULL)
1907 return (*this_cache);
1910 (*this_cache) = cache;
1919 return (*this_cache);
1924 for (i = 3; i < u->
Entry_GR + 3; i++)
1930 saved_gr_mask |= (1 << i);
1935 for (i = 12; i < u->
Entry_FR + 12; i++)
1936 saved_fr_mask |= (1 << i);
1953 int final_iteration = 0;
1955 int looking_for_sp = u->
Save_SP;
1956 int looking_for_rp = u->
Save_RP;
1989 if (prologue_end != 0 && end_pc > prologue_end)
1990 end_pc = prologue_end;
1995 ((saved_gr_mask || saved_fr_mask
1996 || looking_for_sp || looking_for_rp
2007 error (
_(
"Cannot read instruction at %s."),
2009 return (*this_cache);
2019 if (inst == 0x6bc23fd9)
2024 else if (inst == 0x6bc23fd1)
2029 else if (inst == 0x0fc212c1
2030 || inst == 0x73c23fe1)
2039 if ((inst & 0xffffc000) == 0x6fc10000
2040 || (inst & 0xffffc00c) == 0x73c10008)
2045 else if (inst == 0x08030241)
2052 if (reg >= 3 && reg <= 18
2055 saved_gr_mask &= ~(1 << reg);
2060 else if ((inst & 0xfc00000c) == 0x70000008)
2067 if ((inst >> 26) == 0x1c)
2068 offset = (inst & 0x1 ? -1 << 13 : 0)
2069 | (((inst >> 4) & 0x3ff) << 3);
2070 else if ((inst >> 26) == 0x03)
2094 if ((inst & 0xffffc000) == 0x34610000
2095 || (inst & 0xffffc000) == 0x37c10000)
2099 if (reg >= 12 && reg <= 21)
2104 saved_fr_mask &= ~(1 << reg);
2121 if (final_iteration)
2126 final_iteration = 1;
2140 "prologue_end=%s) ",
2165 if (u->alloca_frame)
2166 fp -= u->Total_frame_size << 3;
2169 && (u->Save_SP || u->alloca_frame) && fp != 0)
2193 cache->base = this_sp - frame_size;
2266 cache->saved_regs[reg].addr += cache->base;
2282 return (*this_cache);
2299 static struct value *
2301 void **this_cache,
int regnum)
2311 struct frame_info *this_frame,
void **this_cache)
2343 unsigned int frame_size = 0;
2349 "{ hppa_fallback_frame_cache (frame=%d) -> ",
2353 (*this_cache) = cache;
2362 for (pc = start_pc; pc < cur_pc; pc += 4)
2371 if (insn == 0x6bc23fd9)
2376 else if (insn == 0x0fc212c1
2377 || insn == 0x73c23fe1)
2387 frame_size, found_rp);
2390 cache->
base -= frame_size;
2419 static struct value *
2421 void **this_cache,
int regnum)
2487 void **this_prologue_cache,
2497 static struct value *
2499 void **this_prologue_cache,
int regnum)
2505 error (
_(
"Requesting registers from null frame."));
2559 if (ipsw & 0x00200000)
2603 if (exp != 0 && *exp != 0)
2624 #define pif(FLD) if (u->FLD) printf_unfiltered (" "#FLD);
2653 #define pin(FLD) printf_unfiltered ("\t"#FLD" = 0x%x\n", u->FLD);
2689 static struct type *
2698 static struct type *
2758 return (addr &= ~0x3);
2806 struct value *pcoq_val =
2829 { 0x20200000, 0xffe00000 },
2831 { 0xe0202002, 0xffe02002 },
2837 { 0xe8200000, 0xffe00000 },
2839 { 0x28200000, 0xffe00000 },
2841 { 0xe0202002, 0xffe02002 },
2847 { 0x2b600000, 0xffe00000 },
2849 { 0x48350000, 0xffffb000 },
2851 { 0xeaa0c000, 0xffffffff },
2853 { 0x48330000, 0xffffb000 },
2859 { 0x2a600000, 0xffe00000 },
2861 { 0x48350000, 0xffffb000 },
2863 { 0xeaa0c000, 0xffffffff },
2865 { 0x48330000, 0xffffb000 },
2871 { 0xea9f1fdd, 0xffffffff },
2873 { 0xd6801c1e, 0xffffffff },
2878 #define HPPA_MAX_INSN_PATTERN_LEN 4
2896 for (i = 0; pattern[i].
mask; i++)
2902 if ((insn[i] & pattern[i].
mask) == pattern[i].
data)
2921 while (pattern[len].
mask)
2924 for (offset = 0; offset <
len; offset++)
2966 hppa_long_branch_pic_stub, insn));
3018 warning (
_(
"Cannot resolve PLT stub at %s."),
3067 static struct gdbarch *
3071 struct gdbarch *gdbarch;
3077 if (bfd_get_flavour (info.
abfd) == bfd_target_som_flavour)
3125 internal_error (__FILE__, __LINE__,
_(
"Unsupported address size: %d"),
3230 hppa_objfile_priv_data = register_objfile_data ();
3233 _(
"Print unwind table entry at given address."),
3238 Set whether hppa target specific debugging information should be displayed."),
3240 Show whether hppa target specific debugging information is displayed."),
_(
"\
3241 This flag controls whether hppa target specific debugging information is\n\
3242 displayed. This information is particularly useful for debugging frame\n\
3243 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)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
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)
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,...)
initialize_file_ftype _initialize_hppa_tdep
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 type ** const(pascal_builtin_types[])
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
void set_gdbarch_addr_bits_remove(struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype addr_bits_remove)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
static const char * hppa32_register_name(struct gdbarch *gdbarch, int i)
unsigned int Total_frame_size
struct ui_file * gdb_stdout
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
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)
void regcache_cooked_write_part(struct regcache *regcache, int regnum, int offset, int len, const gdb_byte *buf)
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)
enum gdb_osabi gdbarch_osabi(struct gdbarch *gdbarch)
#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)
void store_unsigned_integer(gdb_byte *, int, enum bfd_endian, ULONGEST)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR 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)
#define obj_section_addr(s)
struct obstack objfile_obstack
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)
#define ALL_OBJFILES(obj)
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)
void initialize_file_ftype(void)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
unsigned hppa_extract_5r_store(unsigned word)
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)
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,...)
mach_port_t mach_port_t name mach_port_t mach_port_t name error_t int status
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
const gdb_byte * value_contents_all(struct value *value)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, cmd_cfunc_ftype *fun, const char *doc, struct cmd_list_element **list)
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)
void set_gdbarch_breakpoint_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype breakpoint_from_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
struct value * value_cast(struct type *type, struct value *arg2)
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
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 ui_file * gdb_stdlog
struct cmd_list_element * maintenanceprintlist
unsigned int Separate_Package_Body
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 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
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct frame_info *this_frame)
unsigned int HP_UX_interrupt_marker
struct unwind_table_entry::@86 stub_unwind
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 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)
struct obj_section * sections_end
static int in_plt_section(CORE_ADDR pc)
static int prologue_inst_adjust_sp(unsigned long inst)
struct minimal_symbol * minsym
const char * host_address_to_string(const void *addr)
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)
static const unsigned char * hppa_breakpoint_from_pc(struct gdbarch *gdbarch, CORE_ADDR *pc, int *len)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
struct cmd_list_element * showdebuglist
static void unwind_command(char *exp, int from_tty)
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)
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
CORE_ADDR read_memory_typed_address(CORE_ADDR addr, struct type *type)
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)
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_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
void set_gdbarch_print_insn(struct gdbarch *gdbarch, gdbarch_print_insn_ftype print_insn)
int hppa_extract_21(unsigned word)
unsigned int Region_description
struct type * builtin_float
const ULONGEST const LONGEST len