From: "Ulrich Weigand" <uweigand@de.ibm.com>
To: jan.kratochvil@redhat.com (Jan Kratochvil)
Cc: gdb-patches@sourceware.org
Subject: [commit, s390] Fix regression in gdb.base/callfuncs.exp [Re: [commit, s390] Proper handling of PSW address/mask everywhere]
Date: Mon, 19 Dec 2011 22:39:00 -0000 [thread overview]
Message-ID: <201112192149.pBJLnGgE010099@d06av02.portsmouth.uk.ibm.com> (raw)
In-Reply-To: <20111219194636.GA8429@host2.jankratochvil.net> from "Jan Kratochvil" at Dec 19, 2011 08:46:36 PM
Jan Kratochvil wrote:
> On Wed, 30 Nov 2011 17:09:25 +0100, Ulrich Weigand wrote:
> > Tested with no regression on s390x-ibm-linux (with -m31 and -m64) and
> > on s390-ibm-linux, all both native and gdbserver. Fixes the above
> > step-resume-infcall.exp regressions.
>
> I see a regression for s390x with -m31, RHEL-6.2, kernel-2.6.32-220.el6.s390x.
Interesting, I had tested with a current kernel where I don't see that regression.
But I do see it with an older kernel as well ...
> return 7
> Make add return now? (y or n) y
> -#0 main () at ./gdb.base/callfuncs.c:655
> -655 t_structs_c(struct_val1);
> -(gdb) PASS: gdb.base/callfuncs.exp: back at main after return from call dummy breakpoint
> +Couldn't write registers: Invalid argument.
> +(gdb) FAIL: gdb.base/callfuncs.exp: back at main after return from call dummy breakpoint
>
> GDB reads PC as 0x8aaabbbb and triess to write it back as 0x0aaabbbb.
>
> I rather did not try to fix it.
>
> #0 error (string=0x80d7b3aa "%s.") at utils.c:810
> #1 in perror_with_name (string=0x80daa600 "Couldn't write registers") at utils.c:1195
> #2 in store_regs (regcache=0x8cb90eb0, tid=51221, regnum=1) at s390-nat.c:269
> #3 in s390_linux_store_inferior_registers (ops=0x8c8ca340, regcache=0x8cb90eb0, regnum=1) at s390-nat.c:411
> #4 in target_store_registers (regcache=0x8cb90eb0, regno=1) at target.c:3585
> #5 in regcache_raw_write (regcache=0x8cb90eb0, regnum=1, buf=0x3ffff8d2b20 "") at regcache.c:877
> #6 in regcache_cooked_write (regcache=0x8cb90eb0, regnum=1, buf=0x3ffff8d2b20 "") at regcache.c:889
> #7 in regcache_restore (dst=0x8cb90eb0, cooked_read=0x8033a870 <do_cooked_read>, cooked_read_context=0x8cc55e80) at regcache.c:358
> #8 in regcache_cpy (dst=0x8cb90eb0, src=0x8cc55e80) at regcache.c:382
> #9 in frame_pop (this_frame=0x8c9350e8) at frame.c:835
> #10 in return_command (retval_exp=0x8c709777 "7", from_tty=0) at stack.c:2402
Looks like there is a place where I forgot to preserve the addressing mode bit.
Fixed by the following patch.
Tested with no regression (fixing the callfuncs.exp one) on s390x (-m31,-m64).
Committed to mainline and 7.4 branch.
Bye,
Ulrich
ChangeLog:
* s390-tdep.c (s390_push_dummy_call): Set addressing mode bit
in return PSWA.
Index: gdb/s390-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/s390-tdep.c,v
retrieving revision 1.201
diff -u -p -r1.201 s390-tdep.c
--- gdb/s390-tdep.c 7 Dec 2011 13:31:05 -0000 1.201
+++ gdb/s390-tdep.c 19 Dec 2011 20:59:28 -0000
@@ -2749,9 +2749,15 @@ s390_push_dummy_call (struct gdbarch *gd
}
}
- /* Store return address. */
+ /* Store return PSWA. In 31-bit mode, keep addressing mode bit. */
+ if (word_size == 4)
+ {
+ ULONGEST pswa;
+ regcache_cooked_read_unsigned (regcache, S390_PSWA_REGNUM, &pswa);
+ bp_addr = (bp_addr & 0x7fffffff) | (pswa & 0x80000000);
+ }
regcache_cooked_write_unsigned (regcache, S390_RETADDR_REGNUM, bp_addr);
-
+
/* Store updated stack pointer. */
regcache_cooked_write_unsigned (regcache, S390_SP_REGNUM, sp);
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com
next prev parent reply other threads:[~2011-12-19 21:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-30 16:10 [commit, s390] Proper handling of PSW address/mask everywhere Ulrich Weigand
2011-12-19 19:58 ` Regression gdb.base/callfuncs.exp for s390-on-s390x [Re: [commit, s390] Proper handling of PSW address/mask everywhere] Jan Kratochvil
2011-12-19 22:39 ` Ulrich Weigand [this message]
2011-12-20 4:28 ` [commit, s390] Fix regression in gdb.base/callfuncs.exp " Jan Kratochvil
2011-12-21 19:41 ` Ulrich Weigand
2011-12-21 20:47 ` Jan Kratochvil
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201112192149.pBJLnGgE010099@d06av02.portsmouth.uk.ibm.com \
--to=uweigand@de.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox