Commit | Line | Data |
---|---|---|
a08702d6 TJB |
1 | /* This testcase is part of GDB, the GNU debugger. |
2 | ||
ecd75fc8 | 3 | Copyright 2008-2014 Free Software Foundation, Inc. |
a08702d6 TJB |
4 | |
5 | This program is free software; you can redistribute it and/or modify | |
6 | it under the terms of the GNU General Public License as published by | |
7 | the Free Software Foundation; either version 3 of the License, or | |
8 | (at your option) any later version. | |
9 | ||
10 | This program is distributed in the hope that it will be useful, | |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | GNU General Public License for more details. | |
14 | ||
15 | You should have received a copy of the GNU General Public License | |
16 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
17 | ||
5374244e | 18 | #include <stdio.h> |
0987cf35 DE |
19 | #include <stdlib.h> |
20 | #include <string.h> | |
5374244e | 21 | |
a08702d6 TJB |
22 | struct s |
23 | { | |
24 | int a; | |
25 | int b; | |
26 | }; | |
27 | ||
28 | union u | |
29 | { | |
30 | int a; | |
31 | float b; | |
32 | }; | |
33 | ||
08c637de TJB |
34 | enum e |
35 | { | |
36 | ONE = 1, | |
37 | TWO = 2 | |
38 | }; | |
39 | ||
2c74e833 TT |
40 | typedef struct s *PTR; |
41 | ||
08c637de TJB |
42 | enum e evalue = TWO; |
43 | ||
0987cf35 DE |
44 | struct str |
45 | { | |
46 | int length; | |
47 | /* Variable length. */ | |
48 | char text[1]; | |
49 | }; | |
50 | ||
2e4d963f | 51 | #ifdef __cplusplus |
f9ffd4bb TT |
52 | |
53 | struct Base { | |
54 | virtual int x() { return 5; } | |
55 | }; | |
56 | ||
57 | struct Derived : public Base { | |
58 | }; | |
59 | ||
60 | Base *base = new Derived (); | |
7af389b8 SC |
61 | Derived derived; |
62 | Base &base_ref = derived; | |
f9ffd4bb | 63 | |
2e4d963f PM |
64 | void ptr_ref(int*& rptr_int) |
65 | { | |
66 | return; /* break to inspect pointer by reference. */ | |
67 | } | |
68 | #endif | |
69 | ||
5374244e PM |
70 | void func1 () |
71 | { | |
72 | printf ("void function called\n"); | |
73 | } | |
74 | ||
75 | int func2 (int arg1, int arg2) | |
76 | { | |
77 | return arg1 + arg2; | |
78 | } | |
79 | ||
687f2a88 PK |
80 | char **save_argv; |
81 | ||
a08702d6 TJB |
82 | int |
83 | main (int argc, char *argv[]) | |
84 | { | |
2c74e833 | 85 | char *cp = argv[0]; /* Prevent gcc from optimizing argv[] out. */ |
a08702d6 TJB |
86 | struct s s; |
87 | union u u; | |
2c74e833 | 88 | PTR x = &s; |
fbb8f299 PM |
89 | char st[17] = "divide et impera"; |
90 | char nullst[17] = "divide\0et\0impera"; | |
5374244e PM |
91 | void (*fp1) (void) = &func1; |
92 | int (*fp2) (int, int) = &func2; | |
be759fcf PM |
93 | const char *sptr = "pointer"; |
94 | const char *embed = "embedded x\201\202\203\204"; | |
2e4d963f PM |
95 | int a[3] = {1,2,3}; |
96 | int *p = a; | |
97 | int i = 2; | |
98 | int *ptr_i = &i; | |
fff5cc64 | 99 | const char *sn = 0; |
0987cf35 DE |
100 | struct str *xstr; |
101 | ||
a08702d6 TJB |
102 | s.a = 3; |
103 | s.b = 5; | |
104 | u.a = 7; | |
5374244e PM |
105 | (*fp1) (); |
106 | (*fp2) (10,20); | |
a08702d6 | 107 | |
2e4d963f PM |
108 | #ifdef __cplusplus |
109 | ptr_ref(ptr_i); | |
110 | #endif | |
111 | ||
0987cf35 DE |
112 | #define STR_LENGTH 100 |
113 | xstr = (struct str *) malloc (sizeof (*xstr) + STR_LENGTH); | |
114 | xstr->length = STR_LENGTH; | |
115 | memset (xstr->text, 'x', STR_LENGTH); | |
116 | #undef STR_LENGTH | |
117 | ||
687f2a88 PK |
118 | save_argv = argv; /* break to inspect struct and union */ |
119 | return 0; | |
a08702d6 | 120 | } |