From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17779 invoked by alias); 28 Feb 2014 18:04:02 -0000 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 Received: (qmail 17762 invoked by uid 89); 28 Feb 2014 18:04:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Fri, 28 Feb 2014 18:04:00 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 2DB42116598; Fri, 28 Feb 2014 13:03:57 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id adKwGFG8utE2; Fri, 28 Feb 2014 13:03:57 -0500 (EST) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id F08D3116596; Fri, 28 Feb 2014 13:03:56 -0500 (EST) Received: by joel.gnat.com (Postfix, from userid 1000) id 264B0E03BD; Fri, 28 Feb 2014 10:03:56 -0800 (PST) Date: Fri, 28 Feb 2014 18:04:00 -0000 From: Joel Brobecker To: Sanimir Agovic Cc: tromey@redhat.com, keven.boell@intel.com, gdb-patches@sourceware.org Subject: Re: [PATCH v5 14/15] test: basic c99 vla tests for C primitives Message-ID: <20140228180356.GG16479@adacore.com> References: <1391704056-25246-1-git-send-email-sanimir.agovic@intel.com> <1391704056-25246-15-git-send-email-sanimir.agovic@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391704056-25246-15-git-send-email-sanimir.agovic@intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SW-Source: 2014-02/txt/msg00874.txt.bz2 On Thu, Feb 06, 2014 at 05:27:35PM +0100, Sanimir Agovic wrote: > 2013-10-18 Keven Boell > Sanimir Agovic > > gdb/testsuite: > * gdb.base/vla-datatypes.c: New. Test source file > for VLA datatype checks. > * gdb.base/vla-datatypes.exp: New. Tests ensure that > a VLA in C can be evaluated correctly with standard > C types. Same comments as the other tests patches. Just to make sure, I marked them using "Here", to save myself a bit of typing... Pre-approved with those changes. > > > Signed-off-by: Sanimir Agovic > --- > gdb/testsuite/gdb.base/vla-datatypes.c | 86 +++++++++++++++++++ > gdb/testsuite/gdb.base/vla-datatypes.exp | 138 +++++++++++++++++++++++++++++++ > 2 files changed, 224 insertions(+) > create mode 100644 gdb/testsuite/gdb.base/vla-datatypes.c > create mode 100644 gdb/testsuite/gdb.base/vla-datatypes.exp > > diff --git a/gdb/testsuite/gdb.base/vla-datatypes.c b/gdb/testsuite/gdb.base/vla-datatypes.c > new file mode 100644 > index 0000000..267d239 > --- /dev/null > +++ b/gdb/testsuite/gdb.base/vla-datatypes.c > @@ -0,0 +1,86 @@ > +/* This testcase is part of GDB, the GNU debugger. > + > + Copyright 2013 Free Software Foundation, Inc. Here. > + > + 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 3 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, see . */ > + > +#include > +#define SIZE 5 > + > +struct foo > +{ > + int a; > +}; > + > +typedef struct bar > +{ > + int x; > + struct foo y; > +} BAR; > + > +void > +vla_factory (int n) > +{ > + int int_vla[n]; > + unsigned int unsigned_int_vla[n]; > + double double_vla[n]; > + float float_vla[n]; > + long long_vla[n]; > + unsigned long unsigned_long_vla[n]; > + char char_vla[n]; > + short short_vla[n]; > + unsigned short unsigned_short_vla[n]; > + unsigned char unsigned_char_vla[n]; > + struct foo foo_vla[n]; > + BAR bar_vla[n]; > + int i; > + > + for (i = 0; i < n; i++) > + { > + int_vla[i] = i*2; > + unsigned_int_vla[i] = i*2; > + double_vla[i] = i/2.0; > + float_vla[i] = i/2.0f; > + long_vla[i] = i*2; > + unsigned_long_vla[i] = i*2; > + char_vla[i] = 'A'; > + short_vla[i] = i*2; > + unsigned_short_vla[i] = i*2; > + unsigned_char_vla[i] = 'A'; > + foo_vla[i].a = i*2; > + bar_vla[i].x = i*2; > + bar_vla[i].y.a = i*2; > + } > + > + size_t int_size = sizeof(int_vla); /* vlas_filled */ > + size_t uint_size = sizeof(unsigned_int_vla); > + size_t double_size = sizeof(double_vla); > + size_t float_size = sizeof(float_vla); > + size_t long_size = sizeof(long_vla); > + size_t char_size = sizeof(char_vla); > + size_t short_size = sizeof(short_vla); > + size_t ushort_size = sizeof(unsigned_short_vla); > + size_t uchar_size = sizeof(unsigned_char_vla); > + size_t foo_size = sizeof(foo_vla); > + size_t bar_size = sizeof(bar_vla); > + > + return; /* break_end_of_vla_factory */ > +} > + > +int > +main () Here... > +{ > + vla_factory(SIZE); > + return 0; > +} > diff --git a/gdb/testsuite/gdb.base/vla-datatypes.exp b/gdb/testsuite/gdb.base/vla-datatypes.exp > new file mode 100644 > index 0000000..c251709 > --- /dev/null > +++ b/gdb/testsuite/gdb.base/vla-datatypes.exp > @@ -0,0 +1,138 @@ > +# Copyright 2013 Free Software Foundation, Inc. Here. > +# 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 3 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, see . > + > +standard_testfile ".c" Here. > +if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { > + return -1 > +} > + > +if ![runto_main] { > + return -1 > +} > + > +gdb_breakpoint [gdb_get_line_number "vlas_filled"] > +gdb_continue_to_breakpoint "vlas_filled" > + All "print" tests below... > +# Check the values of VLA's. > +gdb_test "print int_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print int_vla" > +gdb_test "print unsigned_int_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print unsigned_int_vla" > +gdb_test "print double_vla" "\\$\\d+ = \\\{0, 0.5, 1, 1.5, 2\\\}" \ > + "print double_vla" > +gdb_test "print float_vla" "\\$\\d+ = \\\{0, 0.5, 1, 1.5, 2\\\}" \ > + "print float_vla" > +gdb_test "print long_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print long_vla" > +gdb_test "print unsigned_long_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print unsigned_long_vla" > +gdb_test "print char_vla" "\\$\\d+ = \"AAAAA\"" \ > + "print char_vla" > +gdb_test "print short_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print short_vla" > +gdb_test "print unsigned_short_vla" "\\$\\d+ = \\\{0, 2, 4, 6, 8\\\}" \ > + "print unsigned_short_vla" > +gdb_test "print unsigned_char_vla" "\\$\\d+ = \"AAAAA\"" \ > + "print unsigned_char_vla" > +gdb_test "print foo_vla" \ > + "\\\{\\\{a = 0\\\}, \\\{a = 2\\\}, \\\{a = 4\\\}, \\\{a = 6\\\}, \\\{a = 8\\\}\\\}" \ > + "print foo_vla" > +gdb_test "print bar_vla" \ > + "\\\{\\\{x = 0, y = \\\{a = 0\\\}\\\}, \\\{x = 2, y = \\\{a = 2\\\}\\\}, \\\{x = 4, y = \\\{a = 4\\\}\\\}, \\\{x = 6, y = \\\{a = 6\\\}\\\}, \\\{x = 8, y = \\\{a = 8\\\}\\\}\\\}" \ > + "print bar_vla" > + > +# Check whatis of VLA's. > +gdb_test "whatis int_vla" "type = int \\\[5\\\]" "whatis int_vla" > +gdb_test "whatis unsigned_int_vla" "type = unsigned int \\\[5\\\]" \ > + "whatis unsigned_int_vla" > +gdb_test "whatis double_vla" "type = double \\\[5\\\]" "whatis double_vla" > +gdb_test "whatis float_vla" "type = float \\\[5\\\]" "whatis float_vla" > +gdb_test "whatis long_vla" "type = long( int)? \\\[5\\\]" "whatis long_vla" > +gdb_test "whatis unsigned_long_vla" \ > + "type = (long unsigned int|unsigned long) \\\[5\\\]" \ > + "whatis unsigned_long_vla" > +gdb_test "whatis char_vla" "type = char \\\[5\\\]" "whatis char_vla" > +gdb_test "whatis short_vla" "type = short( int)? \\\[5\\\]" \ > + "whatis short_vla" > +gdb_test "whatis unsigned_short_vla" \ > + "type = (short unsigned int|unsigned short) \\\[5\\\]" \ > + "whatis unsigned_short_vla" > +gdb_test "whatis unsigned_char_vla" "type = unsigned char \\\[5\\\]" \ > + "whatis unsigned_char_vla" > +gdb_test "whatis foo_vla" "type = struct foo \\\[5\\\]" "whatis foo_vla" > +gdb_test "whatis bar_vla" "type = BAR \\\[5\\\]" "whatis bar_vla" > + > +# Check ptype of VLA's. > +gdb_test "ptype int_vla" "type = int \\\[5\\\]" "ptype int_vla" > +gdb_test "ptype unsigned_int_vla" "type = unsigned int \\\[5\\\]" \ > + "ptype unsigned_int_vla" > +gdb_test "ptype double_vla" "type = double \\\[5\\\]" "ptype double_vla" > +gdb_test "ptype float_vla" "type = float \\\[5\\\]" "ptype float_vla" > +gdb_test "ptype long_vla" "type = long( int)? \\\[5\\\]" "ptype long_vla" > +gdb_test "ptype unsigned_long_vla" "type = unsigned long \\\[5\\\]" \ > + "ptype unsigned_long_vla" > +gdb_test "ptype char_vla" "type = char \\\[5\\\]" "ptype char_vla" > +gdb_test "ptype short_vla" "type = short( int)? \\\[5\\\]" \ > + "ptype short_vla" > +gdb_test "ptype unsigned_short_vla" "type = unsigned short \\\[5\\\]" \ > + "ptype unsigned_short_vla" > +gdb_test "ptype unsigned_char_vla" "type = unsigned char \\\[5\\\]" \ > + "ptype unsigned_char_vla" > +gdb_test "ptype foo_vla" "type = struct foo {\r\n\\s+int a;\r\n} \\\[5\\\]" \ > + "ptype foo_vla" > +gdb_test "ptype bar_vla" \ > + "type = struct bar {\r\n\\s+int x;\r\n\\s+struct foo y;\r\n} \\\[5\\\]" \ > + "ptype bar_vla" > + > +# Check the size of the VLA's. > +gdb_breakpoint [gdb_get_line_number "break_end_of_vla_factory"] > +gdb_continue_to_breakpoint "break_end_of_vla_factory" > +gdb_test "print int_size == sizeof(int_vla)" "\\$\\d+ = 1" "size of int_vla" > +gdb_test "print uint_size == sizeof(unsigned_int_vla)" "\\$\\d+ = 1" \ > + "size of unsigned_int_vla" > +gdb_test "print double_size == sizeof(double_vla)" "\\$\\d+ = 1" \ > + "size of double_vla" > +gdb_test "print float_size == sizeof(float_vla)" "\\$\\d+ = 1" \ > + "size of float_vla" > +gdb_test "print long_size == sizeof(long_vla)" "\\$\\d+ = 1" \ > + "size of long_vla" > +gdb_test "print char_size == sizeof(char_vla)" "\\$\\d+ = 1" \ > + "size of char_vla" > +gdb_test "print short_size == sizeof(short_vla)" "\\$\\d+ = 1" \ > + "size of short_vla" > +gdb_test "print ushort_size == sizeof(unsigned_short_vla)" "\\$\\d+ = 1" \ > + "size of unsigned_short_vla" > +gdb_test "print uchar_size == sizeof(unsigned_char_vla)" "\\$\\d+ = 1" \ > + "size of unsigned_char_vla" > +gdb_test "print foo_size == sizeof(foo_vla)" "\\$\\d+ = 1" "size of foo_vla" > +gdb_test "print bar_size == sizeof(bar_vla)" "\\$\\d+ = 1" "size of bar_vla" > + > +# Check side effects for sizeof argument. > +set sizeof_int [get_sizeof "int" 4] > +gdb_test_no_output "set variable int_vla\[0\] = 42" \ > + "set variable int_vla\[0\] = 42" > + > +gdb_test "print sizeof (++int_vla\[0\])" "\\$\\d+ = ${sizeof_int}" \ > + "print sizeof (++int_vla\[0\])" > +gdb_test "print int_vla\[0\]" "\\$\\d+ = 42" \ > + "print int_vla\[0\] - sizeof no side effects" > + > +gdb_test "ptype ++int_vla\[0\]" "type = int" "ptype ++int_vla\[0\]" > +gdb_test "print int_vla\[0\]" "\\$\\d+ = 42" \ > + "print int_vla\[0\] - ptype no side effects" > + > +gdb_test "whatis ++int_vla\[0\]" "type = int" "whatis ++int_vla\[0\]" > +gdb_test "print int_vla\[0\]" "\\$\\d+ = 42" \ > + "print int_vla\[0\] - whatis no side effects" > -- > 1.8.4.2 -- Joel