Oops, this is not the bug in fp patch. Sorry for it. After patch http://sourceware.org/ml/gdb-patches/2009-08/msg00272.html Everything is OK. I post a new patch that remove space in the tail. I think you need write a changelog. You can get a example from src/ChangeLog. Please Let each line doesn't bigger than 72. Thanks, Hui On Wed, Aug 19, 2009 at 09:13, Hui Zhu wrote: > Could you try cvs-head? > > On Tue, Aug 18, 2009 at 21:48, paawan oza wrote: >> Hi, >> >> Another analysis and observation is: >> >> I used gdb-6.8.50.20090803 and everything seemed okay. >> Hui used gdb-6.8.50.20090817 and patch was still the same and gdb threw these error. >> was there any thing major changed in gdb ? >> >> and gdb throws error in >> ../../src/gdb/utils.c:1200: >> >> which looks like somebody has allocated memory too much or something has gone wrong in error checking. >> >> >> the floating-point-patch is still the same, if it works fine with gdb-6.8.50.20090803, it is high unlikely that why should it throw memory allocation error with gdb-6.8.50.20090817 (unless system is dangerously low in virtual memory, swap space is full). >> >> Regards, >> Oza. >> >> >> >> --- On Mon, 8/17/09, paawan oza wrote: >> >>> From: paawan oza >>> Subject: Re: final i386.floating.record.patch >>> To: "Michael Snyder" , "Hui Zhu" >>> Cc: "gdb-patches@sourceware.org" , "Mark Kettenis" >>> Date: Monday, August 17, 2009, 9:40 PM >>> Hi Hui, >>> >>> I test the same and it seems working fine. Another thing I >>> observe is, vertual memory is low problem and may be gdb's >>> virtual address space gets exhausted or any other limit! >>> highly unlikely though. >>> >>> please see the atached log. >>> >>> linux-p94d:/home/oza/mk_patch/take_diff/gdb_current/gdb-6.8.50.20090803/gdb >>> # ./gdb ./test_floats >>> GNU gdb (GDB) 6.8.50.20090803 >>> Copyright (C) 2009 Free Software Foundation, Inc. >>> License GPLv3+: GNU GPL version 3 or later >>> This is free software: you are free to change and >>> redistribute it. >>> There is NO WARRANTY, to the extent permitted by law. >>> Type "show copying" >>> and "show warranty" for details. >>> This GDB was configured as "i686-pc-linux-gnu". >>> For bug reporting instructions, please see: >>> ... >>> Setting up the environment for debugging gdb. >>> Function "internal_error" not defined. >>> Make breakpoint pending on future shared library load? (y >>> or [n]) [answered N; input not from terminal] >>> Function "info_command" not defined. >>> Make breakpoint pending on future shared library load? (y >>> or [n]) [answered N; input not from terminal] >>> /home/oza/mk_patch/take_diff/gdb_current/gdb-6.8.50.20090803/gdb/.gdbinit:8: >>> Error in sourced command file: >>> No breakpoint number 0. >>> (gdb) start >>> Temporary breakpoint 1 at 0x8048c94: file ./test_floats.c, >>> line 196. >>> Starting program: >>> /home/oza/mk_patch/take_diff/gdb_current/gdb-6.8.50.20090803/gdb/test_floats >>> >>> Temporary breakpoint 1, main () at ./test_floats.c:196 >>> 196         init_floats(); >>> (gdb) record >>> (gdb) c >>> Continuing. >>> result is 369.438751 >>> result is 10.320001 >>> result is 23.008301 >>> result is 0.000000 >>> result is 10.450000 >>> result is 10.776012 >>> result is 495830.968750 >>> result is -181.778748 >>> result is 12.525923 >>> result is 2.195619 >>> result is 5.055601 >>> result is inf >>> result is inf >>> result is -0.988032 >>> result is 0.154251 >>> result is -6.405331 >>> result is 1.537475 >>> The next instruction is syscall exit_group.  It will >>> make the program exit.  Do you want to stop the >>> program?([y] or n) y >>> Process record: inferior program stopped. >>> >>> Program received signal SIGTRAP, Trace/breakpoint trap. >>> 0xffffe405 in __kernel_vsyscall () >>> (gdb) >>> >>> Regards, >>> Oza. >>> >>> >>> >>> >>> --- On Mon, 8/17/09, Hui Zhu >>> wrote: >>> >>> > From: Hui Zhu >>> > Subject: Re: final i386.floating.record.patch >>> > To: "Michael Snyder" >>> > Cc: "paawan oza" , >>> "gdb-patches@sourceware.org" >>> , >>> "Mark Kettenis" >>> > Date: Monday, August 17, 2009, 12:06 PM >>> > Get some error with this patch. >>> > cat fp.c >>> > #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 = 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(); >>> > } >>> > >>> > >>> > >>> > ./gdb ./a.out >>> > GNU gdb (GDB) 6.8.50.20090817-cvs >>> > Copyright (C) 2009 Free Software Foundation, Inc. >>> > License GPLv3+: GNU GPL version 3 or later >>> > This is free software: you are free to change and >>> > redistribute it. >>> > There is NO WARRANTY, to the extent permitted by >>> law. >>> > Type "show copying" >>> > and "show warranty" for details. >>> > This GDB was configured as "i686-pc-linux-gnu". >>> > For bug reporting instructions, please see: >>> > ... >>> > Setting up the environment for debugging gdb. >>> > Function "internal_error" not defined. >>> > Make breakpoint pending on future shared library load? >>> (y >>> > or [n]) >>> > [answered N; input not from terminal] >>> > Function "info_command" not defined. >>> > Make breakpoint pending on future shared library load? >>> (y >>> > or [n]) >>> > [answered N; input not from terminal] >>> > /home/teawater/gdb/bgdbno/gdb/.gdbinit:8: Error in >>> sourced >>> > command file: >>> > No breakpoint number 0. >>> > (gdb) start >>> > During symbol reading, DW_AT_name missing from >>> > DW_TAG_base_type. >>> > Temporary breakpoint 1 at 0x8048c74: file fp.c, line >>> 196. >>> > Starting program: /home/teawater/gdb/bgdbno/gdb/a.out >>> > >>> > Temporary breakpoint 1, main () at fp.c:196 >>> > 196       init_floats(); >>> > (gdb) record >>> > (gdb) c >>> > Continuing. >>> > ../../src/gdb/utils.c:1200: internal-error: virtual >>> memory >>> > exhausted. >>> > A problem internal to GDB has been detected, >>> > further debugging may prove unreliable. >>> > Quit this debugging session? (y or n) n >>> > ../../src/gdb/utils.c:1200: internal-error: virtual >>> memory >>> > exhausted. >>> > A problem internal to GDB has been detected, >>> > further debugging may prove unreliable. >>> > Create a core file of GDB? (y or n) n >>> > >>> > Program received signal SIGTRAP, Trace/breakpoint >>> trap. >>> > 0xb7eba9bc in memcpy () from >>> /lib/tls/i686/cmov/libc.so.6 >>> > (gdb) quit >>> > A debugging session is active. >>> > >>> >     Inferior 1 [process 15657] will be >>> > killed. >>> > >>> > Quit anyway? (y or n) y >>> > >>> > >>> > Thanks, >>> > Hui >>> > >>> > On Mon, Aug 17, 2009 at 05:16, Michael Snyder >>> > wrote: >>> > > paawan oza wrote: >>> > >> >>> > >> Hi Hui & Michael, >>> > >> Now we revert status registers also. >>> > >> please find the patch attached. >>> > >> I am sorry, if I am not pasting the patch in >>> > email-body due to tabs&spaces >>> > >> problem faced by Michael last time. >>> > >> Regards, >>> > >> Oza. >>> > > >>> > > Looking good! >>> > > >>> > > There were some conflicts between your changes >>> and a >>> > check-in that >>> > > happened after your submission  --  I've taken >>> the >>> > liberty of merging >>> > > your changes with the cvs head, fixing up the >>> > conflicts.  Hope you >>> > > don't mind  --  merged patch attached. >>> > > >>> > > I'll review your tests next. >>> > > >>> > > Can you write up a change log entry for this >>> patch? >>> > > >>> > > Hui, Mark, any more comments? >>> > > >>> > > Cheers, >>> > > Michael >>> > > >>> > > >>> > > >>> > > >>> > > >>> > >>> >>> >>> >>> >> >> >> >> >