Index: src/amiga-library.h ================================================================== --- src/amiga-library.h +++ src/amiga-library.h @@ -23,10 +23,14 @@ #else # define OF_M68K_ARG(type, name, reg) \ register type reg_##name __asm__(#reg); \ type name = reg_##name; #endif + +#ifdef OF_MORPHOS +# include +#endif typedef void (*OFSignalHandler)(int); struct OFLibC { /* @@ -97,12 +101,16 @@ int (*_Nonnull atexit)(void (*_Nonnull)(void)); OFSignalHandler _Nullable (*_Nonnull signal)(int, OFSignalHandler _Nullable); char *_Nullable (*_Nonnull setlocale)(int, const char *_Nullable); int (*_Nonnull _Unwind_Backtrace)(int (*_Nonnull)(void *_Nonnull, void *_Null_unspecified), void *_Null_unspecified); +#ifdef OF_MORPHOS + int (*_Nonnull setjmp)(jmp_buf); + void __dead2 (*_Nonnull longjmp)(jmp_buf, int); +#endif }; extern bool OFInit(unsigned int version, struct OFLibC *_Nonnull libC, FILE *_Nonnull *_Nonnull sF); extern unsigned long *OFHashSeedRef(void); extern void OFPBKDF2Wrapper(const OFPBKDF2Parameters *_Nonnull parameters); extern void OFScryptWrapper(const OFScryptParameters *_Nonnull parameters); Index: src/amiga-library.m ================================================================== --- src/amiga-library.m +++ src/amiga-library.m @@ -629,10 +629,24 @@ int _Unwind_Backtrace(int (*callback)(void *, void *), void *data) { return libC._Unwind_Backtrace(callback, data); } + +#ifdef OF_MORPHOS +int +setjmp(jmp_buf env) +{ + return libC.setjmp(env); +} + +void +longjmp(jmp_buf env, int val) +{ + libC.longjmp(env, val); +} +#endif void OFPBKDF2Wrapper(const OFPBKDF2Parameters *parameters) { OFPBKDF2(*parameters);