#include <stdlib/alloca.h>
+# ifndef _ISOMAC
+
+#include <stackinfo.h>
+
#undef __alloca
/* Now define the internal interfaces. */
# define __alloca(size) __builtin_alloca (size)
#endif /* GCC. */
+extern int __libc_use_alloca (size_t size) __attribute__ ((const));
+extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
+libc_hidden_proto (__libc_alloca_cutoff)
+
+#define __MAX_ALLOCA_CUTOFF 65536
+
+#include <allocalim.h>
+
+#if defined stackinfo_get_sp && defined stackinfo_sub_sp
+# define alloca_account(size, avar) \
+ ({ void *old__ = stackinfo_get_sp (); \
+ void *m__ = __alloca (size); \
+ avar += stackinfo_sub_sp (old__); \
+ m__; })
+#else
+# define alloca_account(size, avar) \
+ ({ size_t s__ = (size); \
+ avar += s__; \
+ __alloca (s__); })
+#endif
+
+# endif /* !_ISOMAC */
#endif