1#ifndef _ALLOCA_H
2
3#include <stdlib/alloca.h>
4
5# ifndef _ISOMAC
6
7#include <stackinfo.h>
8
9#undef __alloca
10
11/* Now define the internal interfaces. */
12extern void *__alloca (size_t __size);
13
14#ifdef __GNUC__
15# define __alloca(size) __builtin_alloca (size)
16#endif /* GCC. */
17
18extern int __libc_use_alloca (size_t size) __attribute__ ((const));
19extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
20libc_hidden_proto (__libc_alloca_cutoff)
21
22#define __MAX_ALLOCA_CUTOFF 65536
23
24#include <allocalim.h>
25
26#if defined stackinfo_get_sp && defined stackinfo_sub_sp
27# define alloca_account(size, avar) \
28 ({ void *old__ = stackinfo_get_sp (); \
29 void *m__ = __alloca (size); \
30 avar += stackinfo_sub_sp (old__); \
31 m__; })
32#else
33# define alloca_account(size, avar) \
34 ({ size_t s__ = (size); \
35 avar += s__; \
36 __alloca (s__); })
37#endif
38
39# endif /* !_ISOMAC */
40#endif
41

source code of glibc/include/alloca.h