#ifdefined(__aarch64__) /** *Thesizeinwordsofanarm64jmp_buf.Roomforcallee-savedregisters, *includingfloatingpoint,stackpointerandprogramcounter,various *internalimplementationdetails,andleavingsomefreespace. * *CoincidentallymatchesOpenBSD,thoughtheyalsosave/restorethe *floatingpointstatusregistertoo.
*/ #define _JBLEN 32 #elifdefined(__arm__) /** The size in words of an arm32 jmp_buf. Inherited from OpenBSD. */ #define _JBLEN 64 #elifdefined(__i386__) /** The size in words of an x86 jmp_buf. Inherited from OpenBSD. */ #define _JBLEN 10 #elifdefined(__riscv) /** *Thesizeinwordsofariscv64jmp_buf.Roomforcallee-savedregisters, *includingfloatingpoint,stackpointerandprogramcounter,various *internalimplementationdetails,andleavinglotsoffreespace. * *Deliberatelyverylargegiventheuncertaintyaroundthefinalformof *hardwareshadowstack,andthefactthatx86-64glibcneededtosteal *spacefromtheirenormoussigset_t(whichwedon'thave)tobeableto *implementtheCETshadowstack.
*/ #define _JBLEN 64 #elifdefined(__x86_64__) /** The size in words of an x86-64 jmp_buf. Inherited from OpenBSD. */ #define _JBLEN 11 #endif
/** The type of the buffer used by sigsetjmp()/siglongjmp(). */ typedeflong sigjmp_buf[_JBLEN + 1];
/** The type of the buffer used by setjmp()/longjmp(). */ typedeflong jmp_buf[_JBLEN];
#undef _JBLEN
/** *Equivalenttosigsetjmp()withthesecondargument0,sothatthesignal *maskisnotsaved.
*/ int _setjmp(jmp_buf __env) __returns_twice;
/** Equivalent to siglongjmp(). */
__noreturn void _longjmp(jmp_buf __env, int __value);
/** *Equivalenttosigsetjmp()withthesecondargument1,sothatthesignal *maskissaved.
*/ int setjmp(jmp_buf __env) __returns_twice;
/** C11 says setjmp() must be a macro, but Android already had a function. */ #define setjmp(__env) setjmp(__env)
/** Equivalent to siglongjmp(). */
__noreturn void longjmp(jmp_buf __env, int __value);
/** *[sigsetjmp(3)](https://man7.org/linux/man-pages/man3/sigsetjmp.3.html) *setsthetargetofafuturesiglongjmp()call,savingornotsavingthe *currentsignalmaskbasedonthesecondargument. * *Returns0whenfirstcalled,andreturnsthevaluepassedtosiglongjmp() *whenreturninghereasaresultofasiglongjmp()call.
*/ int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.