diff options
author | Andrew Cagney <cagney@redhat.com> | 2002-12-09 02:04:17 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2002-12-09 02:04:17 +0000 |
commit | 97f46953947f21e2b8f1cac99546b7d6b51a84cc (patch) | |
tree | 9409aa3739d8d7a303f9af4fa77ed6b7e22648cc /gdb/s390-tdep.c | |
parent | 8b36eed86d2784688816eb8bf25bf50b188e2c23 (diff) | |
download | gdb-97f46953947f21e2b8f1cac99546b7d6b51a84cc.zip gdb-97f46953947f21e2b8f1cac99546b7d6b51a84cc.tar.gz gdb-97f46953947f21e2b8f1cac99546b7d6b51a84cc.tar.bz2 |
2002-12-08 Andrew Cagney <ac131313@redhat.com>
* gdbarch.sh (INIT_FRAME_PC_FIRST, INIT_FRAME_PC_DEFAULT): Convert
to pure functions.
* gdbarch.h, gdbarch.c: Re-generate.
* frame.c (get_prev_frame): Explictly assign prev's pc with value
returned by INIT_FRAME_PC_FIRST and INIT_EXTRA_FRAME_INFO.
* arch-utils.h (init_frame_pc_default, init_frame_pc_noop): Change
declaration to a function returning a CORE_ADDR.
* x86-64-tdep.h (x86_64_init_frame_pc): Ditto.
* arch-utils.c (init_frame_pc_noop): Return the PC value.
(init_frame_pc_default): Ditto.
* x86-64-linux-tdep.c (x86_64_init_frame_pc): Ditto.
* s390-tdep.c (s390_init_frame_pc_first): Ditto.
* mips-tdep.c (mips_init_frame_pc_first): Ditto.
* dwarf2cfi.h (cfi_init_frame_pc): Ditto.
* dwarf2cfi.c (cfi_init_frame_pc): Ditto.
* alpha-tdep.c (alpha_init_frame_pc_first): Ditto.
* i386-interix-tdep.c (i386_interix_init_abi): Set init_frame_pc
to init_frame_pc_noop.
(i386_interix_init_frame_pc): Delete function.
* z8k-tdep.c (init_frame_pc): Delete function.
* config/z8k/tm-z8k.h (INIT_FRAME_PC): Define as init_frame_pc_noop.
(INIT_FRAME_PC_FIRST): Ditto.
* config/mn10200/tm-mn10200.h (INIT_FRAME_PC): Ditto.
(INIT_FRAME_PC_FIRST): Ditto.
* config/sparc/tm-sparc.h (INIT_FRAME_PC): Ditto.
* config/rs6000/tm-rs6000.h (INIT_FRAME_PC): Redefine as
init_frame_pc_noop.
(INIT_FRAME_PC_FIRST): Convert to an expression.
* config/sparc/tm-sparc.h (INIT_FRAME_PC_FIRST): Ditto.
Diffstat (limited to 'gdb/s390-tdep.c')
-rw-r--r-- | gdb/s390-tdep.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index a558400..48842da 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -881,25 +881,24 @@ s390_is_sigreturn (CORE_ADDR pc, struct frame_info *sighandler_fi, for the moment. For some reason the blockframe.c calls us with fi->next->fromleaf so this seems of little use to us. */ -void +CORE_ADDR s390_init_frame_pc_first (int next_fromleaf, struct frame_info *fi) { CORE_ADDR sigcaller_pc; - - fi->pc = 0; + CORE_ADDR pc = 0; if (next_fromleaf) { - fi->pc = ADDR_BITS_REMOVE (read_register (S390_RETADDR_REGNUM)); + pc = ADDR_BITS_REMOVE (read_register (S390_RETADDR_REGNUM)); /* fix signal handlers */ } - else if (fi->next && fi->next->pc) - fi->pc = s390_frame_saved_pc_nofix (fi->next); - if (fi->pc && fi->next && fi->next->frame && - s390_is_sigreturn (fi->pc, fi->next, NULL, &sigcaller_pc)) + else if (get_next_frame (fi) && get_frame_pc (get_next_frame (fi))) + pc = s390_frame_saved_pc_nofix (get_next_frame (fi)); + if (pc && get_next_frame (fi) && get_frame_base (get_next_frame (fi)) + && s390_is_sigreturn (pc, get_next_frame (fi), NULL, &sigcaller_pc)) { - fi->pc = sigcaller_pc; + pc = sigcaller_pc; } - + return pc; } void |