diff options
author | Paul Brook <paul@codesourcery.com> | 2006-02-15 17:36:11 +0000 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2006-02-15 17:36:11 +0000 |
commit | 1c5bada068c8b6c1825a7e10e15261c33877e6d5 (patch) | |
tree | f7fc9fc82518a3fecd5bb3e2b64ff6f7fcb49d02 /gdb | |
parent | 545587ee60ab7b4741ef01e616222da13e9edf8d (diff) | |
download | gdb-1c5bada068c8b6c1825a7e10e15261c33877e6d5.zip gdb-1c5bada068c8b6c1825a7e10e15261c33877e6d5.tar.gz gdb-1c5bada068c8b6c1825a7e10e15261c33877e6d5.tar.bz2 |
2006-02-15 Paul Brook <paul@codesourcery.com>
* arm-tdep.c (arm_skip_prologue, thumb_get_next_pc, arm_get_next_pc):
Load insn opcodes as unsigned values.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/arm-tdep.c | 10 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c70577d..40af2df 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2006-02-15 Paul Brook <paul@codesourcery.com> + + * arm-tdep.c (arm_skip_prologue, thumb_get_next_pc, arm_get_next_pc): + Load insn opcodes as unsigned values. + 2006-02-14 Alexandre Oliva <aoliva@redhat.com> * doublest.h (DOUBLEST): Use long double only if we can scan diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 05aad84..652be4b 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -360,7 +360,7 @@ arm_skip_prologue (CORE_ADDR pc) for (skip_pc = pc; skip_pc < func_end; skip_pc += 4) { - inst = read_memory_integer (skip_pc, 4); + inst = read_memory_unsigned_integer (skip_pc, 4); /* "mov ip, sp" is no longer a required part of the prologue. */ if (inst == 0xe1a0c00d) /* mov ip, sp */ @@ -1540,7 +1540,7 @@ CORE_ADDR thumb_get_next_pc (CORE_ADDR pc) { unsigned long pc_val = ((unsigned long) pc) + 4; /* PC after prefetch */ - unsigned short inst1 = read_memory_integer (pc, 2); + unsigned short inst1 = read_memory_unsigned_integer (pc, 2); CORE_ADDR nextpc = pc + 2; /* default is next instruction */ unsigned long offset; @@ -1552,7 +1552,7 @@ thumb_get_next_pc (CORE_ADDR pc) all of the other registers. */ offset = bitcount (bits (inst1, 0, 7)) * DEPRECATED_REGISTER_SIZE; sp = read_register (ARM_SP_REGNUM); - nextpc = (CORE_ADDR) read_memory_integer (sp + offset, 4); + nextpc = (CORE_ADDR) read_memory_unsigned_integer (sp + offset, 4); nextpc = ADDR_BITS_REMOVE (nextpc); if (nextpc == pc) error (_("Infinite loop detected")); @@ -1570,7 +1570,7 @@ thumb_get_next_pc (CORE_ADDR pc) } else if ((inst1 & 0xf800) == 0xf000) /* long branch with link, and blx */ { - unsigned short inst2 = read_memory_integer (pc + 2, 2); + unsigned short inst2 = read_memory_unsigned_integer (pc + 2, 2); offset = (sbits (inst1, 0, 10) << 12) + (bits (inst2, 0, 10) << 1); nextpc = pc_val + offset; /* For BLX make sure to clear the low bits. */ @@ -1604,7 +1604,7 @@ arm_get_next_pc (CORE_ADDR pc) return thumb_get_next_pc (pc); pc_val = (unsigned long) pc; - this_instr = read_memory_integer (pc, 4); + this_instr = read_memory_unsigned_integer (pc, 4); status = read_register (ARM_PS_REGNUM); nextpc = (CORE_ADDR) (pc_val + 4); /* Default case */ |