OSDN Git Service

+ added alloca() support for all architectures
authorJohn Beppu <beppu@lbox.org>
Mon, 21 Aug 2000 22:17:17 +0000 (22:17 -0000)
committerJohn Beppu <beppu@lbox.org>
Mon, 21 Aug 2000 22:17:17 +0000 (22:17 -0000)
  by way of gcc's __builtin_alloca().  I think
  I did it right, but we'll see.

include/alloca.h [new file with mode: 0644]
include/stdlib.h

diff --git a/include/alloca.h b/include/alloca.h
new file mode 100644 (file)
index 0000000..741eca7
--- /dev/null
@@ -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 */
index fefaf44..d323d09 100644 (file)
@@ -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));