diff --git a/lang/cem/libcc.ansi/headers/setjmp.h b/lang/cem/libcc.ansi/headers/setjmp.h index 804c91b3..b15673d8 100644 --- a/lang/cem/libcc.ansi/headers/setjmp.h +++ b/lang/cem/libcc.ansi/headers/setjmp.h @@ -1,5 +1,5 @@ /* - * setjmp.h - restore calling environment + * setjmp.h - save/restore calling environment * * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". @@ -12,11 +12,18 @@ /* In a jmp_buf, there is room for: 1 mask (long), 1 flag (int) and 3 * pointers (stack-pointer, local base and program-counter). This may be * too big, but that doesn't matter. It could also be too small, when - * sigset_t is larger than a long. + * sigset_t is larger than a long. The fields is in the structure have no + * meaning, they just get the size right. * The identifier __setjmp has a special meaning to the compiler. */ -typedef char jmp_buf[ sizeof(long) + sizeof(int) + 3 * sizeof(void *)]; +typedef struct { + long __mask; + int __flag; + void (*__pc)(); + void *__sp; + void *__lb; +} jmp_buf[1]; int __setjmp(jmp_buf _env, int _savemask);