[rfa/testsuite] gdb.base/selftest.exp: work with optimization

David Carlton
2002-12-11T21:14:39Z

I recently happened to compare the outputs of gdb.base/selftest.exp
when GDB is compiled with and without optimization, and noticed that
it failed only in the optimized case. Digging further, it happens
during the part of the test that steps through captured_main; when GDB
is compiled with optimization, GDB sometimes stops on the opening
brace. That's not an error, but the regexps in question didn't allow
that.

When I added a regexp to allow that, I found that GDB also sometimes
stopped on the line 'current_directory = gdb_dirbuf', even though it's
after the dirarg initialization line that we're looking for. This
looks like a reordering by the optimizer (or perhaps misleading
location information from the optimizer), so it's not a GDB bug
either.

Here's a patch to selftest.exp to allow those possibilities; with this
patch, all the tests in that file pass whether or not GDB is compiled
with optimization.

David Carlton
carlton@math.stanford.edu

2002-12-11 David Carlton <carlton@math.stanford.edu>

* gdb.base/selftest.exp (do_steps_and_nexts): Allow initial brace
and current_directory initialization.

Index: selftest.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.base/selftest.exp,v
retrieving revision 1.5
diff -u -p -r1.5 selftest.exp
--- selftest.exp 4 Dec 2002 03:15:27 -0000 1.5
+++ selftest.exp 11 Dec 2002 21:08:19 -0000
@@ -54,6 +54,10 @@ proc do_steps_and_nexts {} {

for {set count 0} {$count < 26} {incr count} {
send_gdb "list\n"
+ # NOTE: carlton/2002-12-11: The "initial brace" and
+ # "current_directory initialization" possibilities happen to
+ # me with GCC 3.1 on i686-pc-linux-gnu when I compile with
+ # optimization.
gdb_expect {
-re ".*context = data.*$gdb_prompt $" {
set description "step over context initialization"
@@ -157,6 +161,14 @@ proc do_steps_and_nexts {} {
-re ".*textdomain .PACKAGE.;.*$gdb_prompt $" {
set description "next over textdomain PACKAGE"
set command "next"
+ }
+ -re "\[0-9\]*\t\{\r\n$gdb_prompt $" {
+ set description "step over initial brace"
+ set command "step"
+ }
+ -re ".*current_directory = gdb_dirbuf.*$gdb_prompt $" {
+ set description "step over current_directory initialization"
+ set command "step"
}
-re "\[ \t\]+\{\r\n$gdb_prompt $" {
setup_xfail "mips-*-irix5*"