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