1 /* Same as va-arg-2.c but using varargs.h. */
2 /* The purpose of this test is to catch edge cases when arguments are passed
3 in regs and on the stack. We test 16 cases, trying to catch multiple
4 targets (some use 3 regs for argument passing, some use 12, etc.).
5 We test both the arguments and the `lastarg' (the argument to va_start). */
16 extern __SIZE_TYPE__ strlen ();
19 to_hex (unsigned int a)
21 static char hex[] = "0123456789abcdef";
36 format = va_arg (ap, char *);
37 if (strlen (format) != 16 - 0)
40 if (*format++ != to_hex (va_arg (ap, int)))
54 format = va_arg (ap, char *);
55 if (strlen (format) != 16 - 1)
58 if (*format++ != to_hex (va_arg (ap, int)))
72 format = va_arg (ap, char *);
73 if (strlen (format) != 16 - 2)
76 if (*format++ != to_hex (va_arg (ap, int)))
82 f3 (a1, a2, a3, va_alist)
90 format = va_arg (ap, char *);
91 if (strlen (format) != 16 - 3)
94 if (*format++ != to_hex (va_arg (ap, int)))
100 f4 (a1, a2, a3, a4, va_alist)
108 format = va_arg (ap, char *);
109 if (strlen (format) != 16 - 4)
112 if (*format++ != to_hex (va_arg (ap, int)))
118 f5 (a1, a2, a3, a4, a5, va_alist)
119 int a1, a2, a3, a4, a5;
126 format = va_arg (ap, char *);
127 if (strlen (format) != 16 - 5)
130 if (*format++ != to_hex (va_arg (ap, int)))
136 f6 (a1, a2, a3, a4, a5, a6, va_alist)
137 int a1, a2, a3, a4, a5, a6;
144 format = va_arg (ap, char *);
145 if (strlen (format) != 16 - 6)
148 if (*format++ != to_hex (va_arg (ap, int)))
154 f7 (a1, a2, a3, a4, a5, a6, a7, va_alist)
155 int a1, a2, a3, a4, a5, a6, a7;
162 format = va_arg (ap, char *);
163 if (strlen (format) != 16 - 7)
166 if (*format++ != to_hex (va_arg (ap, int)))
172 f8 (a1, a2, a3, a4, a5, a6, a7, a8, va_alist)
173 int a1, a2, a3, a4, a5, a6, a7, a8;
180 format = va_arg (ap, char *);
181 if (strlen (format) != 16 - 8)
184 if (*format++ != to_hex (va_arg (ap, int)))
190 f9 (a1, a2, a3, a4, a5, a6, a7, a8, a9, va_alist)
191 int a1, a2, a3, a4, a5, a6, a7, a8, a9;
198 format = va_arg (ap, char *);
199 if (strlen (format) != 16 - 9)
202 if (*format++ != to_hex (va_arg (ap, int)))
208 f10 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, va_alist)
209 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
216 format = va_arg (ap, char *);
217 if (strlen (format) != 16 - 10)
220 if (*format++ != to_hex (va_arg (ap, int)))
226 f11 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11,
228 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11;
235 format = va_arg (ap, char *);
236 if (strlen (format) != 16 - 11)
239 if (*format++ != to_hex (va_arg (ap, int)))
245 f12 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, va_alist)
246 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12;
253 format = va_arg (ap, char *);
254 if (strlen (format) != 16 - 12)
257 if (*format++ != to_hex (va_arg (ap, int)))
263 f13 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, va_alist)
264 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13;
271 format = va_arg (ap, char *);
272 if (strlen (format) != 16 - 13)
275 if (*format++ != to_hex (va_arg (ap, int)))
281 f14 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, va_alist)
282 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14;
289 format = va_arg (ap, char *);
290 if (strlen (format) != 16 - 14)
293 if (*format++ != to_hex (va_arg (ap, int)))
299 f15 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, va_alist)
300 int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15;
307 format = va_arg (ap, char *);
308 if (strlen (format) != 16 - 15)
311 if (*format++ != to_hex (va_arg (ap, int)))
318 char *f = "0123456789abcdef";
320 f0 (f+0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
321 f1 (0, f+1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
322 f2 (0, 1, f+2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
323 f3 (0, 1, 2, f+3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
324 f4 (0, 1, 2, 3, f+4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
325 f5 (0, 1, 2, 3, 4, f+5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
326 f6 (0, 1, 2, 3, 4, 5, f+6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
327 f7 (0, 1, 2, 3, 4, 5, 6, f+7, 7, 8, 9, 10, 11, 12, 13, 14, 15);
328 f8 (0, 1, 2, 3, 4, 5, 6, 7, f+8, 8, 9, 10, 11, 12, 13, 14, 15);
329 f9 (0, 1, 2, 3, 4, 5, 6, 7, 8, f+9, 9, 10, 11, 12, 13, 14, 15);
330 f10 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, f+10, 10, 11, 12, 13, 14, 15);
331 f11 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, f+11, 11, 12, 13, 14, 15);
332 f12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, f+12, 12, 13, 14, 15);
333 f13 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, f+13, 13, 14, 15);
334 f14 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, f+14, 14, 15);
335 f15 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, f+15, 15);
339 #endif /* ! NO_VARARGS */