• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Ltrace Test : demangle.cpp
2    Objectives  : Verify that ltrace can demangle C++ symbols.
3 
4    This file was written by Yao Qi <qiyao@cn.ibm.com>.  */
5 
6 #include<stddef.h>
7 #include"demangle.h"
8 
9 /* Number of arguments */
10 extern int Fi_i(int);
11 extern int Fi_s (short);
12 extern int Fii_i(int , int);
13 extern int Fiii_i(int, int, int);
14 extern int Fie_i(int bar, ...);
15 
16 /* Return types */
17 extern void Fv_v(void);
18 extern char Fv_c(void);
19 extern signed char Fv_Sc(void);
20 extern unsigned char Fv_Uc(void);
21 extern short Fv_s(void);
22 extern unsigned short Fv_Us(void);
23 extern int Fv_i(void);
24 extern const int Fv_Ci(void);
25 extern unsigned int Fv_Ui(void);
26 extern volatile int Fv_Vi(void);
27 extern long Fv_l(void);
28 extern unsigned long Fv_Ul(void);
29 extern float Fv_f(void) ;
30 extern double Fv_g(void);
31 extern long double Fv_Lg(void);
32 
33 
34 /* Pointers */
35 extern void * Fv_Pv(void);
36 extern void ** Fv_PPv(void);
37 
38 /* References */
39 extern int& Fv_Ri(void);
40 
41 /* Argument types */
42 extern int FPi_i(int *a);
43 extern int FA10_i_i(int a[10]) ;
44 extern int Fc_i(char bar);
45 extern int Ff_i(float bar);
46 extern int Fg_i(double bar);
47 
48 /* Function pointers */
49 typedef int (*x)(int);
50 typedef int (*y)(short);
51 
52 extern int Fx_i(x);
53 extern int Fxx_i(x fnptr, x fnptr2);
54 extern int Fxxx_i(x fnptr, x fnptr2, x fnptr3);
55 extern int Fxxi_i(x fnptr, x fnptr2, x fnptr3, int i);
56 extern int Fxix_i(x fnptr, int i, x fnptr3);
57 extern int Fxyxy_i(x fnptr, y fnptr2, x fnptr3, y fnptr4);
58 
59 
60 extern void Fmyclass_v(myclass m);
61 extern void Fmxmx_v(myclass arg1, x arg2, myclass arg3, x arg4);
62 
main()63 int main ()
64 {
65   int i;
66 
67   i = Fi_i (0);
68   i = Fii_i (0,0);
69   i = Fiii_i (0,0,0);
70   i = Fie_i (0);
71 
72   Fv_v ();
73   Fv_c ();
74   Fv_Sc ();
75   Fv_Uc ();
76   Fv_s ();
77   Fv_Us ();
78   Fv_i ();
79   Fv_Ci ();
80   Fv_Ui ();
81   Fv_Vi ();
82   Fv_l ();
83   Fv_Ul ();
84   Fv_f ();
85   Fv_g ();
86   Fv_Lg ();
87 
88   Fv_Pv ();
89   Fv_PPv ();
90 
91   Fv_Ri ();
92 
93   FPi_i (&i);
94   FA10_i_i (&i);
95   Fc_i ('a');
96   Ff_i (1.1f);
97   Fg_i (1.1);
98 
99   Fx_i (Fi_i);
100   Fxx_i (Fi_i, Fi_i);
101   Fxxx_i (Fi_i, Fi_i, Fi_i);
102   Fxxi_i (Fi_i, Fi_i, Fi_i, 0);
103   Fxyxy_i (Fi_i, Fi_s, Fi_i, Fi_s);
104 
105   myclass a,c;
106   myclass* b;
107 
108   a.Fi_i (0);
109   a.Fis_i (0);
110   a++;
111   c = a + 2;
112 
113   nested n;
114   n.Fi_i (0);
115 
116   b = (myclass*) new myclass(0);
117   delete (b);
118   Fmyclass_v (a);
119 
120   return 0;
121 }
122