diff options
author | Daniel Jacobowitz <drow@false.org> | 2007-02-27 20:17:19 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2007-02-27 20:17:19 +0000 |
commit | 93d42b302eb91d758191675dcaf3bd90323b5224 (patch) | |
tree | eb45d933ae4389284a4e1a14f2d1c564bca3da47 /gdb/hppa-tdep.c | |
parent | 206415a3eac4f69d24cf872f880f554d3d43f1bb (diff) | |
download | gdb-93d42b302eb91d758191675dcaf3bd90323b5224.zip gdb-93d42b302eb91d758191675dcaf3bd90323b5224.tar.gz gdb-93d42b302eb91d758191675dcaf3bd90323b5224.tar.bz2 |
* dwarf2-frame.c (dwarf2_frame_cache, dwarf2_frame_this_id)
(dwarf2_frame_sniffer): Update.
(dwarf2_signal_frame_this_id): New function.
(dwarf2_signal_frame_unwind): Use it.
(dwarf2_frame_base_sniffer): Use frame_unwind_address_in_block.
* frame.c (frame_func_unwind): Add this_type argument.
(get_frame_func): Update.
(frame_unwind_address_in_block): Add this_type argument and check it.
Fix a typo.
(get_frame_address_in_block): Update.
* frame.h (enum frame_type): Move higher in the file.
(frame_unwind_address_in_block, frame_func_unwind): Add enum frame_type
argument.
* alpha-mdebug-tdep.c, alpha-tdep.c, amd64-tdep.c, amd64obsd-tdep.c,
arm-tdep.c, avr-tdep.c, cris-tdep.c, frv-tdep.c, h8300-tdep.c,
hppa-tdep.c, i386-tdep.c, i386obsd-tdep.c, ia64-tdep.c,
libunwind-frame.c, m32c-tdep.c, m32r-linux-tdep.c, m32r-tdep.c,
m68hc11-tdep.c, m68k-tdep.c, m88k-tdep.c, mips-mdebug-tdep.c,
mips-tdep.c, mn10300-tdep.c, mt-tdep.c, rs6000-tdep.c, s390-tdep.c,
score-tdep.c, sh-tdep.c, sh64-tdep.c, sparc-tdep.c,
sparc64obsd-tdep.c, spu-tdep.c, v850-tdep.c, vax-tdep.c,
xstormy16-tdep.c, xtensa-tdep.c: Update calls to
frame_func_unwind and frame_unwind_address_in_block to specify
the frame type. Use frame_unwind_address_in_block instead of
frame_pc_unwind in sniffers.
* gdb.arch/i386-signal.c, gdb.arch/i386-signal.exp: New files.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 060eb13..382c712 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -1787,9 +1787,14 @@ hppa_skip_prologue (CORE_ADDR pc) static struct unwind_table_entry * hppa_find_unwind_entry_in_block (struct frame_info *f) { - CORE_ADDR pc; - - pc = frame_unwind_address_in_block (f); + CORE_ADDR pc = frame_unwind_address_in_block (f, NORMAL_FRAME); + + /* FIXME drow/20070101: Calling gdbarch_addr_bits_remove on the + result of frame_unwind_address_in_block implies a problem. + The bits should have been removed earlier, before the return + value of frame_pc_unwind. That might be happening already; + if it isn't, it should be fixed. Then this call can be + removed. */ pc = gdbarch_addr_bits_remove (get_frame_arch (f), pc); return find_unwind_entry (pc); } @@ -1899,7 +1904,7 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache) if ((u->Region_description & 0x2) == 0) start_pc = u->region_start; else - start_pc = frame_func_unwind (next_frame); + start_pc = frame_func_unwind (next_frame, NORMAL_FRAME); prologue_end = skip_prologue_hard_way (start_pc, 0); end_pc = frame_pc_unwind (next_frame); @@ -2267,7 +2272,7 @@ hppa_fallback_frame_cache (struct frame_info *next_frame, void **this_cache) (*this_cache) = cache; cache->saved_regs = trad_frame_alloc_saved_regs (next_frame); - start_pc = frame_func_unwind (next_frame); + start_pc = frame_func_unwind (next_frame, NORMAL_FRAME); if (start_pc) { CORE_ADDR cur_pc = frame_pc_unwind (next_frame); @@ -2326,7 +2331,8 @@ hppa_fallback_frame_this_id (struct frame_info *next_frame, void **this_cache, { struct hppa_frame_cache *info = hppa_fallback_frame_cache (next_frame, this_cache); - (*this_id) = frame_id_build (info->base, frame_func_unwind (next_frame)); + (*this_id) = frame_id_build (info->base, + frame_func_unwind (next_frame, NORMAL_FRAME)); } static void @@ -2409,7 +2415,8 @@ hppa_stub_frame_this_id (struct frame_info *next_frame, = hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache); if (info) - *this_id = frame_id_build (info->base, frame_func_unwind (next_frame)); + *this_id = frame_id_build (info->base, + frame_func_unwind (next_frame, NORMAL_FRAME)); else *this_id = null_frame_id; } @@ -2441,7 +2448,7 @@ static const struct frame_unwind hppa_stub_frame_unwind = { static const struct frame_unwind * hppa_stub_unwind_sniffer (struct frame_info *next_frame) { - CORE_ADDR pc = frame_pc_unwind (next_frame); + CORE_ADDR pc = frame_unwind_address_in_block (next_frame, NORMAL_FRAME); struct gdbarch *gdbarch = get_frame_arch (next_frame); struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); |