From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15027 invoked by alias); 4 Aug 2009 14:26:05 -0000 Received: (qmail 14994 invoked by uid 22791); 4 Aug 2009 14:26:04 -0000 X-SWARE-Spam-Status: No, hits=-1.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_41,J_CHICKENPOX_53 X-Spam-Check-By: sourceware.org Received: from web112518.mail.gq1.yahoo.com (HELO web112518.mail.gq1.yahoo.com) (98.137.26.190) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Tue, 04 Aug 2009 14:25:57 +0000 Received: (qmail 22415 invoked by uid 60001); 4 Aug 2009 14:25:55 -0000 Message-ID: <536923.21081.qm@web112518.mail.gq1.yahoo.com> Received: from [123.238.26.5] by web112518.mail.gq1.yahoo.com via HTTP; Tue, 04 Aug 2009 07:25:55 PDT Date: Tue, 04 Aug 2009 14:26:00 -0000 From: paawan oza Subject: Re: final i386.floating.record.patch To: Hui Zhu Cc: Michael Snyder , "gdb-patches@sourceware.org" In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable 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-08/txt/msg00045.txt.bz2 Hi Hui, tested following line. line 54: result =3D fmodf(no2,no1);=20=20 please see the log below. all registers are same. ****************************************************************** (gdb) n 52 printf("result is %f\n",result); (gdb) n result is 369.438751 54 result =3D fmodf(no2,no1); (gdb) info all-registers st0 0 (raw 0x00000000000000000000) st1 0 (raw 0x00000000000000000000) st2 0 (raw 0x00000000000000000000) st3 0 (raw 0x00000000000000000000) st4 0 (raw 0x00000000000000000000) st5 0 (raw 0x00000000000000000000) st6 88.87999725341796875 (raw 0x4005b1c28f0000000000) st7 369.438751220703125 (raw 0x4007b8b8290000000000) fctrl 0x37f 895 fstat 0x20 32 ftag 0xffff 65535 fiseg 0x73 115 fioff 0xb7eccd27 -1209217753 foseg 0x7b 123 fooff 0xbfffc0d4 -1073757996 fop 0x0 0 (gdb) n 55 printf("result is %f\n",result); (gdb) result is 10.320001 57 resultd =3D fmod(x,y); (gdb) reverse-next 55 printf("result is %f\n",result); (gdb) 54 result =3D fmodf(no2,no1); (gdb) 52 printf("result is %f\n",result); (gdb) info all-registers st0 0 (raw 0x00000000000000000000) st1 0 (raw 0x00000000000000000000) st2 0 (raw 0x00000000000000000000) st3 0 (raw 0x00000000000000000000) st4 0 (raw 0x00000000000000000000) st5 0 (raw 0x00000000000000000000) st6 88.87999725341796875 (raw 0x4005b1c28f0000000000) st7 369.43873691558837890625 (raw 0x4007b8b8288800000000) fctrl 0x37f 895 fstat 0x20 32 ftag 0xffff 65535 fiseg 0x73 115 fioff 0xb7eccd27 -1209217753 foseg 0x7b 123 fooff 0xbfffc0d4 -1073757996 fop 0x0 0 (gdb) ****************************************************************** --- On Tue, 8/4/09, Hui Zhu wrote: > From: Hui Zhu > Subject: Re: final i386.floating.record.patch > To: "paawan oza" > Cc: "Michael Snyder" , "gdb-patches@sourceware.org" <= gdb-patches@sourceware.org> > Date: Tuesday, August 4, 2009, 7:28 PM > I think you can do it with youself. >=20 > Hui >=20 > On Tue, Aug 4, 2009 at 21:05, paawan oza > wrote: > > > > Hi, > > > > As I understand you have tried to run the example test > code which I had sent earlier. > > > > please let me know at which c statement (or insn) it > is causing this ? > > So I can dig into it more. > > > > Thanks & Regards, > > Oza. > > > > > > --- On Tue, 8/4/09, paawan oza > wrote: > > > >> From: paawan oza > >> Subject: Re: final i386.floating.record.patch > >> To: "Hui Zhu" > >> Cc: "Michael Snyder" , > "gdb-patches@sourceware.org" > > >> Date: Tuesday, August 4, 2009, 6:32 PM > >> Hi Hui, > >> I am not sure which test case (insn)=A0 caused > this. > >> would you please send me the example (.c file) > which you > >> have tried to run ? > >> please also try to let me know at which insn (at > which > >> point it fails). > >> Regards, > >> Oza. > >> > >> --- On Tue, 8/4/09, Hui Zhu > >> wrote: > >> > >> > From: Hui Zhu > >> > Subject: Re: final > i386.floating.record.patch > >> > To: "paawan oza" > >> > Cc: "Michael Snyder" , > >> "gdb-patches@sourceware.org" > >> > >> > Date: Tuesday, August 4, 2009, 8:49 AM > >> > Hi Paawan, > >> > > >> > Thanks for your work. > >> > > >> > I do a some test works with the test code > that you > >> sent in > >> > before. > >> > I get the values of fp reg with command > "info > >> > all-registers". > >> > > >> > It looks like some fp reg's values not right > in > >> replay > >> > mode. > >> > > >> > In record mode they are: > >> > fctrl > >> > 0x37f=A0=A0=A0 895 > >> > fstat > >> > 0x0=A0=A0=A0 0 > >> > ftag > >> > =A0=A0=A00xffff=A0=A0=A0 65535 > >> > fiseg > >> > 0x0=A0=A0=A0 0 > >> > fioff > >> > 0x0=A0=A0=A0 0 > >> > ---Type to continue, or q > >> to > >> > quit--- > >> > foseg > >> > 0x0=A0=A0=A0 0 > >> > fooff > >> > 0x0=A0=A0=A0 0 > >> > fop > >> > 0x0=A0=A0=A0 0 > >> > > >> > In replay mode they are: > >> > fctrl > >> > 0x37f=A0=A0=A0 895 > >> > fstat > >> > 0x6069=A0=A0=A0 24681 > >> > ftag > >> > =A0=A0=A00x557f=A0=A0=A0 21887 > >> > fiseg > >> > 0x73=A0=A0=A0 115 > >> > fioff > >> > 0x8048bfd=A0=A0=A0 134515709 > >> > ---Type to continue, or q > >> to > >> > quit--- > >> > foseg > >> > 0x7b=A0=A0=A0 123 > >> > fooff > >> > 0x0=A0=A0=A0 0 > >> > fop > >> > 0x2e9=A0=A0=A0 745 > >> > > >> > > >> > > >> > Thanks, > >> > Hui > >> > > >> > > >> > #include > >> > #include > >> > #include > >> > > >> > /* the test intends to test following insns. > >> > flds faddp fstps fstpl fldl fxch fabs fdivrp > fmulp > >> fsubrp > >> > fucomp fnstsw fsqrt > >> > fchs f2xm1 fyl2x fxtract fprem1 fld fdecstp > fld1 > >> fldl2t > >> > fldl2e FLDPI > >> > FLDLG2 FLDLN2 > >> > FLDZ fincstp ffree fptan fpatan fincstp > fsincos > >> frndint > >> > fscale fsin fcos fcmovb > >> > fcmovbe fcmove fcmovu fcmovnb fcmovnbe fsave > frstor > >> fstsw > >> > */ > >> > > >> > float no1,no2,no3,no4,no5,no6,no7; > >> > double x =3D 100.345, y =3D 25.7789; > >> > long double ldx =3D 88888888888888888888.88, > ldy =3D > >> > 9999999999999999999.99; > >> > float result,resultd,resultld; > >> > float *float_memory; > >> > > >> > /* initialization of floats */ > >> > void init_floats() > >> > { > >> >=A0 no1 =3D 10.45; > >> >=A0 no2 =3D 20.77; > >> >=A0 no3 =3D 156.89874646; > >> >=A0 no4 =3D 14.56; > >> >=A0 no5 =3D 11.11; > >> >=A0 no6 =3D 66.77; > >> >=A0 no7 =3D 88.88; > >> >=A0 float_memory =3D malloc(sizeof(float) * 4); > >> >=A0 *float_memory =3D 256.256; > >> >=A0 *(float_memory + 1) =3D 356.356; > >> >=A0 *(float_memory + 2) =3D 456.456; > >> >=A0 *(float_memory + 3) =3D 556.556; > >> > } > >> > > >> > /* marks FPU stack as empty */ > >> > void empty_fpu_stack() > >> > { > >> >=A0 asm ("ffree %st(1) \n\t" > >> > =A0 =A0 =A0 "ffree %st(2) \n\t" > >> > =A0 =A0 =A0 "ffree %st(3) \n\t" > >> > =A0 =A0 =A0 "ffree %st(4) \n\t" > >> > =A0 =A0 =A0 "ffree %st(5) \n\t" > >> > =A0 =A0 =A0 "ffree %st(6) \n\t" > >> > =A0 =A0 =A0 "ffree %st(7)"); > >> > } > >> > > >> > /* tests floating point arithmatic */ > >> > void test_arith_floats() > >> > { > >> >=A0 result =3D no1 + no2 + no3 + no4 + no5 + no6 > + > >> no7; > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D fmodf(no2,no1); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 resultd =3D fmod(x,y); > >> >=A0 printf("result is %f\n",resultd); > >> > > >> >=A0 resultld =3D fmodl(ldy,ldy); > >> >=A0 printf("result is %f\n",resultld); > >> > > >> >=A0 result =3D fabsf(no1); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D no3 / no4; > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D no1 * no2 * no3 * no4; > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D no1 - no2 - no3 - no4; > >> >=A0 printf("result is %f\n",result); > >> > > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fchs"); > >> > > >> >=A0 /* test for f2xm1 */ > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("f2xm1"); > >> > > >> >=A0 asm ("fyl2x"); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fxtract"); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fprem1"); > >> > > >> >=A0 /* decrement fpu stack pointer only status > >> register should > >> > get affected */ > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> > > >> >=A0 empty_fpu_stack(); > >> > > >> >=A0 asm ("fld1"); > >> >=A0 asm ("fldl2t"); > >> >=A0 asm ("fldl2e"); > >> >=A0 asm ("fldpi"); > >> >=A0 asm ("fldlg2"); > >> >=A0 asm ("fldln2"); > >> >=A0 asm ("fldz"); > >> > > >> >=A0 empty_fpu_stack(); > >> >=A0 /* finishing emptying the stack */ > >> > > >> >=A0 result =3D sqrt(no3); > >> >=A0 printf("result is %f\n",result); > >> > } > >> > > >> > void test_log_exp_floats() > >> > { > >> >=A0 result =3D log10(no3); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D log(no3); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D exp10(no3); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D exp(no3); > >> >=A0 printf("result is %f\n",result); > >> > } > >> > > >> > void test_trigo_floats() > >> > { > >> >=A0 result =3D sin(30); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D cos(30); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D tan(30); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 result =3D atan(30); > >> >=A0 printf("result is %f\n",result); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fptan"); > >> > > >> >=A0 /* changes st1 and popping register stack > */ > >> >=A0 asm ("fpatan"); > >> > > >> >=A0 asm("fincstp"); > >> >=A0 asm ("fld %0" : :"m"(float_memory)); > >> >=A0 asm ("fsincos"); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("frndint"); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fld %0" : :"m"(*(float_memory+1))); > >> >=A0 asm ("fscale"); > >> > > >> >=A0 empty_fpu_stack(); > >> > > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fsin"); > >> >=A0 asm ("fcos"); > >> > > >> >=A0 /* currently we assume condition likely > and > >> always record > >> > the registers > >> >=A0 code could be optimized only if the flag is > set > >> then > >> > record */ > >> >=A0 asm ("fld %0" : :"m"(*float_memory)); > >> >=A0 asm ("fld %0" : :"m"(*(float_memory+1))); > >> >=A0 asm ("fcmovb %st(1), %st"); > >> >=A0 asm ("fcmovbe %st(1), %st"); > >> >=A0 asm ("fcmove %st(1), %st"); > >> >=A0 asm ("fcmovu %st(1), %st"); > >> >=A0 asm ("fcmovnb %st(1), %st"); > >> >=A0 asm ("fcmovnbe %st(1), %st"); > >> > > >> >=A0 empty_fpu_stack(); > >> >=A0 /* finished emtyping the stack */ > >> > } > >> > > >> > void test_compare_floats() > >> > { > >> > =A0=A0=A0ldy =3D 88888888888888888888.88; > >> > =A0=A0=A0if (ldx =3D=3D ldy) > >> > =A0 =A0=A0=A0ldy =3D > >> > 7777777777777777777777777777.777; > >> > =A0=A0=A0else > >> > =A0 =A0=A0=A0ldy =3D > >> > 666666666666666666666666666.666; > >> > } > >> > > >> > /* test loading and saving of FPU environment > */ > >> > void test_fpu_env() > >> > { > >> >=A0 asm ("fsave %0" : "=3Dm"(*float_memory) : ); > >> >=A0 asm ("frstor %0" : : "m"(*float_memory)); > >> >=A0 asm ("fstsw %ax"); > >> > } > >> > > >> > int main() > >> > { > >> > =A0=A0=A0init_floats(); > >> > =A0=A0=A0test_arith_floats(); > >> > =A0=A0=A0test_log_exp_floats(); > >> > =A0=A0=A0test_trigo_floats(); > >> > =A0=A0=A0test_compare_floats(); > >> > =A0=A0=A0test_fpu_env(); > >> > } > >> > > >> > > >> > > >> > > >> > On Mon, Aug 3, 2009 at 22:56, paawan > oza > >> > wrote: > >> > > Hi, > >> > > > >> > > please find the patch attached. I have > attached > >> as per > >> > your suggestion. > >> > > I am attaching it from opera browser. > >> > > > >> > > Regards, > >> > > Oza. > >> > > > >> > > --- On Thu, 7/30/09, Michael Snyder > > >> > wrote: > >> > > > >> > >> From: Michael Snyder > >> > >> Subject: Re: final > >> i386.floating.record.patch > >> > >> To: "paawan oza" > >> > >> Cc: "gdb-patches@sourceware.org" > >> > > >> > >> Date: Thursday, July 30, 2009, 11:31 > PM > >> > >> paawan oza wrote: > >> > >> > Hi, > >> > >> > > >> > >> > please find my answers below. > >> > >> > > >> > >> >=A0 1) Are you using a Windows > machine to > >> send > >> > your > >> > >> >=A0 emails?=A0 If so, > >> > >> >=A0 is it possible that there is > a > >> Unix/Linux > >> > >> machine you could > >> > >> >=A0 try > >> > >> >=A0 sending from?=A0 Your > attachments look > >> OK > >> > for > >> > >> me, but > >> > >> >=A0 some people > >> > >> >=A0 seem to have had problems > with them. > >> > >> > > >> > >> > Oza : I used to send all from > windows > >> till > >> > now. > >> > >> > but this patch I sent it from > >> Linux...from > >> > opera. > >> > >> >=A0=A0=A02) And are you using > cut-and-paste > >> to > >> > >> insert the patches > >> > >> >=A0 into the > >> > >> >=A0 body of your email?=A0 That > would > >> certainly > >> > >> cause > >> > >> >=A0 problems, because > >> > >> >=A0 tabs might be changed into > spaces > >> (which > >> > is > >> > >> exactly what > >> > >> >=A0 was > >> > >> >=A0 causing patch to fail for me > today). > >> > >> >=A0 Oza: yes I am using > copy-paste....I > >> dont > >> > know > >> > >> any-other way. > >> > >> > because attachmenet are not > welcome, so > >> I am > >> > not sure > >> > >> how I could proceed with this. > >> > >> > >> > >> It's not that attachments are not > welcome. > >> > >> There are various binary encodings > for > >> > attachments, and > >> > >> some of those binary encodings are > not > >> welcome. > >> > I > >> > >> think > >> > >> because there's no open-source way > of > >> decoding > >> > them. > >> > >> > >> > >> If you look at the list, you'll see > that > >> > attachments are > >> > >> used a lot. > >> > >> > >> > >> Copy-and-paste, though, in general > will not > >> work, > >> > because > >> > >> it > >> > >> usually changes tabs into spaces, > which ruins > >> a > >> > patch. > >> > >> > >> > >> > >> > >> > I will send you updated > patch.....may be > >> I > >> > might have > >> > >> mistaken of old gdb file. sorry for > >> incovenience. > >> > >> > >> > >> I think it was just the > tabs-to-spaces > >> issue. > >> > >> Why don't you try sending an > attachment from > >> > Opera? > >> > >> > >> > >> > >> > > > >> > > > >> > > > >> > > >> > >> > >> > >> > > > > > > > > >=20