From 09ddd20fb6e03844a2e78f45bfac1da8ac657cd8 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 7 Apr 2013 15:27:38 +0200 Subject: [PATCH] Add alloca.h. --- libc/include/alloca.h | 51 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 libc/include/alloca.h diff --git a/libc/include/alloca.h b/libc/include/alloca.h new file mode 100644 index 00000000..96fca4f1 --- /dev/null +++ b/libc/include/alloca.h @@ -0,0 +1,51 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2013. + + This file is part of the Sortix C Library. + + The Sortix C Library is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + The Sortix 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 Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with the Sortix C Library. If not, see . + + alloca.h + Stack-based memory allocation. + +*******************************************************************************/ + +#ifndef INCLUDE_ALLOCA_H +#define INCLUDE_ALLOCA_H + +#include + +__BEGIN_DECLS + +@include(size_t.h) + +/* If somehow another declaration of alloca happened. This shouldn't happen, but + glibc does this and we might as well do it also. */ +#undef alloca + +/* Declare a function prototype despite that there really is no alloca function + in Sortix. The compiler will normally be run with -fbuiltin and simply use + the compiler builtin as intended. */ +void* alloca(size_t); + +/* In case the compilation is run with -fno-builtin, we'll call the builtin + function directly, since there is no alloca function in the first place. You + can simply undef this if you want the real prototype, which will give a link + error if -fno-builtin is passed. */ +#define alloca(size) __builtin_alloca(size) + +__END_DECLS + +#endif