diff options
author | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2024-02-04 16:16:35 +0800 |
commit | 6ce4ebed87858ecdd79a1091367c6e961055daa9 (patch) | |
tree | 1c2a6a60531acf791531bbd9c8ac14c23ef8a66c /aarch64-none-linux-gnu/libc/usr/include/setjmp.h |
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
Change-Id: I7303388733328cd98ab9aa3c30236db67f2e9e9c
Diffstat (limited to 'aarch64-none-linux-gnu/libc/usr/include/setjmp.h')
-rw-r--r-- | aarch64-none-linux-gnu/libc/usr/include/setjmp.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/aarch64-none-linux-gnu/libc/usr/include/setjmp.h b/aarch64-none-linux-gnu/libc/usr/include/setjmp.h new file mode 100644 index 0000000..3cdc2df --- /dev/null +++ b/aarch64-none-linux-gnu/libc/usr/include/setjmp.h @@ -0,0 +1,92 @@ +/* Copyright (C) 1991-2023 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +/* + * ISO C99 Standard: 7.13 Nonlocal jumps <setjmp.h> + */ + +#ifndef _SETJMP_H +#define _SETJMP_H 1 + +#include <features.h> + +__BEGIN_DECLS + +#include <bits/setjmp.h> /* Get `__jmp_buf'. */ +#include <bits/types/struct___jmp_buf_tag.h> + +typedef struct __jmp_buf_tag jmp_buf[1]; + +/* Store the calling environment in ENV, also saving the signal mask. + Return 0. */ +extern int setjmp (jmp_buf __env) __THROWNL; + +/* Store the calling environment in ENV, also saving the + signal mask if SAVEMASK is nonzero. Return 0. + This is the internal name for `sigsetjmp'. */ +extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROWNL; + +/* Store the calling environment in ENV, not saving the signal mask. + Return 0. */ +extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROWNL; + +/* Do not save the signal mask. This is equivalent to the `_setjmp' + BSD function. */ +#define setjmp(env) _setjmp (env) + + +/* Jump to the environment saved in ENV, making the + `setjmp' call there return VAL, or 1 if VAL is 0. */ +extern void longjmp (struct __jmp_buf_tag __env[1], int __val) + __THROWNL __attribute__ ((__noreturn__)); + +#if defined __USE_MISC || defined __USE_XOPEN +/* Same. Usually `_longjmp' is used with `_setjmp', which does not save + the signal mask. But it is how ENV was saved that determines whether + `longjmp' restores the mask; `_longjmp' is just an alias. */ +extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) + __THROWNL __attribute__ ((__noreturn__)); +#endif + + +#ifdef __USE_POSIX +/* Use the same type for `jmp_buf' and `sigjmp_buf'. + The `__mask_was_saved' flag determines whether + or not `longjmp' will restore the signal mask. */ +typedef struct __jmp_buf_tag sigjmp_buf[1]; + +/* Store the calling environment in ENV, also saving the + signal mask if SAVEMASK is nonzero. Return 0. */ +# define sigsetjmp(env, savemask) __sigsetjmp (env, savemask) + +/* Jump to the environment saved in ENV, making the + sigsetjmp call there return VAL, or 1 if VAL is 0. + Restore the signal mask if that sigsetjmp call saved it. + This is just an alias `longjmp'. */ +extern void siglongjmp (sigjmp_buf __env, int __val) + __THROWNL __attribute__ ((__noreturn__)); +#endif /* Use POSIX. */ + + +/* Define helper functions to catch unsafe code. */ +#if __USE_FORTIFY_LEVEL > 0 +# include <bits/setjmp2.h> +#endif + +__END_DECLS + +#endif /* setjmp.h */ |