From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23524 invoked by alias); 23 Aug 2009 01:32:52 -0000 Received: (qmail 23514 invoked by uid 22791); 23 Aug 2009 01:32:50 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21,J_CHICKENPOX_41,J_CHICKENPOX_46,J_CHICKENPOX_53 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-1.vmware.com (HELO smtp-outbound-1.vmware.com) (65.115.85.69) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 23 Aug 2009 01:32:43 +0000 Received: from mailhost3.vmware.com (mailhost3.vmware.com [10.16.27.45]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id 1C82913416; Sat, 22 Aug 2009 18:32:41 -0700 (PDT) Received: from [10.20.94.141] (msnyder-server.eng.vmware.com [10.20.94.141]) by mailhost3.vmware.com (Postfix) with ESMTP id 10521CD905; Sat, 22 Aug 2009 18:32:41 -0700 (PDT) Message-ID: <4A909B3E.9080304@vmware.com> Date: Sun, 23 Aug 2009 03:00:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20080411) MIME-Version: 1.0 To: Hui Zhu CC: paawan oza , "gdb-patches@sourceware.org" , Mark Kettenis Subject: Re: final i386.floating.record.patch References: <956852.40151.qm@web112501.mail.gq1.yahoo.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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-08/txt/msg00355.txt.bz2 We just need a copyright assignment, and then one of us can check it in. Oza, have you sent in your copyright assignment? If not, see the file src/gdb/CONTRIBUTE. Hui Zhu wrote: > I think this patch is OK. How do we continue? > > Thanks, > Hui > > On Sat, Aug 22, 2009 at 00:30, paawan oza wrote: >> Hu Hui, >> please find the ChageLog and floating point patch attached as you suggested. >> Sorry for not pasting it in email-body becasue of space and tabs issues. >> Do we need to update wiki? >> Regards, >> Oza. >> >> --- On Wed, 8/19/09, Hui Zhu wrote: >> >>> From: Hui Zhu >>> Subject: Re: final i386.floating.record.patch >>> To: "paawan oza" >>> Cc: "Michael Snyder" , "gdb-patches@sourceware.org" , "Mark Kettenis" >>> Date: Wednesday, August 19, 2009, 7:47 AM >>> 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 >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >> >>