101 lines · 2.3 KB · C
RawDownload
#pragma once #include <assert.h>#include <ctype.h>#include <float.h>#include <inttypes.h>#include <limits.h>#include <math.h>#include <setjmp.h>#include <stdarg.h>#include <stdbool.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <unistd.h> #if defined(__APPLE__)#include <machine/endian.h>#else#include <endian.h>#endif #if !defined(__SIZEOF_POINTER__)#error pointer size unknown#elif __SIZEOF_POINTER__ == 8#define BITS64#if defined(__aarch64__)// this one's special since aarch64 may use tagged pointers#define FWD_BIT (1ULL<<55)#endif#endif #if !defined(FWD_BIT)#if defined(BITS64)#define FWD_BIT (sl_v)(1ULL<<63)#else#define FWD_BIT (sl_v)(1U<<31)#endif#endif #if defined(__linux__)#define __os_name__ "linux"#elif defined(__OpenBSD__)#define __os_name__ "openbsd"#elif defined(__FreeBSD__)#define __os_name__ "freebsd"#elif defined(__NetBSD__)#define __os_name__ "netbsd"#elif defined(__DragonFly__)#define __os_name__ "dragonflybsd"#elif defined(__APPLE__)#define __os_name__ "macosx"#elif defined(__HAIKU__)#define __os_name__ "haiku"// FIXME(sigrid): why is this not exposed?int vdprintf(int fd, const char *restrict format, va_list ap);#elif defined(__sun__)#define __os_name__ "sun"#undef FWD_BIT // mmap returns top bits set, let's not bother at all#else#define __os_name__ "unknown"#endif extern char *os_version;#define __os_version__ os_version #define SYS_DEV_NULL "/dev/null" typedef sigjmp_buf sl_jmp_buf;#define sl_setjmp(e) sigsetjmp((e), 0)#define sl_longjmp(e, v) siglongjmp((e), (v))#define sys_exit(status, code) do{ \	exit((status) == nil && (code) == 0 ? 0 : (code)); \}while(0)#define sysfatal(...) do{ \	fprintf(stderr, __VA_ARGS__); \	fputc('\n', stderr); \	exit(99); \}while(0) #define getcallerpc(a) __builtin_extract_return_addr(__builtin_return_address(0))#define sys_setcallpc(arg) do{sl.cpc = getcallerpc(&arg); USED(arg);}while(0)void sys_setcurrpc(int dummy);void sys_seed(void *p, int sz); #define nil NULL#define USED(x) ((void)(x))#define nelem(x) (int)(sizeof(x)/sizeof((x)[0])) #if !defined(UBSAN)#if defined(__386__) || defined(__x86_64__) || defined(__aarch64__)#define MEM_UNALIGNED_ACCESS#endif#endif #include "inc/cc.h"#include "inc/mem.h"#include "mp.h"#include "utf.h"

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t