ladybird/Userland/Libraries/LibC/setjmp.h
Andreas Kling 33260ea99b LibC: Fix jmp_buf layout on x86_64
This struct was too small on x86_64, but setjmp() would happily write
past the end of it.

This makes `test-js` run to completion on x86_64 :^)
2021-07-01 12:05:59 +02:00

39 lines
670 B
C

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <bits/stdint.h>
#include <signal.h>
#include <stdbool.h>
#include <sys/cdefs.h>
#include <sys/types.h>
__BEGIN_DECLS
struct __jmp_buf {
#ifdef __i386__
uint32_t regs[6];
#elif __x86_64__
uint64_t regs[8];
#else
# error
#endif
bool did_save_signal_mask;
sigset_t saved_signal_mask;
};
typedef struct __jmp_buf jmp_buf[1];
typedef struct __jmp_buf sigjmp_buf[1];
int setjmp(jmp_buf);
void longjmp(jmp_buf, int val);
int sigsetjmp(sigjmp_buf, int savesigs);
void siglongjmp(sigjmp_buf, int val);
__END_DECLS