Blame include/setjmp.h

Packit 6c4009
#ifndef _SETJMP_H
Packit 6c4009
#include <setjmp/setjmp.h>
Packit 6c4009
Packit 6c4009
#ifndef _ISOMAC
Packit 6c4009
/* Now define the internal interfaces.  */
Packit 6c4009
Packit 6c4009
/* Internal machine-dependent function to restore context sans signal mask.  */
Packit 6c4009
extern void __longjmp (__jmp_buf __env, int __val)
Packit 6c4009
     __attribute__ ((__noreturn__)) attribute_hidden;
Packit 6c4009
Packit 6c4009
extern void ____longjmp_chk (__jmp_buf __env, int __val)
Packit 6c4009
     __attribute__ ((__noreturn__)) attribute_hidden;
Packit 6c4009
Packit 6c4009
/* Internal function to possibly save the current mask of blocked signals
Packit 6c4009
   in ENV, and always set the flag saying whether or not it was saved.
Packit 6c4009
   This is used by the machine-dependent definition of `__sigsetjmp'.
Packit 6c4009
   Always returns zero, for convenience.  */
Packit 6c4009
extern int __sigjmp_save (jmp_buf __env, int __savemask);
Packit 6c4009
Packit 6c4009
extern void _longjmp_unwind (jmp_buf env, int val);
Packit 6c4009
Packit 6c4009
extern void __libc_siglongjmp (sigjmp_buf env, int val)
Packit 6c4009
	  __attribute__ ((noreturn));
Packit 6c4009
extern void __libc_longjmp (sigjmp_buf env, int val)
Packit 6c4009
     __attribute__ ((noreturn));
Packit 6c4009
Packit 6c4009
libc_hidden_proto (_setjmp)
Packit 6c4009
libc_hidden_proto (__sigsetjmp)
Packit 6c4009
Packit 6c4009
# if IS_IN (rtld) && !defined NO_RTLD_HIDDEN
Packit 6c4009
extern __typeof (__sigsetjmp) __sigsetjmp attribute_hidden;
Packit 6c4009
# endif
Packit 6c4009
Packit 6c4009
/* Check jmp_buf sizes, alignments and offsets.  */
Packit 6c4009
# include <stddef.h>
Packit 6c4009
# include <jmp_buf-macros.h>
Packit 6c4009
Packit 6c4009
# define STR_HELPER(x) #x
Packit 6c4009
# define STR(x) STR_HELPER(x)
Packit 6c4009
Packit 6c4009
# define TEST_SIZE(type, size) \
Packit 6c4009
  _Static_assert (sizeof (type) == size, \
Packit 6c4009
		  "size of " #type " != " \
Packit 6c4009
		  STR (size))
Packit 6c4009
# define TEST_ALIGN(type, align) \
Packit 6c4009
  _Static_assert (__alignof__ (type) == align , \
Packit 6c4009
		  "align of " #type " != " \
Packit 6c4009
		  STR (align))
Packit 6c4009
# define TEST_OFFSET(type, member, offset) \
Packit 6c4009
  _Static_assert (offsetof (type, member) == offset, \
Packit 6c4009
		  "offset of " #member " field of " #type " != " \
Packit 6c4009
		  STR (offset))
Packit 6c4009
Packit 6c4009
/* Check if jmp_buf have the expected sizes.  */
Packit 6c4009
TEST_SIZE (jmp_buf, JMP_BUF_SIZE);
Packit 6c4009
TEST_SIZE (sigjmp_buf, SIGJMP_BUF_SIZE);
Packit 6c4009
Packit 6c4009
/* Check if jmp_buf have the expected alignments.  */
Packit 6c4009
TEST_ALIGN (jmp_buf, JMP_BUF_ALIGN);
Packit 6c4009
TEST_ALIGN (sigjmp_buf, SIGJMP_BUF_ALIGN);
Packit 6c4009
Packit 6c4009
/* Check if internal fields in jmp_buf have the expected offsets.  */
Packit 6c4009
TEST_OFFSET (struct __jmp_buf_tag, __mask_was_saved,
Packit 6c4009
	     MASK_WAS_SAVED_OFFSET);
Packit 6c4009
TEST_OFFSET (struct __jmp_buf_tag, __saved_mask,
Packit 6c4009
	     SAVED_MASK_OFFSET);
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
#endif