aboutsummaryrefslogtreecommitdiff
path: root/gdb/hppa-tdep.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-02-27 20:17:19 +0000
committerDaniel Jacobowitz <drow@false.org>2007-02-27 20:17:19 +0000
commit93d42b302eb91d758191675dcaf3bd90323b5224 (patch)
treeeb45d933ae4389284a4e1a14f2d1c564bca3da47 /gdb/hppa-tdep.c
parent206415a3eac4f69d24cf872f880f554d3d43f1bb (diff)
downloadfsf-binutils-gdb-93d42b302eb91d758191675dcaf3bd90323b5224.zip
fsf-binutils-gdb-93d42b302eb91d758191675dcaf3bd90323b5224.tar.gz
fsf-binutils-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.c23
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);