1 /** Tests argument passing to functions via va_args.
2 Assumes that up to the first two arguments can be passed in registers.
11 /* gcc 3.3 throws a warning, if char is in '...' */
12 #if defined(PORT_HOST)
19 returnFirstArg(int marker, ...)
25 i = va_arg(ap, {type1});
29 LOG(("Returning %u\n", i));
34 returnSecondArg(int marker, ...)
40 UNUSED(va_arg(ap, {type1}));
41 i = va_arg(ap, {type2});
45 LOG(("Returning %u\n", i));
50 returnThirdArg(int marker, ...)
56 UNUSED(va_arg(ap, {type1}));
57 UNUSED(va_arg(ap, {type2}));
58 i = va_arg(ap, {type3});
62 LOG(("Returning %u\n", i));
67 disabled_testArgs(void)
71 LOG(("First arg: %u\n", returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67)));
72 ASSERT(returnFirstArg(marker, ({type1})123, ({type2})45, ({type3})67) == 123);
73 ASSERT(returnFirstArg(marker, ({type1})-123, ({type2})45, ({type3})67) == -123);
75 ASSERT(returnSecondArg(marker, ({type1})1, ({type2})-23, ({type3})64) == -23);
76 ASSERT(returnSecondArg(marker, ({type1})1, ({type2})8, ({type3})64) == 8);
78 ASSERT(returnThirdArg(marker, -33, -34, -35) == -35);
79 ASSERT(returnThirdArg(marker, -33, -34, 35) == 35);