diff options
author | John Beppu <beppu@lbox.org> | 2000-08-21 22:17:17 +0000 |
---|---|---|
committer | John Beppu <beppu@lbox.org> | 2000-08-21 22:17:17 +0000 |
commit | 5173b6de5bb8ec5ff2e6de7e44fbbf49b55ed7d7 (patch) | |
tree | f9a99fe730775ed7ec748a699ebdf4686a26c0d0 | |
parent | 84866232d9644a02d613e11710d0f3abe8c7a66e (diff) |
+ added alloca() support for all architectures
by way of gcc's __builtin_alloca(). I think
I did it right, but we'll see.
-rw-r--r-- | include/alloca.h | 41 | ||||
-rw-r--r-- | include/stdlib.h | 4 |
2 files changed, 45 insertions, 0 deletions
diff --git a/include/alloca.h b/include/alloca.h new file mode 100644 index 000000000..741eca743 --- /dev/null +++ b/include/alloca.h @@ -0,0 +1,41 @@ +/* Copyright (C) 1992, 1996, 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _ALLOCA_H +#define _ALLOCA_H 1 + +#include <features.h> + +#define __need_size_t +#include <stddef.h> + +__BEGIN_DECLS + +/* Remove any previous definitions. */ +#undef alloca + +/* Allocate a block that will be freed when the calling function exits. */ +extern __ptr_t alloca __P ((size_t __size)); + +#ifdef __GNUC__ +# define alloca(size) __builtin_alloca (size) +#endif /* GCC. */ + +__END_DECLS + +#endif /* alloca.h */ diff --git a/include/stdlib.h b/include/stdlib.h index fefaf447a..d323d099b 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -28,6 +28,10 @@ extern void * calloc __P ((size_t, size_t)); extern void free __P ((void *)); extern void * realloc __P ((void *, size_t)); +#if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC +# include <alloca.h> +#endif /* Use GNU, BSD, or misc. */ + #ifdef DEBUG_MALLOC extern void * malloc_dbg __P ((size_t, char* func, char* file, int line)); |