From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12036 invoked by alias); 13 Jul 2009 06:56:45 -0000 Received: (qmail 12026 invoked by uid 22791); 13 Jul 2009 06:56:44 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from wf-out-1314.google.com (HELO wf-out-1314.google.com) (209.85.200.170) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 13 Jul 2009 06:56:37 +0000 Received: by wf-out-1314.google.com with SMTP id 23so730421wfg.24 for ; Sun, 12 Jul 2009 23:56:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.135.16 with SMTP id i16mr1143136wfd.261.1247468195112; Sun, 12 Jul 2009 23:56:35 -0700 (PDT) In-Reply-To: <4A5A25F4.10201@vmware.com> References: <9950.73333.qm@web112504.mail.gq1.yahoo.com> <4A5A25F4.10201@vmware.com> From: Hui Zhu Date: Mon, 13 Jul 2009 17:03:00 -0000 Message-ID: Subject: Re: i386.record.floating.point.patch : with more testing and assurity To: Michael Snyder Cc: paawan oza , "gdb-patches@sourceware.org" , Pedro Alves Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-07/txt/msg00358.txt.bz2 Could you post it in patch format? That will make me can try it directly. = :) Thanks, Hui On Mon, Jul 13, 2009 at 02:05, Michael Snyder wrote: > paawan oza wrote: >> >> Hi, Thank you very much for your elaborated reply. >> I will integrate the test example with test suite by next week-end. >> And, also take of all yours and Hui's formatting comments. >> I will come up with the final up to date patch with integrated test-suit= e. >> Thank you again for your response. : ) >> I start working towards it. >> Regards, >> Oza. > > Excellent. =A0Now let's talk about what the test should test. > > I don't think it is necessary to test each individual instruction > (unless you really want to). =A0We don't usually go to that extreme. > > What we want to establish is "does the patch do what it's intended > to do", so let's make a statement about what it's intended to do. > You correct me if I'm wrong, but in my impression, it can be summed > up as: preserve and restore the state of the standard Intel floating > point unit during record and replay". > > So you just need to test that the FP machine state is preserved, > and that when we go backwards, the state is restored to what it > was before. =A0I think that means mainly the '387' registers, or > the state that is displayed when we say "info float". > > To help you get started, I've attached a simple gdb test that > checks to see if we can save and restore one register ('st0'). > This will show you in general how it is done, and if you want > to, you can use it as a starting point, and add tests for the > rest of the registers. > > The subroutines that we use, such as "gdb_test", are mostly > defined in gdb/testsuite/lib/gdb.exp, if you need to look at > them. =A0There's some documentation in the comments, and also > in gdb/doc/gdbint.texinfo. > > > > > > > > > # Copyright 2009 Free Software Foundation, Inc. > > # This program is free software; you can redistribute it and/or modify > # it under the terms of the GNU General Public License as published by > # the Free Software Foundation; either version 3 of the License, or > # (at your option) any later version. > # > # This program is distributed in the hope that it will be useful, > # but WITHOUT ANY WARRANTY; without even the implied warranty of > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =A0See the > # GNU General Public License for more details. > # > # You should have received a copy of the GNU General Public License > # along with this program. =A0If not, see . > > # This file is part of the gdb testsuite. > > if $tracelevel { > =A0 =A0strace $tracelevel > } > > set prms_id 0 > set bug_id 0 > > if ![istarget "i?86-*linux*"] then { > =A0 =A0verbose "Skipping i387 reverse float tests." > =A0 =A0return > } > > set testfile "i387-float-reverse" > set srcfile ${testfile}.c > set binfile ${objdir}/${subdir}/${testfile} > > # some targets have leading underscores on assembly symbols. > # TODO: detect this automatically > set additional_flags "" > if [istarget "i?86-*-cygwin*"] then { > =A0set additional_flags "additional_flags=3D-DSYMBOL_PREFIX=3D\"_\"" > } > > if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable > [list debug $additional_flags]] !=3D "" } { > =A0 =A0untested i387-float-reverse > =A0 =A0return -1 > } > > # Get things started. > > gdb_exit > gdb_start > gdb_reinitialize_dir $srcdir/$subdir > gdb_load ${binfile} > runto main > > # Record to end of main > > set location [gdb_get_line_number "END I387-FLOAT-REVERSE"] > gdb_test "record" "" "Turn on process record" > gdb_test "until $location" ".*/$srcfile:$location.*" \ > =A0 =A0"record to end of main" > > # Now rewind to beginning so we can begin testing. > > set location [gdb_get_line_number "BEGIN I387-FLOAT-REVERSE"] > gdb_test "set exec-dir reverse" "" "set reverse direction" > gdb_test "until $location" ".*/$srcfile:$location.*" \ > =A0 =A0"rewind to beginning of main" > gdb_test "set exec-dir forward" "" "set forward direction" > > # Test st0 register > > set location [gdb_get_line_number "test st0 register"] > gdb_test "until $location" ".*/$srcfile:$location.*asm.*fldz.*" \ > =A0 =A0"begin test st0" > gdb_test "stepi" "asm.*fld1.*" =A0 =A0 =A0 =A0 =A0 =A0"set st0 =3D=3D 0" > gdb_test "info register st0" "st0 *0\t.*" "verify st0 =3D=3D 0" > gdb_test "stepi" "asm.*nop.*" =A0 =A0 =A0 =A0 =A0 =A0 "set st0 =3D=3D 1" > gdb_test "info register st0" "st0 *1\t.*" "verify st0 =3D=3D 1" > > # Now step backward, and check that st0 value reverts to zero. > > gdb_test "reverse-stepi" "asm.*fld1.*" =A0 =A0"undo set st0 =3D=3D 1" > gdb_test "info register st0" "st0 *0\t.*" "verify st0 =3D=3D 0 again" > > >