xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/complex.c (revision 11efff7f3ac2b3cfeff0c0cddc14294d9b3aca4f)
1 /* Copyright 2002, 2003, 2004
2    Free Software Foundation, Inc.
3 
4    This file is part of GDB.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or (at
9    your option) any later version.
10 
11    This program is distributed in the hope that it will be useful, but
12    WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA.  */
20 
21 /* Test taken from GCC.  Verify that we can print a structure containing
22    a complex number.  */
23 
24 #include <stdlib.h>
25 
26 typedef __complex__ float cf;
27 struct x { char c; cf f; } __attribute__ ((__packed__));
28 struct unpacked_x { char c; cf f; };
29 extern void f4 (struct unpacked_x*);
30 extern void f3 (void);
31 extern void f2 (struct x*);
32 extern void f1 (void);
33 int
main(void)34 main (void)
35 {
36   f1 ();
37   f3 ();
38   exit (0);
39 }
40 
41 void
f1(void)42 f1 (void)
43 {
44   struct x s;
45   s.f = 1;
46   s.c = 42;
47   f2 (&s);
48 }
49 
50 void
f2(struct x * y)51 f2 (struct x *y)
52 {
53   if (y->f != 1 || y->c != 42)
54     abort ();
55 }
56 
57 void
f3(void)58 f3 (void)
59 {
60   struct unpacked_x s;
61   s.f = 1;
62   s.c = 42;
63   f4 (&s);
64 }
65 
66 void
f4(struct unpacked_x * y)67 f4 (struct unpacked_x *y)
68 {
69   if (y->f != 1 || y->c != 42)
70     abort ();
71 }
72