summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2016-12-15 12:18:24 -0500
committerRich Felker <dalias@aerifal.cx>2016-12-15 12:18:24 -0500
commitffaaa6d230512f3a7f3d040b943517728f3dc3cf (patch)
tree1a902f53f6a5203d8aa7c5dd73a8e79cac47eb26
parent6f1866768a86239672ed811777dfe89994d64a65 (diff)
downloadmusl-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.h4
-rw-r--r--arch/i386/bits/stdarg.h9
-rw-r--r--include/stdarg.h4
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
}