summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/hppa-linux-tdep.c5
-rw-r--r--gdb/hppa-tdep.c12
3 files changed, 16 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1d297c89fab..8d30e98a841 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2004-05-07 Randolph Chung <tausq@debian.org>
+ * hppa-tdep.c (skip_prologue_hard_way, hppa_frame_cache): Use
+ read_memory_nobpt for code reading when doing frame unwinding.
+ * hppa-linux-tdep.c (insns_match_pattern): Likewise.
+
+2004-05-07 Randolph Chung <tausq@debian.org>
+
* hppa-linux-tdep.c (hppa_linux_sigtramp_find_sigcontext): Pass in pc
instead of sp, handle sigaltstack case.
(hppa_linux_sigtramp_frame_unwind_cache): Adjust calls to
diff --git a/gdb/hppa-linux-tdep.c b/gdb/hppa-linux-tdep.c
index f57ef502ee8..8f3c632a152 100644
--- a/gdb/hppa-linux-tdep.c
+++ b/gdb/hppa-linux-tdep.c
@@ -146,7 +146,10 @@ insns_match_pattern (CORE_ADDR pc,
for (i = 0; pattern[i].mask; i++)
{
- insn[i] = read_memory_unsigned_integer (npc, 4);
+ char buf[4];
+
+ read_memory_nobpt (npc, buf, 4);
+ insn[i] = extract_unsigned_integer (buf, 4);
if ((insn[i] & pattern[i].mask) == pattern[i].data)
npc += 4;
else
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 3e0e0ab9c2e..0876ab59e37 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1329,7 +1329,7 @@ restart:
old_save_sp = save_sp;
old_stack_remaining = stack_remaining;
- status = target_read_memory (pc, buf, 4);
+ status = read_memory_nobpt (pc, buf, 4);
inst = extract_unsigned_integer (buf, 4);
/* Yow! */
@@ -1378,7 +1378,7 @@ restart:
while (reg_num >= (TARGET_PTR_BIT == 64 ? 19 : 23) && reg_num <= 26)
{
pc += 4;
- status = target_read_memory (pc, buf, 4);
+ status = read_memory_nobpt (pc, buf, 4);
inst = extract_unsigned_integer (buf, 4);
if (status != 0)
return pc;
@@ -1391,7 +1391,7 @@ restart:
reg_num = inst_saves_fr (inst);
save_fr &= ~(1 << reg_num);
- status = target_read_memory (pc + 4, buf, 4);
+ status = read_memory_nobpt (pc + 4, buf, 4);
next_inst = extract_unsigned_integer (buf, 4);
/* Yow! */
@@ -1418,13 +1418,13 @@ restart:
while (reg_num >= 4 && reg_num <= (TARGET_PTR_BIT == 64 ? 11 : 7))
{
pc += 8;
- status = target_read_memory (pc, buf, 4);
+ status = read_memory_nobpt (pc, buf, 4);
inst = extract_unsigned_integer (buf, 4);
if (status != 0)
return pc;
if ((inst & 0xfc000000) != 0x34000000)
break;
- status = target_read_memory (pc + 4, buf, 4);
+ status = read_memory_nobpt (pc + 4, buf, 4);
next_inst = extract_unsigned_integer (buf, 4);
if (status != 0)
return pc;
@@ -1649,7 +1649,7 @@ hppa_frame_cache (struct frame_info *next_frame, void **this_cache)
{
int reg;
char buf4[4];
- long status = target_read_memory (pc, buf4, sizeof buf4);
+ long status = read_memory_nobpt (pc, buf4, sizeof buf4);
long inst = extract_unsigned_integer (buf4, sizeof buf4);
/* Note the interesting effects of this instruction. */