diff options
author | Andrew Cagney <cagney@redhat.com> | 2002-09-26 22:34:07 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2002-09-26 22:34:07 +0000 |
commit | 9f3b7f0716a642710dfe1c3c34052b9b761bcf05 (patch) | |
tree | 3802c289f94c0c3f086287aa7ffed278cd0407d2 | |
parent | 11269d7ebb9762618ee8084e77d54bffe547be63 (diff) | |
download | gdb-9f3b7f0716a642710dfe1c3c34052b9b761bcf05.zip gdb-9f3b7f0716a642710dfe1c3c34052b9b761bcf05.tar.gz gdb-9f3b7f0716a642710dfe1c3c34052b9b761bcf05.tar.bz2 |
2002-09-26 Andrew Cagney <ac131313@redhat.com>
* rs6000-tdep.c (rs6000_frame_chain): Don't chain past the dummy
frame.
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/rs6000-tdep.c | 11 |
2 files changed, 8 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2a87dc6..9d17e40 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2002-09-26 Andrew Cagney <ac131313@redhat.com> + * rs6000-tdep.c (rs6000_frame_chain): Don't chain past the dummy + frame. + +2002-09-26 Andrew Cagney <ac131313@redhat.com> + * rs6000-tdep.c (rs6000_extract_struct_value_address): Return 0. (rs6000_struct_return_address): Delete variable. (rs6000_store_struct_return): Update. diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index ee5305e..e6a68ef 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -1741,7 +1741,9 @@ rs6000_frame_chain (struct frame_info *thisframe) int wordsize = gdbarch_tdep (current_gdbarch)->wordsize; if (PC_IN_CALL_DUMMY (thisframe->pc, thisframe->frame, thisframe->frame)) - return thisframe->frame; /* dummy frame same as caller's frame */ + /* A dummy frame always correctly chains back to the previous + frame. */ + return read_memory_addr ((thisframe)->frame, wordsize); if (inside_entry_file (thisframe->pc) || thisframe->pc == entry_point_address ()) @@ -1758,13 +1760,6 @@ rs6000_frame_chain (struct frame_info *thisframe) fp = FRAME_FP (thisframe); else fp = read_memory_addr ((thisframe)->frame, wordsize); - - lr = read_register (gdbarch_tdep (current_gdbarch)->ppc_lr_regnum); - if (lr == entry_point_address ()) - if (fp != 0 && (fpp = read_memory_addr (fp, wordsize)) != 0) - if (PC_IN_CALL_DUMMY (lr, fpp, fpp)) - return fpp; - return fp; } |