From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22578 invoked by alias); 11 Jul 2006 15:35:23 -0000 Received: (qmail 22567 invoked by uid 22791); 11 Jul 2006 15:35:21 -0000 X-Spam-Check-By: sourceware.org Received: from e2.ny.us.ibm.com (HELO e2.ny.us.ibm.com) (32.97.182.142) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 11 Jul 2006 15:35:16 +0000 Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e2.ny.us.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k6BFZDmc015404 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Tue, 11 Jul 2006 11:35:13 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay04.pok.ibm.com (8.13.6/NCO/VER7.0) with ESMTP id k6BFZD6h228276 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 11 Jul 2006 11:35:13 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id k6BFZCjV001126 for ; Tue, 11 Jul 2006 11:35:13 -0400 Received: from imap.linux.ibm.com (imap.raleigh.ibm.com [9.37.253.145]) by d01av02.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k6BFZCio001109; Tue, 11 Jul 2006 11:35:12 -0400 Received: by imap.linux.ibm.com (Postfix, from userid 48) id 5A70945C033; Tue, 11 Jul 2006 11:35:12 -0400 (EDT) Received: from 9.125.1.154 ([9.125.1.154]) by imap.linux.ibm.com (Horde MIME library) with HTTP; Tue, 11 Jul 2006 11:35:12 -0400 Message-ID: <20060711113512.0v0lzmkvnkw88ok0@imap.linux.ibm.com> Date: Tue, 11 Jul 2006 15:35:00 -0000 From: Wu Zhou To: drow@false.org Cc: gdb-patches@sourceware.org Subject: Re: [RFC] decimal float point patch based on libdecnumber: testcase MIME-Version: 1.0 Content-Type: text/plain; charset=GB2312; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable User-Agent: Internet Messaging Program (IMP) H3 (4.1.1) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-07/txt/msg00090.txt.bz2 Daniel, Attached is the revised patch for DFP testcase. Please review. Any=20=20 errors, please correct me. Thanks! 2006-07-11 Wu Zhou * gdb.base/dfp-exprs.exp: New testcase to verify that gdb can handle dfp constants correctly. * gdb.base/dfp-test.c: New test file, used for dfp-test.exp. * gdb.base/dfp-test.exp: New testcase toverify that gdb can handle dfp related operation. Index: gdb.base/dfp-exprs.exp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: gdb.base/dfp-exprs.exp diff -N gdb.base/dfp-exprs.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gdb.base/dfp-exprs.exp 21 Jun 2006 22:20:32 -0000 @@ -0,0 +1,95 @@ +# Copyright (C) 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US= A. + +# This file was written by Wu Zhou. (woodzltc@cn.ibm.com) + +# This file is part of the gdb testsuite. It contains test for evaluating +# simple decimal floating point (DFP) expression. + +if $tracelevel then { + strace $tracelevel +} + +proc test_dfp_literals_accepted {} { + + # Test various dfp values, covering 32-bit, 64-bit and 128-bit ones + + # _Decimal32 constants, which can support up to 7 digits + gdb_test "p 1.2df" " =3D 1.2" + gdb_test "p -1.2df" " =3D -1.2" + gdb_test "p 1.234567df" " =3D 1.234567" + gdb_test "p -1.234567df" " =3D -1.234567" + gdb_test "p 1234567.df" " =3D 1234567" + gdb_test "p -1234567.df" " =3D -1234567" + + gdb_test "p 1.2E1df" " =3D 12" + gdb_test "p 1.2E10df" " =3D 1.2E\\+10" + gdb_test "p 1.2E-10df" " =3D 1.2E-10" + + # The largest exponent for 32-bit dfp value is 96. + gdb_test "p 1.2E96df" " =3D 1.200000E\\+96" + + # _Decimal64 constants, which can support up to 16 digits + gdb_test "p 1.2dd" " =3D 1.2" + gdb_test "p -1.2dd" " =3D -1.2" + gdb_test "p 1.234567890123456dd" " =3D 1.234567890123456" + gdb_test "p -1.234567890123456dd" " =3D -1.234567890123456" + gdb_test "p 1234567890123456.dd" " =3D 1234567890123456" + gdb_test "p -1234567890123456.dd" " =3D -1234567890123456" + + gdb_test "p 1.2E1dd" " =3D 12" + gdb_test "p 1.2E10dd" " =3D 1.2E\\+10" + gdb_test "p 1.2E-10dd" " =3D 1.2E-10" + + # The largest exponent for 64-bit dfp value is 384. + gdb_test "p 1.2E384dd" " =3D 1.200000000000000E\\+384" + + # _Decimal128 constants, which can support up to 34 digits + gdb_test "p 1.2dl" " =3D 1.2" + gdb_test "p -1.2dl" " =3D -1.2" + gdb_test "p 1.234567890123456789012345678901234dl" " =3D=20=20 1.234567890123456789012345678901234" + gdb_test "p -1.234567890123456789012345678901234dl" " =3D=20=20 -1.234567890123456789012345678901234" + gdb_test "p 1234567890123456789012345678901234.dl" " =3D=20=20 1234567890123456789012345678901234" + gdb_test "p -1234567890123456789012345678901234.dl" " =3D=20=20 -1234567890123456789012345678901234" + + gdb_test "p 1.2E1dl" " =3D 12" + gdb_test "p 1.2E10dl" " =3D 1.2E\\+10" + gdb_test "p 1.2E-10dl" " =3D 1.2E-10" + + # The largest exponent for 128-bit dfp value is 6144. + gdb_test "p 1.2E6144dl" " =3D 1.200000000000000000000000000000000E\\+6= 144" +} + +proc test_dfp_arithmetic_expressions {} { + +# Arithmetic operations for DFP types are not yet implemented in GDB. +# These tests are to verify that they will generate expected error message= s. + + gdb_test "p 1.4df + 1.2df" "Argument to arithmetic operation not a=20=20 number or boolean.*" + gdb_test "p 1.4df - 1.2df" ".*Argument to arithmetic operation not=20=20 a number or boolean.*" + gdb_test "p 1.4df * 1.2df" "Argument to arithmetic operation not a=20=20 number or boolean.*" + gdb_test "p 1.4df / 1.2df" "Argument to arithmetic operation not a=20=20 number or boolean.*" + +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir + +test_dfp_literals_accepted +test_dfp_arithmetic_expressions Index: gdb.base/dfp-test.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: gdb.base/dfp-test.c diff -N gdb.base/dfp-test.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gdb.base/dfp-test.c 21 Jun 2006 22:20:32 -0000 @@ -0,0 +1,95 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2006 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#include +#include + +volatile _Decimal32 d32; +volatile _Decimal64 d64; +volatile _Decimal128 d128; + +struct decstruct +{ + int int4; + long long8; + _Decimal32 dec32; + _Decimal64 dec64; + _Decimal128 dec128; +} ds; + +static _Decimal32 +arg0_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2, + _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5) +{ + return arg0; +} + +static _Decimal64 +arg0_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2, + _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5) +{ + return arg0; +} + +static _Decimal128 +arg0_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2, + _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5) +{ + return arg0; +} + +int main() +{ + /* An finite 32-bits decimal floating point. */ + d32 =3D 1.2345df; /* Initialize d32. */ + + /* Non-finite 32-bits decimal floating point: infinity and NaN. */ + d32 =3D __builtin_infd32(); /* Positive infd32. */ + d32 =3D -__builtin_infd32(); /* Negative infd32. */ + d32 =3D __builtin_nand32(""); + + /* An finite 64-bits decimal floating point. */ + d64 =3D 1.2345dd; /* Initialize d64. */ + + /* Non-finite 64-bits decimal floating point: infinity and NaN. */ + d64 =3D __builtin_infd64(); /* Positive infd64. */ + d64 =3D -__builtin_infd64(); /* Negative infd64. */ + d64 =3D __builtin_nand64(""); + + /* An finite 128-bits decimal floating point. */ + d128 =3D 1.2345dl; /* Initialize d128. */ + + /* Non-finite 128-bits decimal floating point: infinity and NaN. */ + d128 =3D __builtin_infd128(); /* Positive infd128. */ + d128 =3D -__builtin_infd128(); /* Negative infd128. */ + d128 =3D __builtin_nand128(""); + + /* Functions with decimal floating point as parameter and return value. = */ + d32 =3D arg0_32 (0.1df, 1.0df, 2.0df, 3.0df, 4.0df, 5.0df); + d64 =3D arg0_64 (0.1dd, 1.0dd, 2.0dd, 3.0dd, 4.0dd, 5.0dd); + d128 =3D arg0_128 (0.1dl, 1.0dl, 2.0dl, 3.0dl, 4.0dl, 5.0dl); + + ds.int4 =3D 1; + ds.long8 =3D 2; + ds.dec32 =3D 1.2345df; + ds.dec64 =3D 1.2345dd; + ds.dec128 =3D 1.2345dl; + + return 0; /* Exit point. */ +} Index: gdb.base/dfp-test.exp =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: gdb.base/dfp-test.exp diff -N gdb.base/dfp-test.exp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gdb.base/dfp-test.exp 21 Jun 2006 22:20:32 -0000 @@ -0,0 +1,247 @@ +# Copyright 2006 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US= A. + +# This file was written by Wu Zhou. (woodzltc@cn.ibm.com) + +# This file is part of the gdb testsuite. It is intended to test that +# gdb could correctly hane decimal floating point introduced in IEEE 754R. + +proc d32_set_tests {} { + + gdb_test "p d32=3D123.45df" " =3D 123.45" + gdb_test "p d32=3D12345.df" " =3D 12345" + gdb_test "p d32=3D12345.67df" " =3D 12345.67" + gdb_test "p d32=3D1234567.df" " =3D 1234567" + + gdb_test "p d32=3D1.234567E0df" " =3D 1.234567" + gdb_test "p d32=3D1.234567E10df" " =3D 1.234567E\\+10" + gdb_test "p d32=3D1.234567E+96df" " =3D 1.234567E\\+96" + + # Test that gdb could handle the max, normalized min and=20=20 subnormalized min. + gdb_test "p d32=3D9.999999E96df" " =3D 9.999999E\\+96" + gdb_test "p d32=3D1.0E-95df" " =3D 1.0E\\-95" + gdb_test "p d32=3D1.E-101df" " =3D 1E\\-101" + gdb_test "p d32=3D0.000001E-95df" " =3D 1E\\-101" + + # Test that gdb could detect coefficient/exponent out of range. + # The coefficient out of range will be rounded to its nearest value. + # And the exponent out of range will be handled as infinity. + gdb_test "p d32=3D1.2345678df" " =3D 1.234568" "1.2345678 is rounded= =20=20 to 1.234568" + gdb_test "p d32=3D1.0E-101df" " =3D 1E-101" "1.0E-101 is rounded to 1E= -101" + gdb_test "p d32=3D1.234567E+97df" " =3D Infinity" "1.234567E+97 is Inf= inity" + + # Test that gdb could detect the errors in the string=20=20 representation of _Decimal32 + gdb_test "p d32=3D12345.df" " =3D 12345" "12345. is an valid number" + gdb_test "p d32=3D12345df" ".*Invalid number.*" "12345 is an=20=20 invalid number" + gdb_test "p d32=3D1.23Edf" " =3D NaN" "1.23E is NaN (not a number)" + gdb_test "p d32=3D1.23E45Adf" " =3D NaN" "1.23E45A is NaN (not a numbe= r)" +} + +proc d64_set_tests {} { + + gdb_test "p d64=3D123.45dd" " =3D 123.45" + gdb_test "p d64=3D12345.dd" " =3D 12345" + gdb_test "p d64=3D12345.67dd" " =3D 12345.67" + gdb_test "p d64=3D1.234567890123456dd" " =3D 1.234567890123456" + + gdb_test "p d64=3D1.234567890123456E10dd" " =3D 12345678901.23456" + gdb_test "p d64=3D1.234567890123456E100dd" " =3D 1.234567890123456E\\+= 100" + gdb_test "p d64=3D1.234567890123456E384dd" " =3D 1.234567890123456E\\+= 384" + + # Test that gdb could handle the max, normalized min and=20=20 subnormalized min. + gdb_test "p d64=3D9.999999999999999E384dd" " =3D 9.999999999999999E\\+= 384" + gdb_test "p d64=3D1.E-383dd" " =3D 1E\\-383" + gdb_test "p d64=3D1.E-398dd" " =3D 1E\\-398" + gdb_test "p d64=3D0.000000000000001E-383dd" " =3D 1E\\-398" + + # Test that gdb could detect coefficient/exponent out of range. + # The coefficient out of range will be rounded to its nearest value. + # And the exponent out of range will be handled as infinity. + gdb_test "p d64=3D1.2345678901234567dd" " =3D 1.234567890123457"=20=20 "1.2345678901234567 is rounded to 1.234567890123457" + gdb_test "p d64=3D9.9999999999999999E384dd" " =3D Infinity"=20=20 "d64=3D9.9999999999999999E384 is Infinity" + gdb_test "p d64=3D1.234567890123456E385dd" " =3D Infinity"=20=20 "d64=3D1.234567890123456E385 is Infinity" + + # Test that gdb could detect the errors in the string=20=20 representation of _Decimal64 + gdb_test "p d64=3D12345dd" ".*Invalid number.*" "12345dd is an=20=20 invalid number" + gdb_test "p d64=3D1.23Edd" " =3D NaN" "1.23E is NaN (not a number)" + gdb_test "p d64=3D1.23E45Add" "=3D NaN" "1.23E45A is NaN (not a number= )" +} + +proc d128_set_tests {} { + + gdb_test "p d128=3D123.45dl" " =3D 123.45" + gdb_test "p d128=3D12345.dl" " =3D 12345" + gdb_test "p d128=3D12345.67dl" " =3D 12345.67" + gdb_test "p d128=3D1.234567890123456789012345678901234dl" " =3D=20=20 1.234567890123456789012345678901234" + + gdb_test "p d128=3D1.234567890123456E10dl" " =3D 12345678901.23456" + gdb_test "p d128=3D1.234567890123456E100dl" " =3D 1.234567890123456E\\= +100" + gdb_test "p d128=3D1.234567890123456E1000dl" " =3D 1.234567890123456E\= \+1000" + + # Test that gdb could handle the max, normalized min and=20=20 subnormalized min. + gdb_test "p d128=3D9.999999999999999999999999999999999E6144dl" " =3D= =20=20 9.999999999999999999999999999999999E\\+6144" + gdb_test "p d128=3D1.E-6143dl" " =3D 1E\\-6143" + gdb_test "p d128=3D1.E-6176dl" " =3D 1E\\-6176" + gdb_test "p d128=3D0.000000000000000000000000000000001E-6143dl" " =3D= =20=20 1E\\-6176" + + # Test that gdb could detect coefficient/exponent out of range. + # The coefficient out of range will be rounded to its nearest value. + # And the exponent out of range will be handled as infinity. + gdb_test "p d128=3D1.2345678901234567890123456789012345dl"=20=20 "1.234567890123456789012345678901234"=20=20 "1.2345678901234567890123456789012345 is rounded to=20=20 1.234567890123456789012345678901234" + gdb_test "p d128=3D1.234567890123456E6145dl" "Infinity"=20=20 "d128=3D1.234567890123456E6145 is Infinity" + + # Test that gdb could detect the errors in the string=20=20 representation of _Decimal128 + gdb_test "p d128=3D12345dl" ".*Invalid number.*" "12345dl is an=20=20 invalid number" + gdb_test "p d128=3D1.23Edl" " =3D NaN" "1.23E is NaN (not a number)" + gdb_test "p d128=3D1.23E45Adl" "=3D NaN" "1.23E45A is NaN (not a numbe= r)" +} + + +if $tracelevel { + strace $tracelevel +} + +set testfile "dfp-test" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}"=20=20 executable {debug}] !=3D "" } { + untested "Couldn't compile ${srcfile}" + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if ![runto_main] then { + perror "couldn't run to breakpoint" + continue +} + +# Different tests on 32-bits decimal floating point, including the printing +# of finite numbers, infinite and NaN, and also the setting of different +# decimal value. + +if [gdb_test "next" \ + ".*Positive infd32.*" \ + "next after initializing d32"] then { gdb_suppress_tests } +gdb_test "print d32" "1.2345" "d32 is initialized to 1.2345" + +if [gdb_test "next" \ + ".*Negative infd32.*" \ + "next after assigning builtin infinity to d32"] then {=20=20 gdb_suppress_tests } +gdb_test "print d32" "Infinity" "d32 is positive Infinity" + +if [gdb_test "next" \ + ".*__builtin_nand32.*" \ + "next after assigning negative builtin infinity to d32"] then {=20=20 gdb_suppress_tests } +gdb_test "print d32" "-Infinity" "d32 is negative Infinity" + +if [gdb_test "next" \ + ".*d64 =3D 1.2345.*" \ + "next after assigning builtin NaN to d32"] then { gdb_suppress_tests } +gdb_test "print d32" "NaN" "d32 is NaN" + +d32_set_tests + + +# Different tests on 64-bits decimal floating point, including the display +# of finite number, infinite and NaN, and also the setting of different +# decimal value. + +if [gdb_test "next" \ + ".*Positive infd64.*" \ + "next after initializing d64"] then { gdb_suppress_tests } +gdb_test "print d64" "1.2345" "d64 is initialized to 1.2345" + +if [gdb_test "next" \ + ".*Negative infd64.*" \ + "next after assigning builtin infinity to d64"] then {=20=20 gdb_suppress_tests } +gdb_test "print d64" "Infinity" "d64 is positive Infinity" + +if [gdb_test "next" \ + ".*__builtin_nand64.*" \ + "next after assigning negative builtin infinity to d64"] then {=20=20 gdb_suppress_tests } +gdb_test "print d64" "-Infinity" "d64 is negative Infinity" + +if [gdb_test "next" \ + ".*d128 =3D 1.2345.*" \ + "next after assigning builtin NaN to d64"] then { gdb_suppress_tests } +gdb_test "print d64" "NaN" "d64 is NaN" + +d64_set_tests + + +# Different tests on 128-bits decimal floating point, including the display +# of finite number, infinite and NaN, and also the setting of different +# decimal value. + +if [gdb_test "next" \ + ".*Positive infd128.*" \ + "next after initializing d128"] then { gdb_suppress_tests } +gdb_test "print d128" "1.2345" "d128 is initialized to 1.2345" + +d128_set_tests + +if [gdb_test "next" \ + ".*Negative infd128.*" \ + "next after assigning builtin infinity to d128"] then {=20=20 gdb_suppress_tests } +gdb_test "print d128" "Infinity" "d128 is positive Infinity" + +if [gdb_test "next" \ + ".*__builtin_nand128.*" \ + "next after assigning negative builtin infinity to d128"] then {=20=20 gdb_suppress_tests } +gdb_test "print d128" "-Infinity" "d128 is negative Infinity" + +if [gdb_test "next" \ + ".*arg0_32.*" \ + "next after assigning builtin NaN to d128"] then { gdb_suppress_tests } +gdb_test "print d128" "NaN" "d128 is NaN" + +# The following tests are intended to verify that gdb can correctly handle +# DFP types in function arguments. + +gdb_breakpoint arg0_32 +gdb_continue_to_breakpoint "entry to arg0_32" +gdb_test "backtrace" ".*arg0_32 \\(arg0=3D0.1, arg1=3D1.0, arg2=3D2.0,=20= =20 arg3=3D3.0, arg4=3D4.0, arg5=3D5.0\\).*" "backtrace at arg0_32" + +gdb_breakpoint arg0_64 +gdb_continue_to_breakpoint "entry to arg0_64" +gdb_test "backtrace" ".*arg0_64 \\(arg0=3D0.1, arg1=3D1.0, arg2=3D2.0,=20= =20 arg3=3D3.0, arg4=3D4.0, arg5=3D5.0\\).*" "backtrace at arg0_64" + +gdb_breakpoint arg0_128 +gdb_continue_to_breakpoint "entry to arg0_128" +gdb_test "backtrace" ".*arg0_128 \\(arg0=3D0.1, arg1=3D1.0, arg2=3D2.0,=20= =20 arg3=3D3.0, arg4=3D4.0, arg5=3D5.0\\).*" "backtrace at arg0_128" + +# The following tests are intended to verify that gdb can handle DFP types +# correctly in struct. + +gdb_breakpoint [gdb_get_line_number "Exit point"] +gdb_continue_to_breakpoint "Setting a decimal struct" +gdb_test "print ds.dec32" " =3D 1.2345" +gdb_test "print ds.dec64" " =3D 1.2345" +gdb_test "print ds.dec128" " =3D 1.2345" + +# The following tests are intended to verify that gdb can handle "d1=3Dd2" +# and "d1=3D-d2" correctly. + +gdb_test "print ds.dec32=3Dd32" " =3D 0.1" +gdb_test "print ds.dec64=3Dd64" " =3D 0.1" +gdb_test "print ds.dec128=3Dd128" " =3D 0.1" +gdb_test "print ds.dec32 =3D -d32" " =3D -0.1" +gdb_test "print ds.dec64 =3D -d64" " =3D -0.1" +gdb_test "print ds.dec128 =3D -d128" " =3D -0.1" Regards - Wu Zhou