Re: final i386.floating.record.patch

paawan oza
2009-08-04T14:18:35Z

Hi Hui,

I am trying, but am unable to reproduce it.
I am enabling the 'record' mode from begning....and trying 'reverse-next'.
It seems to be working.

please let me know if I need to do anything more to reproduce.

Regards,
Oza.

--- On Tue, 8/4/09, Hui Zhu <teawater@gmail.com> wrote:

> From: Hui Zhu <teawater@gmail.com>
> Subject: Re: final i386.floating.record.patch
> To: "paawan oza" <paawan1982@yahoo.com>
> Cc: "Michael Snyder" <msnyder@vmware.com>, "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
> Date: Tuesday, August 4, 2009, 7:28 PM
> I think you can do it with youself.
>
> Hui
>
> On Tue, Aug 4, 2009 at 21:05, paawan oza<paawan1982@yahoo.com>
> 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 <paawan1982@yahoo.com>
> wrote:
> >
> >> From: paawan oza <paawan1982@yahoo.com>
> >> Subject: Re: final i386.floating.record.patch
> >> To: "Hui Zhu" <teawater@gmail.com>
> >> Cc: "Michael Snyder" <msnyder@vmware.com>,
> "gdb-patches@sourceware.org"
> <gdb-patches@sourceware.org>
> >> Date: Tuesday, August 4, 2009, 6:32 PM
> >> Hi Hui,
> >> I am not sure which test case (insn)  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 <teawater@gmail.com>
> >> wrote:
> >>
> >> > From: Hui Zhu <teawater@gmail.com>
> >> > Subject: Re: final
> i386.floating.record.patch
> >> > To: "paawan oza" <paawan1982@yahoo.com>
> >> > Cc: "Michael Snyder" <msnyder@vmware.com>,
> >> "gdb-patches@sourceware.org"
> >> <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    895
> >> > fstat
> >> > 0x0    0
> >> > ftag
> >> >    0xffff    65535
> >> > fiseg
> >> > 0x0    0
> >> > fioff
> >> > 0x0    0
> >> > ---Type <return> to continue, or q
> >> <return> to
> >> > quit---
> >> > foseg
> >> > 0x0    0
> >> > fooff
> >> > 0x0    0
> >> > fop
> >> > 0x0    0
> >> >
> >> > In replay mode they are:
> >> > fctrl
> >> > 0x37f    895
> >> > fstat
> >> > 0x6069    24681
> >> > ftag
> >> >    0x557f    21887
> >> > fiseg
> >> > 0x73    115
> >> > fioff
> >> > 0x8048bfd    134515709
> >> > ---Type <return> to continue, or q
> >> <return> to
> >> > quit---
> >> > foseg
> >> > 0x7b    123
> >> > fooff
> >> > 0x0    0
> >> > fop
> >> > 0x2e9    745
> >> >
> >> >
> >> >
> >> > Thanks,
> >> > Hui
> >> >
> >> >
> >> > #include <stdio.h>
> >> > #include <math.h>
> >> > #include <stdlib.h>
> >> >
> >> > /* 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 = 100.345, y = 25.7789;
> >> > long double ldx = 88888888888888888888.88,
> ldy =
> >> > 9999999999999999999.99;
> >> > float result,resultd,resultld;
> >> > float *float_memory;
> >> >
> >> > /* initialization of floats */
> >> > void init_floats()
> >> > {
> >> >  no1 = 10.45;
> >> >  no2 = 20.77;
> >> >  no3 = 156.89874646;
> >> >  no4 = 14.56;
> >> >  no5 = 11.11;
> >> >  no6 = 66.77;
> >> >  no7 = 88.88;
> >> >  float_memory = malloc(sizeof(float) * 4);
> >> >  *float_memory = 256.256;
> >> >  *(float_memory + 1) = 356.356;
> >> >  *(float_memory + 2) = 456.456;
> >> >  *(float_memory + 3) = 556.556;
> >> > }
> >> >
> >> > /* marks FPU stack as empty */
> >> > void empty_fpu_stack()
> >> > {
> >> >  asm ("ffree %st(1) \n\t"
> >> >       "ffree %st(2) \n\t"
> >> >       "ffree %st(3) \n\t"
> >> >       "ffree %st(4) \n\t"
> >> >       "ffree %st(5) \n\t"
> >> >       "ffree %st(6) \n\t"
> >> >       "ffree %st(7)");
> >> > }
> >> >
> >> > /* tests floating point arithmatic */
> >> > void test_arith_floats()
> >> > {
> >> >  result = no1 + no2 + no3 + no4 + no5 + no6
> +
> >> no7;
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = fmodf(no2,no1);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  resultd = fmod(x,y);
> >> >  printf("result is %f\n",resultd);
> >> >
> >> >  resultld = fmodl(ldy,ldy);
> >> >  printf("result is %f\n",resultld);
> >> >
> >> >  result = fabsf(no1);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = no3 / no4;
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = no1 * no2 * no3 * no4;
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = no1 - no2 - no3 - no4;
> >> >  printf("result is %f\n",result);
> >> >
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fchs");
> >> >
> >> >  /* test for f2xm1 */
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("f2xm1");
> >> >
> >> >  asm ("fyl2x");
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fxtract");
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fprem1");
> >> >
> >> >  /* decrement fpu stack pointer only status
> >> register should
> >> > get affected */
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >
> >> >  empty_fpu_stack();
> >> >
> >> >  asm ("fld1");
> >> >  asm ("fldl2t");
> >> >  asm ("fldl2e");
> >> >  asm ("fldpi");
> >> >  asm ("fldlg2");
> >> >  asm ("fldln2");
> >> >  asm ("fldz");
> >> >
> >> >  empty_fpu_stack();
> >> >  /* finishing emptying the stack */
> >> >
> >> >  result = sqrt(no3);
> >> >  printf("result is %f\n",result);
> >> > }
> >> >
> >> > void test_log_exp_floats()
> >> > {
> >> >  result = log10(no3);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = log(no3);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = exp10(no3);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = exp(no3);
> >> >  printf("result is %f\n",result);
> >> > }
> >> >
> >> > void test_trigo_floats()
> >> > {
> >> >  result = sin(30);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = cos(30);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = tan(30);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  result = atan(30);
> >> >  printf("result is %f\n",result);
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fptan");
> >> >
> >> >  /* changes st1 and popping register stack
> */
> >> >  asm ("fpatan");
> >> >
> >> >  asm("fincstp");
> >> >  asm ("fld %0" : :"m"(float_memory));
> >> >  asm ("fsincos");
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("frndint");
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fld %0" : :"m"(*(float_memory+1)));
> >> >  asm ("fscale");
> >> >
> >> >  empty_fpu_stack();
> >> >
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fsin");
> >> >  asm ("fcos");
> >> >
> >> >  /* currently we assume condition likely
> and
> >> always record
> >> > the registers
> >> >  code could be optimized only if the flag is
> set
> >> then
> >> > record */
> >> >  asm ("fld %0" : :"m"(*float_memory));
> >> >  asm ("fld %0" : :"m"(*(float_memory+1)));
> >> >  asm ("fcmovb %st(1), %st");
> >> >  asm ("fcmovbe %st(1), %st");
> >> >  asm ("fcmove %st(1), %st");
> >> >  asm ("fcmovu %st(1), %st");
> >> >  asm ("fcmovnb %st(1), %st");
> >> >  asm ("fcmovnbe %st(1), %st");
> >> >
> >> >  empty_fpu_stack();
> >> >  /* finished emtyping the stack */
> >> > }
> >> >
> >> > void test_compare_floats()
> >> > {
> >> >    ldy = 88888888888888888888.88;
> >> >    if (ldx == ldy)
> >> >      ldy =
> >> > 7777777777777777777777777777.777;
> >> >    else
> >> >      ldy =
> >> > 666666666666666666666666666.666;
> >> > }
> >> >
> >> > /* test loading and saving of FPU environment
> */
> >> > void test_fpu_env()
> >> > {
> >> >  asm ("fsave %0" : "=m"(*float_memory) : );
> >> >  asm ("frstor %0" : : "m"(*float_memory));
> >> >  asm ("fstsw %ax");
> >> > }
> >> >
> >> > int main()
> >> > {
> >> >    init_floats();
> >> >    test_arith_floats();
> >> >    test_log_exp_floats();
> >> >    test_trigo_floats();
> >> >    test_compare_floats();
> >> >    test_fpu_env();
> >> > }
> >> >
> >> >
> >> >
> >> >
> >> > On Mon, Aug 3, 2009 at 22:56, paawan
> oza<paawan1982@yahoo.com>
> >> > 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
> <msnyder@vmware.com>
> >> > wrote:
> >> > >
> >> > >> From: Michael Snyder <msnyder@vmware.com>
> >> > >> Subject: Re: final
> >> i386.floating.record.patch
> >> > >> To: "paawan oza" <paawan1982@yahoo.com>
> >> > >> Cc: "gdb-patches@sourceware.org"
> >> > <gdb-patches@sourceware.org>
> >> > >> Date: Thursday, July 30, 2009, 11:31
> PM
> >> > >> paawan oza wrote:
> >> > >> > Hi,
> >> > >> >
> >> > >> > please find my answers below.
> >> > >> >
> >> > >> >  1) Are you using a Windows
> machine to
> >> send
> >> > your
> >> > >> >  emails?  If so,
> >> > >> >  is it possible that there is
> a
> >> Unix/Linux
> >> > >> machine you could
> >> > >> >  try
> >> > >> >  sending from?  Your
> attachments look
> >> OK
> >> > for
> >> > >> me, but
> >> > >> >  some people
> >> > >> >  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.
> >> > >> >   2) And are you using
> cut-and-paste
> >> to
> >> > >> insert the patches
> >> > >> >  into the
> >> > >> >  body of your email?  That
> would
> >> certainly
> >> > >> cause
> >> > >> >  problems, because
> >> > >> >  tabs might be changed into
> spaces
> >> (which
> >> > is
> >> > >> exactly what
> >> > >> >  was
> >> > >> >  causing patch to fail for me
> today).
> >> > >> >  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?
> >> > >>
> >> > >>
> >> > >
> >> > >
> >> > >
> >> >
> >>
> >>
> >>
> >>
> >
> >
> >
> >
>