From: Rich Felker Date: Thu, 15 Dec 2016 17:18:24 +0000 (-0500) Subject: remove legacy i386 fallback stdarg implementation and framework X-Git-Tag: v1.1.16~16 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ffaaa6d230512f3a7f3d040b943517728f3dc3cf;p=oweals%2Fmusl.git remove legacy i386 fallback stdarg implementation and framework this has been slated for removal for a long time. there is fundamentally no way to implement stdarg without compiler assistance; any attempt to do so has serious undefined behavior; its working depends not just (as a common misconception goes) on ABI, but also on assumptions about compiler code generation internal to a translation unit, which is not subject to external ABI constraints. --- diff --git a/arch/generic/bits/stdarg.h b/arch/generic/bits/stdarg.h deleted file mode 100644 index fde37814..00000000 --- a/arch/generic/bits/stdarg.h +++ /dev/null @@ -1,4 +0,0 @@ -#define va_start(v,l) __builtin_va_start(v,l) -#define va_end(v) __builtin_va_end(v) -#define va_arg(v,l) __builtin_va_arg(v,l) -#define va_copy(d,s) __builtin_va_copy(d,s) diff --git a/arch/i386/bits/stdarg.h b/arch/i386/bits/stdarg.h deleted file mode 100644 index 6b1830d2..00000000 --- a/arch/i386/bits/stdarg.h +++ /dev/null @@ -1,9 +0,0 @@ -#define __VA_ALIGNED_SIZE(x) ((sizeof(x) + sizeof(int) - 1) & ~(sizeof(int) - 1)) - -#define va_start(ap, last) ((ap) = (void *)(((char *)&(last)) + __VA_ALIGNED_SIZE(last))) -#define va_end(ap) ((void)0) -#define va_copy(dest, src) ((dest) = (src)) - -#define va_arg(ap, type) \ - ( ((ap) = (va_list)((char *)(ap) + __VA_ALIGNED_SIZE(type))), \ - *(type *)(void *)((char *)(ap) - __VA_ALIGNED_SIZE(type)) ) diff --git a/include/stdarg.h b/include/stdarg.h index 60d4e2af..3256f805 100644 --- a/include/stdarg.h +++ b/include/stdarg.h @@ -9,14 +9,10 @@ extern "C" { #include -#if __GNUC__ >= 3 #define va_start(v,l) __builtin_va_start(v,l) #define va_end(v) __builtin_va_end(v) #define va_arg(v,l) __builtin_va_arg(v,l) #define va_copy(d,s) __builtin_va_copy(d,s) -#else -#include -#endif #ifdef __cplusplus }