diff options
author | Jeff Law <law@redhat.com> | 1993-12-27 04:46:05 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1993-12-27 04:46:05 +0000 |
commit | 2f8c3639faaa9af96a31364ef2600c5027a35ed2 (patch) | |
tree | 823bba4624f38564b42aff415f961f6762e3115c /gdb/hppa-tdep.c | |
parent | b02fd8caa2a3353799c4312e8f06a9f533569f5c (diff) | |
download | gdb-2f8c3639faaa9af96a31364ef2600c5027a35ed2.zip gdb-2f8c3639faaa9af96a31364ef2600c5027a35ed2.tar.gz gdb-2f8c3639faaa9af96a31364ef2600c5027a35ed2.tar.bz2 |
* dbxread.c (process_one_symbol): Handle stabs-in-som just like
stabs-in-elf.
(pastab_build_psymtabs): Likewise.
* hppa-tdep.c: Change all comments to reference %r3 or frame pointer
rather than %r4.
(frame_chain, skip_prologue, dig_rp_from_stack): Handle %r3 as the
frame pointer.
* config/pa/tm-hppa.h (FP_REGNUM): Define as %r3.
(FIND_FRAME_SAVED_REGS): Handle %r3 as frame pointer.
(CALL_DUMMY): Likewise.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 93509b6..e8e01e1 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -580,12 +580,12 @@ frame_chain (frame) several areas on the stack. Walk from the current frame to the innermost frame examining - unwind descriptors to determine if %r4 ever gets saved into the + unwind descriptors to determine if %r3 ever gets saved into the stack. If so return whatever value got saved into the stack. - If it was never saved in the stack, then the value in %r4 is still + If it was never saved in the stack, then the value in %r3 is still valid, so use it. - We use information from unwind descriptors to determine if %r4 + We use information from unwind descriptors to determine if %r3 is saved into the stack (Entry_GR field has this information). */ while (frame) @@ -603,8 +603,8 @@ frame_chain (frame) } /* Entry_GR specifies the number of callee-saved general registers - saved in the stack. It starts at %r3, so %r4 would be 2. */ - if (u->Entry_GR >= 2 || u->Save_SP) + saved in the stack. It starts at %r3, so %r3 would be 1. */ + if (u->Entry_GR >= 1 || u->Save_SP) break; else frame = frame->next; @@ -616,15 +616,15 @@ frame_chain (frame) pointer. */ if (u->Save_SP) return read_memory_integer (frame->frame, 4); - /* %r4 was saved somewhere in the stack. Dig it out. */ + /* %r3 was saved somewhere in the stack. Dig it out. */ else return dig_fp_from_stack (frame, u); } else { - /* The value in %r4 was never saved into the stack (thus %r4 still + /* The value in %r3 was never saved into the stack (thus %r3 still holds the value of the previous frame pointer). */ - return read_register (4); + return read_register (FP_REGNUM); } } @@ -639,14 +639,14 @@ dig_fp_from_stack (frame, u) { CORE_ADDR pc = u->region_start; - /* Search the function for the save of %r4. */ + /* Search the function for the save of %r3. */ while (pc != u->region_end) { char buf[4]; unsigned long inst; int status; - /* We need only look for the standard stw %r4,X(%sp) instruction, + /* We need only look for the standard stw %r3,X(%sp) instruction, the other variants (eg stwm) are only used on the first register save (eg %r3). */ status = target_read_memory (pc, buf, 4); @@ -655,10 +655,10 @@ dig_fp_from_stack (frame, u) if (status != 0) memory_error (status, pc); - /* Check for stw %r4,X(%sp). */ - if ((inst & 0xffffc000) == 0x6bc40000) + /* Check for stw %r3,X(%sp). */ + if ((inst & 0xffffc000) == 0x6bc30000) { - /* Found the instruction which saves %r4. The offset (relative + /* Found the instruction which saves %r3. The offset (relative to this frame) is framesize + immed14 (derived from the store instruction). */ int offset = (u->Total_frame_size << 3) + extract_14 (inst); @@ -670,7 +670,7 @@ dig_fp_from_stack (frame, u) pc += 4; } - warning ("Unable to find %%r4 in stack.\n"); + warning ("Unable to find %%r3 in stack.\n"); return 0; } @@ -1223,14 +1223,14 @@ skip_prologue(pc) if (inst == 0x6BC23FD9) /* stw rp,-20(sp) */ { - if (read_memory_integer (pc + 4, 4) == 0x8040241) /* copy r4,r1 */ + if (read_memory_integer (pc + 4, 4) == 0x8030241) /* copy r3,r1 */ pc += 16; - else if ((read_memory_integer (pc + 4, 4) & ~MASK_14) == 0x68810000) /* stw r1,(r4) */ + else if ((read_memory_integer (pc + 4, 4) & ~MASK_14) == 0x68710000) /* stw r1,(r3) */ pc += 8; } - else if (read_memory_integer (pc, 4) == 0x8040241) /* copy r4,r1 */ + else if (read_memory_integer (pc, 4) == 0x8030241) /* copy r3,r1 */ pc += 12; - else if ((read_memory_integer (pc, 4) & ~MASK_14) == 0x68810000) /* stw r1,(r4) */ + else if ((read_memory_integer (pc, 4) & ~MASK_14) == 0x68710000) /* stw r1,(r3) */ pc += 4; return pc; |