Home | History | Annotate | Download | only in ltrace.main
      1 #include <string.h>
      2 #include <stdio.h>
      3 
      4 void func_ignore(int a, int b, int c)
      5 {
      6 	printf("%d\n", a + b + c);
      7 }
      8 
      9 void func_intptr(int *i)
     10 {
     11 	printf("%d\n", *i);
     12 }
     13 
     14 void func_intptr_ret(int *i)
     15 {
     16 	*i = 42;
     17 }
     18 
     19 int func_strlen(char* p)
     20 {
     21 	strcpy(p, "Hello world");
     22 	return strlen(p);
     23 }
     24 
     25 int func_arg0(char *p)
     26 {
     27 	strcpy(p, "Hello another world!");
     28 	return strlen(p);
     29 }
     30 
     31 void func_strfixed(char* p)
     32 {
     33 	strcpy(p, "Hello world");
     34 }
     35 
     36 void func_string(char* p)
     37 {
     38 	printf("%s\n", p);
     39 }
     40 
     41 void func_ppp(int*** ppp)
     42 {
     43 	printf("%d\n", ***ppp);
     44 }
     45 
     46 void func_stringp(char** sP)
     47 {
     48 	printf("%s\n", *sP);
     49 }
     50 
     51 void func_enum(int x)
     52 {
     53 	printf("enum: %d\n", x);
     54 }
     55 
     56 void func_short(short x1, short x2)
     57 {
     58 	printf("short: %hd %hd\n", x1, x2);
     59 }
     60 
     61 void func_ushort(unsigned short x1, unsigned short x2)
     62 {
     63 	printf("ushort: %hu %hu\n", x1, x2);
     64 }
     65 
     66 float func_float(float f1, float f2)
     67 {
     68 	printf("%f %f\n", f1, f2);
     69 	return f1;
     70 }
     71 
     72 double func_double(double f1, double f2)
     73 {
     74 	printf("%f %f\n", f1, f2);
     75 	return f2;
     76 }
     77 
     78 void func_typedef(int x)
     79 {
     80 	printf("typedef'd enum: %d\n", x);
     81 }
     82 
     83 void func_arrayi(int* a, int N)
     84 {
     85     int i;
     86     printf("array[int]: ");
     87     for (i = 0; i < N; i++)
     88 	printf("%d ", a[i]);
     89     printf("\n");
     90 }
     91 
     92 void func_arrayf(float* a, int N)
     93 {
     94     int i;
     95     printf("array[float]: ");
     96     for (i = 0; i < N; i++)
     97 	printf("%f ", a[i]);
     98     printf("\n");
     99 }
    100 
    101 struct test_struct {
    102     int simple;
    103     int alen;
    104     int slen;
    105     struct { int a; int b; }* array;
    106     struct { int a; int b; } seq[3];
    107     char* str;
    108     char* outer_str;
    109 };
    110 
    111 void func_struct(struct test_struct* x)
    112 {
    113     char buf[100];
    114     int i;
    115 
    116     printf("struct: ");
    117 
    118     printf("%d, [", x->simple);
    119     for (i = 0; i < x->alen; i++) {
    120 	printf("%d/%d", x->array[i].a, x->array[i].b);
    121 	if (i < x->alen - 1)
    122 	    printf(" ");
    123     }
    124     printf("] [");
    125     for (i = 0; i < 3; i++) {
    126 	printf("%d/%d", x->seq[i].a, x->seq[i].b);
    127 	if (i < 2)
    128 	    printf(" ");
    129     }
    130     printf("] ");
    131 
    132     strncpy(buf, x->str, x->slen);
    133     buf[x->slen] = '\0';
    134     printf("%s\n", buf);
    135 }
    136 
    137 void func_work (char *x)
    138 {
    139   *x = 'x';
    140 }
    141 
    142 void func_call (char *x, char* y, void (*cb) (char *))
    143 {
    144   cb (y);
    145   *x = (*y)++;
    146 }
    147 
    148 struct S2 {
    149 	float f;
    150 	char a;
    151 	char b;
    152 };
    153 
    154 struct S3 {
    155 	char a[6];
    156 	float f;
    157 };
    158 
    159 struct S2
    160 func_struct_2(int i, struct S3 s3, double d)
    161 {
    162 	return (struct S2){ s3.f, s3.a[1], s3.a[2] };
    163 }
    164 
    165 struct S4 {
    166 	long a;
    167 	long b;
    168 	long c;
    169 	long d;
    170 };
    171 
    172 struct S4
    173 func_struct_large(struct S4 a, struct S4 b)
    174 {
    175 	return (struct S4){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d };
    176 }
    177 
    178 struct S5 {
    179 	char a;
    180 	char b;
    181 	long c;
    182 	long d;
    183 };
    184 
    185 struct S5
    186 func_struct_large2(struct S5 a, struct S5 b)
    187 {
    188 	return (struct S5){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d };
    189 }
    190 
    191 struct S6 {
    192 	long a;
    193 	long b;
    194 	char c;
    195 	char d;
    196 };
    197 
    198 struct S6
    199 func_struct_large3(struct S6 a, struct S6 b)
    200 {
    201 	return (struct S6){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d };
    202 }
    203 
    204 void
    205 func_many_args(int a, int b, long c, double d, char e, int f, float g, char h,
    206 	       int i, double j, int k, double l, char m, int n, short o, int p,
    207 	       char q, float r, float s, double t, long u, float v, float w,
    208 	       float x, float y)
    209 {
    210 }
    211 
    212 void
    213 func_lens(int a, long b, short c, long d)
    214 {
    215 }
    216 
    217 int
    218 func_bool(int a, int b)
    219 {
    220 	return !b;
    221 }
    222 
    223 void
    224 func_hide(int a, int b, int c, int d, int e, int f)
    225 {
    226 }
    227 
    228 struct func_hide_struct {
    229 	int a; int b; int c; int d; int e; int f; int g; int h;
    230 };
    231 
    232 void
    233 func_hide_struct(struct func_hide_struct s)
    234 {
    235 }
    236 
    237 long *
    238 func_short_enums(short values[])
    239 {
    240 	static long retvals[4];
    241 	retvals[0] = values[0];
    242 	retvals[1] = values[1];
    243 	retvals[2] = values[2];
    244 	retvals[3] = values[3];
    245 	return retvals;
    246 }
    247 
    248 long
    249 func_negative_enum(short a, unsigned short b, int c, unsigned d,
    250 		   long e, unsigned long f)
    251 {
    252 	return -1;
    253 }
    254 
    255 void
    256 func_charp_string(char *p)
    257 {
    258 }
    259 
    260 struct struct_empty {};
    261 struct struct_size1 { char a; };
    262 struct struct_size2 { short a; };
    263 struct struct_size4 { int a; };
    264 struct struct_size8 { int a; int b; };
    265 
    266 struct struct_empty
    267 func_struct_empty(struct struct_empty e)
    268 {
    269 	return e;
    270 }
    271 
    272 struct struct_size1
    273 func_struct_size1(struct struct_size1 e)
    274 {
    275 	return e;
    276 }
    277 
    278 struct struct_size2
    279 func_struct_size2(struct struct_size2 e)
    280 {
    281 	return e;
    282 }
    283 
    284 struct struct_size4
    285 func_struct_size4(struct struct_size4 e)
    286 {
    287 	return e;
    288 }
    289 
    290 struct struct_size8
    291 func_struct_size8(struct struct_size8 e)
    292 {
    293 	return e;
    294 }
    295 
    296 void
    297 func_printf(char *format, ...)
    298 {
    299 }
    300 
    301 void
    302 func_sprintf(char *str, char *format, ...)
    303 {
    304 }
    305