diff options
author | Rich Felker <dalias@aerifal.cx> | 2016-12-15 12:18:24 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-12-15 12:18:24 -0500 |
commit | ffaaa6d230512f3a7f3d040b943517728f3dc3cf (patch) | |
tree | 1a902f53f6a5203d8aa7c5dd73a8e79cac47eb26 | |
parent | 6f1866768a86239672ed811777dfe89994d64a65 (diff) | |
download | musl-ffaaa6d230512f3a7f3d040b943517728f3dc3cf.tar.gz |
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.
-rw-r--r-- | arch/generic/bits/stdarg.h | 4 | ||||
-rw-r--r-- | arch/i386/bits/stdarg.h | 9 | ||||
-rw-r--r-- | include/stdarg.h | 4 |
3 files changed, 0 insertions, 17 deletions
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 <bits/alltypes.h> -#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 <bits/stdarg.h> -#endif #ifdef __cplusplus } |