1 /* This testcase is part of GDB, the GNU debugger.
3 Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
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.
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.
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/>. */
53 SSS (int x, const S& r);
57 SSS::SSS (int x, const S& r) : a(x), b(r) { }
71 class Vbase1 : public virtual VirtualTest { };
72 class Vbase2 : public virtual VirtualTest { };
73 class Vbase3 : public virtual VirtualTest { };
75 class Derived : public Vbase1, public Vbase2, public Vbase3
100 substruct_test (void)
102 struct outerstruct outer;
107 outer.s.a = 3; /* MI outer breakpoint here */
112 typedef struct string_repr
116 const char *contents;
120 /* This lets us avoid malloc. */
130 typedef struct justchildren nostring_type;
139 typedef struct container zzz_type;
142 make_string (const char *s)
145 result.whybother.contents = s;
150 make_container (const char *s)
154 result.name = make_string (s);
162 add_item (zzz_type *c, int val)
166 c->elements[c->len] = val;
170 void init_s(struct s *s, int a)
176 void init_ss(struct ss *s, int a, int b)
182 void do_nothing(void)
186 c = 23; /* Another MI breakpoint */
194 struct string_repr string_1 = { { "one" } };
195 struct string_repr string_2 = { { "two" } };
202 string x = make_string ("this is x");
203 zzz_type c = make_container ("container");
204 zzz_type c2 = make_container ("container2");
205 const struct string_repr cstring = { { "const string" } };
206 /* Clearing by being `static' could invoke an other GDB C++ bug. */
207 struct nullstr nullstr;
208 nostring_type nstype;
209 nstype.elements = narray;
213 init_ss(ssa+0, 3, 4);
214 init_ss(ssa+1, 5, 6);
215 memset (&nullstr, 0, sizeof nullstr);
218 ns.null_str = "embedded\0null\0string";
221 struct lazystring estring;
222 estring.lazy_str = "embedded x\201\202\203\204" ;
236 init_s(&cpssa[0].s, 12);
238 init_s(&cpssa[1].s, 14);
248 add_item (&c, 23); /* MI breakpoint here */
253 c.elements[0] = 1023;
254 c.elements[0] = 2323;
256 add_item (&c2, 2222);
257 add_item (&c2, 3333);
263 nstype.elements[0] = 7;
264 nstype.elements[1] = 42;
267 return 0; /* break to inspect struct and union */