From 51679ba97622b97e6ab6d519c89c5475581ec31c Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 5 Jan 2007 05:56:37 +0000 Subject: [PATCH] * gdb.base/nofield.c: New file. * gdb.base/nofield.exp: New testcase. --- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.base/nofield.c | 43 ++++++++++++++++++++++++++ gdb/testsuite/gdb.base/nofield.exp | 49 ++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 gdb/testsuite/gdb.base/nofield.c create mode 100644 gdb/testsuite/gdb.base/nofield.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1242f9970b6..945bfe5fd1c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-02-05 Joel Brobecker + + * gdb.base/nofield.c: New file. + * gdb.base/nofield.exp: New testcase. + 2007-01-05 Nick Roberts * gdb.mi/mi-var-cp.exp: New test for references to pointers. diff --git a/gdb/testsuite/gdb.base/nofield.c b/gdb/testsuite/gdb.base/nofield.c new file mode 100644 index 00000000000..d4501b36c8c --- /dev/null +++ b/gdb/testsuite/gdb.base/nofield.c @@ -0,0 +1,43 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2007 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. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +struct empty {}; +union empty_union {}; + +struct not_empty +{ + void *e; + void *u; +}; + +int +main (void) +{ + struct empty e = {}; + union empty_union u; + struct not_empty n = {0, 0}; + + n.e = &e; + n.u = &u; + + return 0; +} + diff --git a/gdb/testsuite/gdb.base/nofield.exp b/gdb/testsuite/gdb.base/nofield.exp new file mode 100644 index 00000000000..17695035900 --- /dev/null +++ b/gdb/testsuite/gdb.base/nofield.exp @@ -0,0 +1,49 @@ +# Copyright 2007 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., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA + +if $tracelevel { + strace $tracelevel +} + +set testfile "nofield" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + untested "Couldn't compile ${srcfile}" + return -1 +} + +set eol "\[\r\n\]+" +set sp "\[ \t\]*" + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +gdb_test "ptype struct not_empty" \ + "type = struct not_empty {$eol${sp}void \\*e;$eol${sp}void \\*u;$eol}" \ + "ptype struct not_empty" + +gdb_test "ptype struct empty" \ + "type = struct empty {$eol$sp$eol}" \ + "ptype struct empty" + +gdb_test "ptype union empty_union" \ + "type = union empty_union {$eol$sp$eol}" \ + "ptype union empty_union" + -- 2.30.2