Re: Improve end check on rs6000 prologue analyzer

Mark Kettenis
2007-03-12T21:02:21Z

> Date: Mon, 12 Mar 2007 08:18:43 -0400
> From: Daniel Jacobowitz <drow@false.org>
>
> On Sun, Mar 11, 2007 at 08:13:14PM +0100, Mark Kettenis wrote:
> > Here's a diff of gdb.sum without and with your diff (testsuite with
> > your diff). The gdb.base/attach.exp failure is "normal"; the result
> > of that test flips between PASS and FAIL. As you can see, there are
> > still "odd location failures". Here is an excerpt from gdb.log for one:
> >
> > (gdb) list
> > 134 char *ttyarg = NULL;
> > (gdb) step
> > 120 {
> > (gdb) PASS: gdb.gdb/selftest.exp: step over ttyarg initialization
> > list
> > 120 {
> > (gdb) FAIL: gdb.gdb/selftest.exp: step over ttyarg initialization ended up at odd location
> > step
> > 133 char *cdarg = NULL;
> > (gdb) PASS: gdb.gdb/selftest.exp: step over ttyarg initialization
> >
> > This looks as pretty acceptable behaviour. The initializations have
> > been moved into the prologue so while stepping over the
> > initializations, we hop back and forth. I'm willing to accept this as
> > a testsuite problem ;-).
>
> Me too. But one thing is really puzzling! We're testing the result
> of "list" here. The huge gdb_expect includes these two:
>
> -re "\[0-9\]*\t\{\r\n$gdb_prompt $" {
> set description "step over initial brace"
> set command "step"
> }
>
> -re "\[ \t\]+\{\r\n$gdb_prompt $" {
> setup_xfail "mips-*-irix5*"
> fail "$description ended up at odd location"
> }
>
> I would the first one to match. It does plenty of times in my
> selftest.exp run. The only way I can imagine for that second pattern
> to match would be for <space>{, but there shouldn't be a space there,
> just a tab - it comes from print_source_lines_base. Any idea what
> happened?

Ah, I think I've seen this before. On OpenBSD the tty subsystem does
tab expansion, wheras on Linux this doesn't happen by default. So we
must match spaces as well as tabs here. I think that means the second
pattern is really redundant. How about the attached patch?

Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>

* gdb.gdb/selftest.exp (do_steps_and_nexts): Match spaces as well
as tabs. Remove redundant test pattern.

Index: gdb.gdb/selftest.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.gdb/selftest.exp,v
retrieving revision 1.11
diff -u -p -r1.11 selftest.exp
--- gdb.gdb/selftest.exp 31 Jan 2007 19:32:12 -0000 1.11
+++ gdb.gdb/selftest.exp 12 Mar 2007 21:00:28 -0000
@@ -159,7 +159,7 @@ proc do_steps_and_nexts {} {
set description "next over textdomain PACKAGE"
set command "next"
}
- -re "\[0-9\]*\t\{\r\n$gdb_prompt $" {
+ -re "\[0-9\]+\[\t \]+\{\r\n$gdb_prompt $" {
set description "step over initial brace"
set command "step"
}
@@ -197,10 +197,6 @@ proc do_steps_and_nexts {} {
set description "step over gdb_stderr initialization"
set command "step"
}
- -re "\[ \t\]+\{\r\n$gdb_prompt $" {
- setup_xfail "mips-*-irix5*"
- fail "$description ended up at odd location"
- }
-re ".*main.c.*No such file or directory.*$gdb_prompt $" {
setup_xfail "rs6000-*-aix3*"
fail "must be able to list source lines"