This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: final i386.floating.record.patch


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 <paawan1982@yahoo.com> wrote:

> From: paawan oza <paawan1982@yahoo.com>
> Subject: Re: final i386.floating.record.patch
> To: "Michael Snyder" <msnyder@vmware.com>, "Hui Zhu" <teawater@gmail.com>
> Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>, "Mark Kettenis" <mark.kettenis@xs4all.nl>
> 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 <http://gnu.org/licenses/gpl.html>
> 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:
> <http://www.gnu.org/software/gdb/bugs/>...
> 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 <teawater@gmail.com>
> wrote:
> 
> > From: Hui Zhu <teawater@gmail.com>
> > Subject: Re: final i386.floating.record.patch
> > To: "Michael Snyder" <msnyder@vmware.com>
> > Cc: "paawan oza" <paawan1982@yahoo.com>,
> "gdb-patches@sourceware.org"
> <gdb-patches@sourceware.org>,
> "Mark Kettenis" <mark.kettenis@xs4all.nl>
> > Date: Monday, August 17, 2009, 12:06 PM
> > Get some error with this patch.
> > cat fp.c
> > #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();
> > }
> > 
> > 
> > 
> > ./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 <http://gnu.org/licenses/gpl.html>
> > 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:
> > <http://www.gnu.org/software/gdb/bugs/>...
> > 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<msnyder@vmware.com>
> > 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
> > >
> > >
> > >
> > >
> > >
> > 
> 
> 
> 
> 




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]