test: Split-up Mescc scaffold test.
[mes.git] / mlibc / include / stdarg.h
index cea11b7b14f19858b4a6a055233a5d5e5414c13b..24df07fcd05898ef495f894f24ea9fa549cfffbb 100644 (file)
 #if __GNUC__ && POSIX
 #include_next <stdarg.h>
 #else // ! (__GNUC__ && POSIX)
+
+#if __GNUC__
+typedef char* va_list;
+#define va_start(ap, last) (void)((ap) = (char*)(&(last) + 1))
+#else // !__GNUC__
 typedef int va_list;
 #define va_start(ap, last) (void)((ap) = (char*)(&(last) + 4))
-#define va_arg(ap, type) (((type*)((ap) = ((ap) + sizeof(type))))[-1])
+#endif // !__GNUC__
+
+#define va_arg(ap, type) (type)(((int*)((ap) = ((ap) + 4)))[-1])
 #define va_end(ap) (void)((ap) = 0)
 #define va_copy(dest, src) dest = src