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

Fernando Nasser
2002-12-22T11:39:04Z

Approved.

Fernando

David Carlton wrote:
> 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*"
>

--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9