blob: 14cc9f6322588301c625d5b7fcc23016900c54d1 [file] [log] [blame]
/* 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;
}