From 5173b6de5bb8ec5ff2e6de7e44fbbf49b55ed7d7 Mon Sep 17 00:00:00 2001 From: John Beppu Date: Mon, 21 Aug 2000 22:17:17 +0000 Subject: + added alloca() support for all architectures by way of gcc's __builtin_alloca(). I think I did it right, but we'll see. --- include/alloca.h | 41 +++++++++++++++++++++++++++++++++++++++++ include/stdlib.h | 4 ++++ 2 files changed, 45 insertions(+) create mode 100644 include/alloca.h 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 + +#define __need_size_t +#include + +__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 +#endif /* Use GNU, BSD, or misc. */ + #ifdef DEBUG_MALLOC extern void * malloc_dbg __P ((size_t, char* func, char* file, int line)); -- cgit v1.2.3