mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 05:02:45 +00:00 
			
		
		
		
	 33260ea99b
			
		
	
	
		33260ea99b
		
	
	
	
	
		
			
			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 :^)
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			670 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 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
 |