121 lines
2.2 KiB
C++
121 lines
2.2 KiB
C++
/* Ltrace Test : demangle.cpp
|
|
Objectives : Verify that ltrace can demangle C++ symbols.
|
|
|
|
This file was written by Yao Qi <qiyao@cn.ibm.com>. */
|
|
|
|
#include<stddef.h>
|
|
#include"demangle.h"
|
|
|
|
/* Number of arguments */
|
|
extern int Fi_i(int);
|
|
extern int Fi_s (short);
|
|
extern int Fii_i(int , int);
|
|
extern int Fiii_i(int, int, int);
|
|
extern int Fie_i(int bar, ...);
|
|
|
|
/* Return types */
|
|
extern void Fv_v(void);
|
|
extern char Fv_c(void);
|
|
extern signed char Fv_Sc(void);
|
|
extern unsigned char Fv_Uc(void);
|
|
extern short Fv_s(void);
|
|
extern unsigned short Fv_Us(void);
|
|
extern int Fv_i(void);
|
|
extern const int Fv_Ci(void);
|
|
extern unsigned int Fv_Ui(void);
|
|
extern volatile int Fv_Vi(void);
|
|
extern long Fv_l(void);
|
|
extern unsigned long Fv_Ul(void);
|
|
extern float Fv_f(void) ;
|
|
extern double Fv_g(void);
|
|
extern long double Fv_Lg(void);
|
|
|
|
|
|
/* Pointers */
|
|
extern void * Fv_Pv(void);
|
|
extern void ** Fv_PPv(void);
|
|
|
|
/* References */
|
|
extern int& Fv_Ri(void);
|
|
|
|
/* Argument types */
|
|
extern int FPi_i(int *a);
|
|
extern int FA10_i_i(int a[10]) ;
|
|
extern int Fc_i(char bar);
|
|
extern int Ff_i(float bar);
|
|
extern int Fg_i(double bar);
|
|
|
|
/* Function pointers */
|
|
typedef int (*x)(int);
|
|
typedef int (*y)(short);
|
|
|
|
extern int Fx_i(x);
|
|
extern int Fxx_i(x fnptr, x fnptr2);
|
|
extern int Fxxx_i(x fnptr, x fnptr2, x fnptr3);
|
|
extern int Fxxi_i(x fnptr, x fnptr2, x fnptr3, int i);
|
|
extern int Fxix_i(x fnptr, int i, x fnptr3);
|
|
extern int Fxyxy_i(x fnptr, y fnptr2, x fnptr3, y fnptr4);
|
|
|
|
|
|
extern void Fmyclass_v(myclass m);
|
|
extern void Fmxmx_v(myclass arg1, x arg2, myclass arg3, x arg4);
|
|
|
|
int main ()
|
|
{
|
|
int i;
|
|
|
|
i = Fi_i (0);
|
|
i = Fii_i (0,0);
|
|
i = Fiii_i (0,0,0);
|
|
i = Fie_i (0);
|
|
|
|
Fv_v ();
|
|
Fv_c ();
|
|
Fv_Sc ();
|
|
Fv_Uc ();
|
|
Fv_s ();
|
|
Fv_Us ();
|
|
Fv_i ();
|
|
Fv_Ci ();
|
|
Fv_Ui ();
|
|
Fv_Vi ();
|
|
Fv_l ();
|
|
Fv_Ul ();
|
|
Fv_f ();
|
|
Fv_g ();
|
|
Fv_Lg ();
|
|
|
|
Fv_Pv ();
|
|
Fv_PPv ();
|
|
|
|
Fv_Ri ();
|
|
|
|
FPi_i (&i);
|
|
FA10_i_i (&i);
|
|
Fc_i ('a');
|
|
Ff_i (1.1f);
|
|
Fg_i (1.1);
|
|
|
|
Fx_i (Fi_i);
|
|
Fxx_i (Fi_i, Fi_i);
|
|
Fxxx_i (Fi_i, Fi_i, Fi_i);
|
|
Fxxi_i (Fi_i, Fi_i, Fi_i, 0);
|
|
Fxyxy_i (Fi_i, Fi_s, Fi_i, Fi_s);
|
|
|
|
myclass a,c;
|
|
myclass* b;
|
|
|
|
a.Fi_i (0);
|
|
a.Fis_i (0);
|
|
a++;
|
|
c = a + 2;
|
|
|
|
nested n;
|
|
n.Fi_i (0);
|
|
|
|
b = (myclass*) new myclass(0);
|
|
delete (b);
|
|
Fmyclass_v (a);
|
|
|
|
return 0;
|
|
}
|