summaryrefslogtreecommitdiffstats
path: root/include/stdlib.h
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2003-06-25 18:11:32 +0000
committerobrien <obrien@FreeBSD.org>2003-06-25 18:11:32 +0000
commitea9527097aee0f726e4f21feda808b52867c6dd0 (patch)
treeeabbc00cc6957f5edccf911879e997b859b13923 /include/stdlib.h
parentc078152e6c503b000cc07d865e8520d4082e6f21 (diff)
downloadFreeBSD-src-ea9527097aee0f726e4f21feda808b52867c6dd0.zip
FreeBSD-src-ea9527097aee0f726e4f21feda808b52867c6dd0.tar.gz
Don't blindly provide alloca() for all compilers -- it is too implementation
dependent. Instead provide one for GCC & Intel's GCC copy and one for lint. Anyone using any other translator tool needs to look closely at how that tool can handle alloca.
Diffstat (limited to 'include/stdlib.h')
-rw-r--r--include/stdlib.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/include/stdlib.h b/include/stdlib.h
index a348ae1..9b1a1f4 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -222,7 +222,6 @@ extern const char *_malloc_options;
extern void (*_malloc_message)(const char *, const char *, const char *,
const char *);
-#ifndef alloca
/*
* The alloca() function can't be implemented in C, and on some
* platforms it can't be implemented at all as a callable function.
@@ -232,11 +231,13 @@ extern void (*_malloc_message)(const char *, const char *, const char *,
* programs which use it will fail to link when compiled with non-GNU
* compilers.
*/
-#if defined(__GNUC__) || defined(__INTEL_COMPILER)
+#if __GNUC__ >= 2 || defined(__INTEL_COMPILER)
+#undef alloca /* some GNU bits try to get cute and define this on their own */
#define alloca(sz) __builtin_alloca(sz)
-#else
+#elif defined(lint)
void *alloca(size_t);
-#endif
+#error Please add alloca support on all FreeBSD architectures for this compiler.
+#else
#endif
__uint32_t
OpenPOWER on IntegriCloud