From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9897 invoked by alias); 5 Oct 2002 03:21:36 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 9890 invoked from network); 5 Oct 2002 03:21:35 -0000 Received: from unknown (HELO crack.them.org) (65.125.64.184) by sources.redhat.com with SMTP; 5 Oct 2002 03:21:35 -0000 Received: from nevyn.them.org ([66.93.61.169] ident=mail) by crack.them.org with asmtp (Exim 3.12 #1 (Debian)) id 17xgRO-0000wo-00; Fri, 04 Oct 2002 23:21:23 -0500 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 17xfW4-00088d-00; Fri, 04 Oct 2002 23:22:08 -0400 Date: Fri, 04 Oct 2002 20:21:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Cc: fnasser@redhat.com Subject: [RFA/testsuite] Test printing complex numbers in C Message-ID: <20021005032208.GA31268@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com, fnasser@redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.1i X-SW-Source: 2002-10/txt/msg00146.txt.bz2 Fernando, I think this test submission got lost, so here it is again. It's a test for the printing of complex numbers in C, for those compilers which support it. The test is GCC specific right now. [By the way, it fails on GCC 3.0/stabs because of a (probably) GCC bug in debug information. Still not fixed in 3.2. It also fails in GCC 2.95/DWARF-2 because of a bug with __attribute__((packed)). We can sort out XFAILs later, I have some ideas on that front.] -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer 2002-03-20 Daniel Jacobowitz * gdb.base/complex.c: New file. * gdb.base/complex.exp: New file. --- /dev/null Wed Dec 31 19:00:00 1969 +++ gdb/testsuite/gdb.base/complex.c Wed Mar 20 19:51:21 2002 @@ -0,0 +1,49 @@ +/* Test taken from GCC. Verify that we can print a structure containing + a complex number. */ + +typedef __complex__ float cf; +struct x { char c; cf f; } __attribute__ ((__packed__)); +struct unpacked_x { char c; cf f; }; +extern void f4 (struct unpacked_x*); +extern void f3 (void); +extern void f2 (struct x*); +extern void f1 (void); +int +main (void) +{ + f1 (); + f3 (); + exit (0); +} + +void +f1 (void) +{ + struct x s; + s.f = 1; + s.c = 42; + f2 (&s); +} + +void +f2 (struct x *y) +{ + if (y->f != 1 || y->c != 42) + abort (); +} + +void +f3 (void) +{ + struct unpacked_x s; + s.f = 1; + s.c = 42; + f4 (&s); +} + +void +f4 (struct unpacked_x *y) +{ + if (y->f != 1 || y->c != 42) + abort (); +} --- /dev/null Wed Dec 31 19:00:00 1969 +++ gdb/testsuite/gdb.base/complex.exp Wed Mar 20 19:50:45 2002 @@ -0,0 +1,56 @@ +# Copyright 2002 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 + +if $tracelevel then { + strace $tracelevel +} + +set bug_id 0 + +set testfile complex +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +set options debug + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable $options] != "" } { + # No support for __complex__, presumably. + unsupported "print complex packed value in C" + unsupported "print complex value in C" + return 0 +} + +# Start with a fresh gdb. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load $binfile + +if [runto f2] then { + gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0 \\* I\}" \ + "print complex packed value in C" +} + +if [runto f4] then { + gdb_test "p *y" "\\\$\[0-9\]* = \{c = 42 '\\*', f = 1 \\+ 0 \\* I\}" \ + "print complex value in C" + +} + +return 0