From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4610 invoked by alias); 23 Aug 2009 09:04:15 -0000 Received: (qmail 4594 invoked by uid 22791); 23 Aug 2009 09:04:12 -0000 X-SWARE-Spam-Status: No, hits=0.3 required=5.0 tests=AWL,BAYES_50,J_CHICKENPOX_21,J_CHICKENPOX_41,J_CHICKENPOX_46,J_CHICKENPOX_53 X-Spam-Check-By: sourceware.org Received: from web112514.mail.gq1.yahoo.com (HELO web112514.mail.gq1.yahoo.com) (98.137.26.174) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Sun, 23 Aug 2009 09:04:02 +0000 Received: (qmail 71137 invoked by uid 60001); 23 Aug 2009 09:04:00 -0000 Message-ID: <333859.69018.qm@web112514.mail.gq1.yahoo.com> Received: from [124.125.223.248] by web112514.mail.gq1.yahoo.com via HTTP; Sun, 23 Aug 2009 02:03:59 PDT Date: Sun, 23 Aug 2009 09:04:00 -0000 From: paawan oza Subject: Re: final i386.floating.record.patch To: Hui Zhu , Michael Snyder Cc: "gdb-patches@sourceware.org" , Mark Kettenis In-Reply-To: <4A909B3E.9080304@vmware.com> 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/msg00366.txt.bz2 Hi, I have gone through 'contributing' documentation. I have gone through licen= sing related sections. But I am not very sure what are the exact things/stpes invloved ? Also I could not find template forms for the copyright. please help me with these. I think as this is for the first time, Open Source Ethics are bit unclear t= o me.=20 But may be next time it will be smooth sailing : ) Regards, Oza. --- On Sun, 8/23/09, Michael Snyder wrote: > From: Michael Snyder > Subject: Re: final i386.floating.record.patch > To: "Hui Zhu" > Cc: "paawan oza" , "gdb-patches@sourceware.org" , "Mark Kettenis" > Date: Sunday, August 23, 2009, 6:58 AM > We just need a copyright assignment, > and then one of us can check it in. >=20 > Oza, have you sent in your copyright assignment? > If not, see the file src/gdb/CONTRIBUTE. >=20 >=20 > Hui Zhu wrote: > > I think this patch is OK.=A0 How do we continue? > >=20 > > Thanks, > > Hui > >=20 > > 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.=A0 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.=A0 You > can get a > >>> example from > >>> src/ChangeLog.=A0 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/g= db > >>>>>> # ./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_flo= ats > >>>>>> Temporary breakpoint 1, main () > at > >>> ./test_floats.c:196 > >>>>>> 196=A0 =A0 =A0 > =A0=A0=A0init_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.=A0 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 =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=A0=A0"ffree %st(2) \n\t" > >>>>>>>=A0 =A0 > =A0=A0=A0"ffree %st(3) \n\t" > >>>>>>>=A0 =A0 > =A0=A0=A0"ffree %st(4) \n\t" > >>>>>>>=A0 =A0 > =A0=A0=A0"ffree %st(5) \n\t" > >>>>>>>=A0 =A0 > =A0=A0=A0"ffree %st(6) \n\t" > >>>>>>>=A0 =A0 > =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 ldy =3D > 88888888888888888888.88; > >>>>>>>=A0 =A0 if (ldx =3D=3D ldy) > >>>>>>>=A0 =A0 =A0 ldy =3D > >>>>>>> > 7777777777777777777777777777.777; > >>>>>>>=A0 =A0 else > >>>>>>>=A0 =A0 =A0 ldy =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 init_floats(); > >>>>>>>=A0 =A0 > test_arith_floats(); > >>>>>>>=A0 =A0 > test_log_exp_floats(); > >>>>>>>=A0 =A0 > test_trigo_floats(); > >>>>>>>=A0 =A0 > test_compare_floats(); > >>>>>>>=A0 =A0 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=A0 =A0 > =A0=A0=A0init_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. > >>>>>>> > >>>>>>>=A0 > =A0=A0=A0Inferior 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=A0 -- > >>>=A0 I've taken > >>>>>> the > >>>>>>> liberty of merging > >>>>>>>> your changes with the cvs > head, > >>> fixing up the > >>>>>>> conflicts.=A0 Hope you > >>>>>>>> don't mind=A0 --=A0 > 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 > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> > >> > >> >=20 >=20 =20