xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.cp/derivation.cc (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis class A {
2*b725ae77Skettenis public:
3*b725ae77Skettenis     int a;
4*b725ae77Skettenis     int aa;
5*b725ae77Skettenis 
A()6*b725ae77Skettenis     A()
7*b725ae77Skettenis     {
8*b725ae77Skettenis         a=1;
9*b725ae77Skettenis         aa=2;
10*b725ae77Skettenis     }
11*b725ae77Skettenis     int afoo();
12*b725ae77Skettenis     int foo();
13*b725ae77Skettenis 
14*b725ae77Skettenis };
15*b725ae77Skettenis 
16*b725ae77Skettenis 
17*b725ae77Skettenis 
18*b725ae77Skettenis class B {
19*b725ae77Skettenis public:
20*b725ae77Skettenis     int b;
21*b725ae77Skettenis     int bb;
22*b725ae77Skettenis 
B()23*b725ae77Skettenis     B()
24*b725ae77Skettenis     {
25*b725ae77Skettenis         b=3;
26*b725ae77Skettenis         bb=4;
27*b725ae77Skettenis     }
28*b725ae77Skettenis     int bfoo();
29*b725ae77Skettenis     int foo();
30*b725ae77Skettenis 
31*b725ae77Skettenis };
32*b725ae77Skettenis 
33*b725ae77Skettenis 
34*b725ae77Skettenis 
35*b725ae77Skettenis class C {
36*b725ae77Skettenis public:
37*b725ae77Skettenis     int c;
38*b725ae77Skettenis     int cc;
39*b725ae77Skettenis 
C()40*b725ae77Skettenis     C()
41*b725ae77Skettenis     {
42*b725ae77Skettenis         c=5;
43*b725ae77Skettenis         cc=6;
44*b725ae77Skettenis     }
45*b725ae77Skettenis     int cfoo();
46*b725ae77Skettenis     int foo();
47*b725ae77Skettenis 
48*b725ae77Skettenis };
49*b725ae77Skettenis 
50*b725ae77Skettenis 
51*b725ae77Skettenis 
52*b725ae77Skettenis class D : private A, public B, protected C {
53*b725ae77Skettenis public:
54*b725ae77Skettenis     int d;
55*b725ae77Skettenis     int dd;
56*b725ae77Skettenis 
D()57*b725ae77Skettenis     D()
58*b725ae77Skettenis     {
59*b725ae77Skettenis         d =7;
60*b725ae77Skettenis         dd=8;
61*b725ae77Skettenis     }
62*b725ae77Skettenis     int dfoo();
63*b725ae77Skettenis     int foo();
64*b725ae77Skettenis 
65*b725ae77Skettenis };
66*b725ae77Skettenis 
67*b725ae77Skettenis 
68*b725ae77Skettenis class E : public A, B, protected C {
69*b725ae77Skettenis public:
70*b725ae77Skettenis     int e;
71*b725ae77Skettenis     int ee;
72*b725ae77Skettenis 
E()73*b725ae77Skettenis     E()
74*b725ae77Skettenis     {
75*b725ae77Skettenis         e =9;
76*b725ae77Skettenis         ee=10;
77*b725ae77Skettenis     }
78*b725ae77Skettenis     int efoo();
79*b725ae77Skettenis     int foo();
80*b725ae77Skettenis 
81*b725ae77Skettenis };
82*b725ae77Skettenis 
83*b725ae77Skettenis 
84*b725ae77Skettenis class F : A, public B, C {
85*b725ae77Skettenis public:
86*b725ae77Skettenis     int f;
87*b725ae77Skettenis     int ff;
88*b725ae77Skettenis 
F()89*b725ae77Skettenis     F()
90*b725ae77Skettenis     {
91*b725ae77Skettenis         f =11;
92*b725ae77Skettenis         ff=12;
93*b725ae77Skettenis     }
94*b725ae77Skettenis     int ffoo();
95*b725ae77Skettenis     int foo();
96*b725ae77Skettenis 
97*b725ae77Skettenis };
98*b725ae77Skettenis 
99*b725ae77Skettenis class G : private A, public B, protected C {
100*b725ae77Skettenis public:
101*b725ae77Skettenis     int g;
102*b725ae77Skettenis     int gg;
103*b725ae77Skettenis     int a;
104*b725ae77Skettenis     int b;
105*b725ae77Skettenis     int c;
106*b725ae77Skettenis 
G()107*b725ae77Skettenis     G()
108*b725ae77Skettenis     {
109*b725ae77Skettenis         g =13;
110*b725ae77Skettenis         gg =14;
111*b725ae77Skettenis         a=15;
112*b725ae77Skettenis         b=16;
113*b725ae77Skettenis         c=17;
114*b725ae77Skettenis 
115*b725ae77Skettenis     }
116*b725ae77Skettenis     int gfoo();
117*b725ae77Skettenis     int foo();
118*b725ae77Skettenis 
119*b725ae77Skettenis };
120*b725ae77Skettenis 
121*b725ae77Skettenis 
122*b725ae77Skettenis 
123*b725ae77Skettenis 
afoo()124*b725ae77Skettenis int A::afoo() {
125*b725ae77Skettenis     return 1;
126*b725ae77Skettenis }
127*b725ae77Skettenis 
bfoo()128*b725ae77Skettenis int B::bfoo() {
129*b725ae77Skettenis     return 2;
130*b725ae77Skettenis }
131*b725ae77Skettenis 
cfoo()132*b725ae77Skettenis int C::cfoo() {
133*b725ae77Skettenis     return 3;
134*b725ae77Skettenis }
135*b725ae77Skettenis 
dfoo()136*b725ae77Skettenis int D::dfoo() {
137*b725ae77Skettenis     return 4;
138*b725ae77Skettenis }
139*b725ae77Skettenis 
efoo()140*b725ae77Skettenis int E::efoo() {
141*b725ae77Skettenis     return 5;
142*b725ae77Skettenis }
143*b725ae77Skettenis 
ffoo()144*b725ae77Skettenis int F::ffoo() {
145*b725ae77Skettenis     return 6;
146*b725ae77Skettenis }
147*b725ae77Skettenis 
gfoo()148*b725ae77Skettenis int G::gfoo() {
149*b725ae77Skettenis     return 77;
150*b725ae77Skettenis }
151*b725ae77Skettenis 
foo()152*b725ae77Skettenis int A::foo()
153*b725ae77Skettenis {
154*b725ae77Skettenis     return 7;
155*b725ae77Skettenis 
156*b725ae77Skettenis }
157*b725ae77Skettenis 
foo()158*b725ae77Skettenis int B::foo()
159*b725ae77Skettenis {
160*b725ae77Skettenis     return 8;
161*b725ae77Skettenis 
162*b725ae77Skettenis }
163*b725ae77Skettenis 
foo()164*b725ae77Skettenis int C::foo()
165*b725ae77Skettenis {
166*b725ae77Skettenis     return 9;
167*b725ae77Skettenis 
168*b725ae77Skettenis }
169*b725ae77Skettenis 
foo()170*b725ae77Skettenis int D::foo()
171*b725ae77Skettenis {
172*b725ae77Skettenis     return 10;
173*b725ae77Skettenis 
174*b725ae77Skettenis }
175*b725ae77Skettenis 
foo()176*b725ae77Skettenis int E::foo()
177*b725ae77Skettenis {
178*b725ae77Skettenis     return 11;
179*b725ae77Skettenis 
180*b725ae77Skettenis }
181*b725ae77Skettenis 
foo()182*b725ae77Skettenis int F::foo()
183*b725ae77Skettenis {
184*b725ae77Skettenis     return 12;
185*b725ae77Skettenis 
186*b725ae77Skettenis }
187*b725ae77Skettenis 
foo()188*b725ae77Skettenis int G::foo()
189*b725ae77Skettenis {
190*b725ae77Skettenis     return 13;
191*b725ae77Skettenis 
192*b725ae77Skettenis }
193*b725ae77Skettenis 
194*b725ae77Skettenis 
marker1()195*b725ae77Skettenis void marker1()
196*b725ae77Skettenis {
197*b725ae77Skettenis }
198*b725ae77Skettenis 
199*b725ae77Skettenis 
main(void)200*b725ae77Skettenis int main(void)
201*b725ae77Skettenis {
202*b725ae77Skettenis 
203*b725ae77Skettenis     A a_instance;
204*b725ae77Skettenis     B b_instance;
205*b725ae77Skettenis     C c_instance;
206*b725ae77Skettenis     D d_instance;
207*b725ae77Skettenis     E e_instance;
208*b725ae77Skettenis     F f_instance;
209*b725ae77Skettenis     G g_instance;
210*b725ae77Skettenis 
211*b725ae77Skettenis     #ifdef usestubs
212*b725ae77Skettenis        set_debug_traps();
213*b725ae77Skettenis        breakpoint();
214*b725ae77Skettenis     #endif
215*b725ae77Skettenis 
216*b725ae77Skettenis 
217*b725ae77Skettenis     marker1(); // marker1-returns-here
218*b725ae77Skettenis 
219*b725ae77Skettenis     a_instance.a = 20; // marker1-returns-here
220*b725ae77Skettenis     a_instance.aa = 21;
221*b725ae77Skettenis     b_instance.b = 22;
222*b725ae77Skettenis     b_instance.bb = 23;
223*b725ae77Skettenis     c_instance.c = 24;
224*b725ae77Skettenis     c_instance.cc = 25;
225*b725ae77Skettenis     d_instance.d = 26;
226*b725ae77Skettenis     d_instance.dd = 27;
227*b725ae77Skettenis     e_instance.e = 28;
228*b725ae77Skettenis     e_instance.ee =29;
229*b725ae77Skettenis     f_instance.f =30;
230*b725ae77Skettenis     f_instance.ff =31;
231*b725ae77Skettenis 
232*b725ae77Skettenis 
233*b725ae77Skettenis 
234*b725ae77Skettenis 
235*b725ae77Skettenis     return 0;
236*b725ae77Skettenis 
237*b725ae77Skettenis }
238*b725ae77Skettenis 
239*b725ae77Skettenis 
240*b725ae77Skettenis 
241