1 #include <stdarg.h>
2 #include <stdio.h>
3
4 /*
5 * 07/21/08: Offsets for stack char/short parameters were messed up, so
6 * stdarg stuff didn't work.
7 */
8 void
bar(char d,...)9 bar(char d, ...) {
10 unsigned long long x;
11 va_list v;
12 va_start(v, d);
13 x = va_arg(v, unsigned long long);
14 printf("%d, %lld\n", d, x);
15 va_end(v);
16 }
17
18 void
bar2(short d,...)19 bar2(short d, ...) {
20 unsigned long long x;
21 va_list v;
22 va_start(v, d);
23 x = va_arg(v, unsigned long long);
24 printf("%d, %lld\n", d, x);
25
26 va_end(v);
27 }
28
29 void
bar3(char x,short y,int i,char f,char d,...)30 bar3(char x, short y, int i, char f, char d, ...) {
31 unsigned long long lx;
32 va_list v;
33 va_start(v, d);
34 lx = va_arg(v, unsigned long long);
35 printf("%d, %lld\n", d, lx);
36 printf(" [%d, %d, %d, %d]\n", x, y, i, f);
37 va_end(v);
38 }
39 void
bar4(short s,short s2,short s3,char d,...)40 bar4(short s, short s2, short s3, char d, ...) {
41 unsigned long long x;
42 va_list v;
43 va_start(v, d);
44 x = va_arg(v, unsigned long long);
45 printf("%d, %lld\n", d, x);
46 printf(" [%d, %d, %d]\n", s, s2, s3);
47 va_end(v);
48 }
49
50 int
main(void)51 main(void) {
52 bar(0, 16LL);
53 bar2(1, 32LL);
54 bar3(33, 22, 11, 44, 2, 600000000000000LL);
55 bar4(777, 666, 555, 3, 0x1ffffffffffffLL);
56 exit(0);
57 }
58
59