diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 19:06:20 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-12-27 19:06:58 +0000 |
commit | 3fcbb67b7949a8b362de5558bf1c6dd7ec5d21cf (patch) | |
tree | b867f9a6d3426f212b2f073bef8067a830f13022 /include/alloca.h | |
parent | b6df7ac2cbe11e6a72f2ab7bd35c6130b72d21d9 (diff) | |
parent | cab56836b146bc129f1ad43f0393d95a9deca63a (diff) |
Merge commit 'refs/top-bases/t/tls-threadvar' into t/tls-threadvar
Diffstat (limited to 'include/alloca.h')
-rw-r--r-- | include/alloca.h | 44 |
1 files changed, 4 insertions, 40 deletions
diff --git a/include/alloca.h b/include/alloca.h index 01500259b8..c0b8395443 100644 --- a/include/alloca.h +++ b/include/alloca.h @@ -1,6 +1,9 @@ #ifndef _ALLOCA_H #include <stdlib/alloca.h> + +# ifndef _ISOMAC + #include <stackinfo.h> #undef __alloca @@ -20,57 +23,18 @@ libc_hidden_proto (__libc_alloca_cutoff) #include <allocalim.h> -#ifndef stackinfo_alloca_round -# define stackinfo_alloca_round(l) (((l) + 15) & -16) -#endif - -#if _STACK_GROWS_DOWN -# define extend_alloca(buf, len, newlen) \ - (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen); \ - char *__newbuf = __alloca (__newlen); \ - if (__newbuf + __newlen == (char *) (buf)) \ - len += __newlen; \ - else \ - len = __newlen; \ - __newbuf; }) -#elif _STACK_GROWS_UP -# define extend_alloca(buf, len, newlen) \ - (__typeof (buf)) ({ size_t __newlen = stackinfo_alloca_round (newlen); \ - char *__newbuf = __alloca (__newlen); \ - char *__buf = (char *) (buf); \ - if (__buf + len == __newbuf) \ - { \ - len += __newlen; \ - __newbuf = __buf; \ - } \ - else \ - len = __newlen; \ - __newbuf; }) -#else -# define extend_alloca(buf, len, newlen) \ - __alloca (((len) = (newlen))) -#endif - #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__; }) -# define extend_alloca_account(buf, len, newlen, avar) \ - ({ void *old__ = stackinfo_get_sp (); \ - void *m__ = extend_alloca (buf, len, newlen); \ - avar += stackinfo_sub_sp (old__); \ - m__; }) #else # define alloca_account(size, avar) \ ({ size_t s__ = (size); \ avar += s__; \ __alloca (s__); }) -# define extend_alloca_account(buf, len, newlen, avar) \ - ({ size_t s__ = (newlen); \ - avar += s__; \ - extend_alloca (buf, len, s__); }) #endif +# endif /* !_ISOMAC */ #endif |