From: yu.dongliang <18588496441@163.com> Date: Mon, 3 Aug 2026 18:50:05 +0000 (+0800) Subject: 1, add some error check for source code, X-Git-Url: http://baseworks.info/?a=commitdiff_plain;h=721ad8a2be9556d9b60d2ff8b9faff37e8aef68c;p=scf.git 1, add some error check for source code, 2, macro: short logic operator &&, ||, 3, mov ../lib to ../sysroot/lib. --- diff --git a/elf/scf_elf_arm32_so.c b/elf/scf_elf_arm32_so.c index 5049122..fc1dee0 100644 --- a/elf/scf_elf_arm32_so.c +++ b/elf/scf_elf_arm32_so.c @@ -542,7 +542,7 @@ int __arm32_elf_add_dyn (elf_native_t* arm32, const char* sysroot) if ('/' != sysroot[prefix - 1]) prefix++; - prefix += strlen("arm32/"); + prefix += strlen("lib/arm32/"); for (i = 0; i < arm32->dyn_needs->size; i++) { scf_string_t* needed = arm32->dyn_needs->data[i]; diff --git a/elf/scf_elf_arm64_so.c b/elf/scf_elf_arm64_so.c index 803fbc9..783c4e9 100644 --- a/elf/scf_elf_arm64_so.c +++ b/elf/scf_elf_arm64_so.c @@ -544,7 +544,7 @@ int __arm64_elf_add_dyn(elf_native_t* arm64, const char* sysroot) if ('/' != sysroot[prefix - 1]) prefix++; - prefix += strlen("arm64/"); + prefix += strlen("lib/arm64/"); for (i = 0; i < arm64->dyn_needs->size; i++) { scf_string_t* needed = arm64->dyn_needs->data[i]; diff --git a/elf/scf_elf_naja_so.c b/elf/scf_elf_naja_so.c index 073e962..0193d5e 100644 --- a/elf/scf_elf_naja_so.c +++ b/elf/scf_elf_naja_so.c @@ -546,7 +546,7 @@ int __naja_elf_add_dyn(elf_native_t* naja, const char* sysroot) if ('/' != sysroot[prefix - 1]) prefix++; - prefix += strlen("arm64/"); + prefix += strlen("lib/arm64/"); for (i = 0; i < naja->dyn_needs->size; i++) { scf_string_t* needed = naja->dyn_needs->data[i]; diff --git a/elf/scf_elf_x64_so.c b/elf/scf_elf_x64_so.c index 46b1df7..4639d2c 100644 --- a/elf/scf_elf_x64_so.c +++ b/elf/scf_elf_x64_so.c @@ -608,7 +608,7 @@ static int __x64_elf_dyn_needs(elf_native_t* x64, const char* sysroot, scf_strin if ('/' != sysroot[pre - 1]) pre++; - pre += strlen("x64/"); + pre += strlen("lib/x64/"); for (i = 0; i < x64->dyn_needs->size; i++) { need = x64->dyn_needs->data[i]; diff --git a/examples/auto_gc_0.c b/examples/auto_gc_0.c index 76c0e9b..2f71432 100644 --- a/examples/auto_gc_0.c +++ b/examples/auto_gc_0.c @@ -1,4 +1,4 @@ -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" int* f() { diff --git a/examples/auto_gc_1.c b/examples/auto_gc_1.c index f7ad548..15d689e 100644 --- a/examples/auto_gc_1.c +++ b/examples/auto_gc_1.c @@ -1,4 +1,4 @@ -#include"../lib/scf_capi.c" +#include"../sysroot/lib/scf_capi.c" struct Object { diff --git a/examples/auto_gc_multi_rets.c b/examples/auto_gc_multi_rets.c index ee8be80..e2b92e5 100644 --- a/examples/auto_gc_multi_rets.c +++ b/examples/auto_gc_multi_rets.c @@ -1,5 +1,4 @@ - -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" int*, int* f() { diff --git a/examples/complex.c b/examples/complex.c index 1f55158..e8414df 100644 --- a/examples/complex.c +++ b/examples/complex.c @@ -1,5 +1,5 @@ -#include "../lib/scf_capi.c" -#include "../lib/scf_complex.c" +#include "../sysroot/lib/scf_capi.c" +#include "../sysroot/lib/scf_complex.c" int main() { diff --git a/examples/list_test.c b/examples/list_test.c index 7d5985b..5e0c2a7 100644 --- a/examples/list_test.c +++ b/examples/list_test.c @@ -1,5 +1,5 @@ -#include "../lib/scf_list.c" -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_list.c" +#include "../sysroot/lib/scf_capi.c" struct Data { diff --git a/examples/mat.c b/examples/mat.c index 0395a17..8f696a0 100644 --- a/examples/mat.c +++ b/examples/mat.c @@ -1,5 +1,4 @@ - -#include"../lib/scf_capi.c" +#include"../sysroot/lib/scf_capi.c" const int MAT_TYPE_NONE = 0; const int MAT_TYPE_U8 = 1; diff --git a/examples/mat2.c b/examples/mat2.c index 62922ef..78499f3 100644 --- a/examples/mat2.c +++ b/examples/mat2.c @@ -1,5 +1,4 @@ - -#include"../lib/scf_capi.c" +#include"../sysroot/lib/scf_capi.c" const int MAT_TYPE_NONE = 0; const int MAT_TYPE_U8 = 1; diff --git a/examples/mat_mul_strassen.c b/examples/mat_mul_strassen.c index 5b7deeb..6f7903a 100644 --- a/examples/mat_mul_strassen.c +++ b/examples/mat_mul_strassen.c @@ -1,4 +1,4 @@ -#include"../lib/scf_capi.c" +#include"../sysroot/lib/scf_capi.c" #define assert(x)\ do {\ diff --git a/examples/member_array0.c b/examples/member_array0.c index 0c2f233..cfb1da3 100644 --- a/examples/member_array0.c +++ b/examples/member_array0.c @@ -1,4 +1,4 @@ -#include"../lib/scf_capi.c" +#include"../sysroot/lib/scf_capi.c" struct mat { diff --git a/examples/recursive_pointer.c b/examples/recursive_pointer.c index 83ae6bc..b2f1f8a 100644 --- a/examples/recursive_pointer.c +++ b/examples/recursive_pointer.c @@ -1,4 +1,4 @@ -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" int f(int** t0, int **t1); diff --git a/examples/ret2_err.c b/examples/ret2_err.c index 63a4512..38dd665 100644 --- a/examples/ret2_err.c +++ b/examples/ret2_err.c @@ -1,5 +1,4 @@ - -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" struct str { diff --git a/examples/str.c b/examples/str.c index 978f9d0..74bcf54 100644 --- a/examples/str.c +++ b/examples/str.c @@ -1,4 +1,4 @@ -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" struct str { diff --git a/examples/strcpy.c b/examples/strcpy.c index 83bb84c..46189e7 100644 --- a/examples/strcpy.c +++ b/examples/strcpy.c @@ -1,6 +1,6 @@ int printf(const char* fmt, ...); -int scf_strcpy(char* dst, const char* src) +int scf_strcpy(char* restrict dst, const char* __restrict src) { char* p = dst; diff --git a/examples/string.c b/examples/string.c index 9262554..9d258ab 100644 --- a/examples/string.c +++ b/examples/string.c @@ -1,4 +1,4 @@ -#include "../lib/scf_capi.c" +#include "../sysroot/lib/scf_capi.c" struct string { diff --git a/lex/scf_lex.c b/lex/scf_lex.c index c2c69c1..5512eb6 100644 --- a/lex/scf_lex.c +++ b/lex/scf_lex.c @@ -158,7 +158,7 @@ static int _find_escape_char(const int c) return c; } -int scf_lex_open(scf_lex_t** plex, const char* path, scf_string_t* text) +int scf_lex_open(scf_lex_t** plex, const char* path, scf_string_t* text, int c_version) { if (!plex || !path) return -EINVAL; @@ -196,7 +196,8 @@ int scf_lex_open(scf_lex_t** plex, const char* path, scf_string_t* text) lex->asm_flag = 1; } - lex->nb_lines = 1; + lex->nb_lines = 1; + lex->c_version = c_version; *plex = lex; return 0; @@ -450,7 +451,19 @@ static int _lex_identity(scf_lex_t* lex, scf_lex_word_t** pword, scf_char_t* c0) } else if (SCF_CSTR_CMP(s, "__func__")) { w = scf_lex_word_alloc(lex->file, lex->nb_lines, lex->pos, SCF_LEX_WORD_CONST_STRING); + } else { + if (SCF_C99 == lex->c_version + && (SCF_CSTR_CMP(s, "restrict") + || SCF_CSTR_CMP(s, "__restrict") + || SCF_CSTR_CMP(s, "__restrict__"))) { + + scf_string_free(s); + s = NULL; + + return __lex_pop_word(lex, pword); + } + int type = _find_key_word(s); if (-1 == type) diff --git a/lex/scf_lex.h b/lex/scf_lex.h index 79b9391..bacbe0d 100644 --- a/lex/scf_lex.h +++ b/lex/scf_lex.h @@ -6,6 +6,9 @@ typedef struct scf_char_s scf_char_t; typedef struct scf_lex_s scf_lex_t; +#define SCF_C89 0 +#define SCF_C99 1 + typedef struct { char* text; int len; @@ -46,6 +49,8 @@ struct scf_lex_s scf_string_t* text; // text string to the code, 'fp' & 'text' only one is used int text_i; + int c_version; + scf_string_t* file; // original code file name int nb_lines; int pos; @@ -58,7 +63,7 @@ int _find_key_word(const scf_string_t* text); scf_char_t* _lex_pop_char (scf_lex_t* lex); void _lex_push_char(scf_lex_t* lex, scf_char_t* c); -int scf_lex_open (scf_lex_t** plex, const char* path, scf_string_t* text); +int scf_lex_open (scf_lex_t** plex, const char* path, scf_string_t* text, int c_version); int scf_lex_close(scf_lex_t* lex); void scf_lex_push_word(scf_lex_t* lex, scf_lex_word_t* word); diff --git a/lex/scf_lex_test.c b/lex/scf_lex_test.c index a42dbb1..3617057 100644 --- a/lex/scf_lex_test.c +++ b/lex/scf_lex_test.c @@ -4,7 +4,7 @@ int main(int argc, char* argv[]) { scf_lex_t* lex = NULL; - if (scf_lex_open(&lex, argv[1], NULL) < 0) { + if (scf_lex_open(&lex, argv[1], NULL, SCF_C99) < 0) { scf_loge("\n"); return -1; } diff --git a/lex/scf_macro_expr.c b/lex/scf_macro_expr.c index 6602c93..8548a30 100644 --- a/lex/scf_macro_expr.c +++ b/lex/scf_macro_expr.c @@ -141,15 +141,11 @@ static int __macro_binary_##name(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_w if (ret < 0) \ return ret; \ \ - if (!scf_lex_is_const(w0)) { \ - scf_loge("\n"); \ + if (!scf_lex_is_const(w0)) \ return -EINVAL; \ - } \ \ - if (!scf_lex_is_const(w1)) { \ - scf_loge("\n"); \ + if (!scf_lex_is_const(w1)) \ return -EINVAL; \ - } \ \ w0->data.i64 = w0->data.i64 op w1->data.i64; \ scf_logi("op: %s, result: %ld, line: %d, pos: %d\n\n", w_op->text->data, w0->data.i64, w_op->line, w_op->pos); \ @@ -179,8 +175,71 @@ MACRO_OPERATOR_BINARY(lt, <) MACRO_OPERATOR_BINARY(ge, >=) MACRO_OPERATOR_BINARY(le, <=) -MACRO_OPERATOR_BINARY(logic_and, &&) -MACRO_OPERATOR_BINARY(logic_or, ||) +static int __macro_binary_logic_and(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_word_t* w_op, int n_consts, scf_lex_word_t** operand) +{ + assert(2 == n_consts); + assert(*operand); + + scf_lex_word_t* w0 = *operand; + scf_lex_word_t* w1 = NULL; + + if (!scf_lex_is_const(w0)) { + scf_loge("\n"); + return -EINVAL; + } + + int ret = __macro_binary_operand(lex, ctx, w_op, &w1); + + if (w0->data.i64) { + if (ret < 0) + return ret; + + if (!scf_lex_is_const(w1)) { + scf_loge("\n"); + return -EINVAL; + } + + w0->data.i64 = w0->data.i64 && w1->data.i64; + } + + scf_logi("op: %s, result: %ld, line: %d, pos: %d\n\n", w_op->text->data, w0->data.i64, w_op->line, w_op->pos); + + *operand = w0; + return 0; +} + +static int __macro_binary_logic_or(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_word_t* w_op, int n_consts, scf_lex_word_t** operand) +{ + assert(2 == n_consts); + assert(*operand); + + scf_lex_word_t* w0 = *operand; + scf_lex_word_t* w1 = NULL; + + if (!scf_lex_is_const(w0)) { + scf_loge("\n"); + return -EINVAL; + } + + int ret = __macro_binary_operand(lex, ctx, w_op, &w1); + + if (!w0->data.i64) { + if (ret < 0) + return ret; + + if (!scf_lex_is_const(w1)) { + scf_loge("\n"); + return -EINVAL; + } + + w0->data.i64 = w0->data.i64 || w1->data.i64; + } + + scf_logi("op: %s, result: %ld, line: %d, pos: %d\n\n", w_op->text->data, w0->data.i64, w_op->line, w_op->pos); + + *operand = w0; + return 0; +} static int __macro_operator_defined(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_word_t* w_op, int n_consts, scf_lex_word_t** operand) { @@ -269,10 +328,8 @@ static int __macro_unary_##name(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_wo \ scf_lex_word_t* w0 = *operand; \ \ - if (!scf_lex_is_const(w0)) { \ - scf_loge("\n"); \ + if (!scf_lex_is_const(w0)) \ return -EINVAL; \ - } \ \ w0->data.u64 = op w0->data.u64; \ scf_logi("op: %s, result: %ld, line: %d, pos: %d\n", w_op->text->data, w0->data.i64, w_op->line, w_op->pos); \ @@ -464,10 +521,8 @@ static int __macro_operator_lp(scf_lex_t* lex, scf_macro_ctx_t* ctx, scf_lex_wor scf_lex_word_t* w0 = *operand; scf_lex_word_t* op2 = NULL; - if (!scf_lex_is_const(w0)) { - scf_loge("\n"); + if (!scf_lex_is_const(w0)) return -EINVAL; - } ret = __lex_pop_word(lex, &op2); if (ret < 0) diff --git a/lib/arm32/_start.o b/lib/arm32/_start.o deleted file mode 100644 index 9aa3713..0000000 Binary files a/lib/arm32/_start.o and /dev/null differ diff --git a/lib/arm32/lib/ld-linux-armhf.so.3 b/lib/arm32/lib/ld-linux-armhf.so.3 deleted file mode 100755 index 27cf789..0000000 Binary files a/lib/arm32/lib/ld-linux-armhf.so.3 and /dev/null differ diff --git a/lib/arm32/libc.so.6 b/lib/arm32/libc.so.6 deleted file mode 100755 index 9a76155..0000000 Binary files a/lib/arm32/libc.so.6 and /dev/null differ diff --git a/lib/arm64/_start.o b/lib/arm64/_start.o deleted file mode 100644 index 7732238..0000000 Binary files a/lib/arm64/_start.o and /dev/null differ diff --git a/lib/arm64/lib/ld-linux-aarch64.so.1 b/lib/arm64/lib/ld-linux-aarch64.so.1 deleted file mode 100755 index 0c4bf63..0000000 Binary files a/lib/arm64/lib/ld-linux-aarch64.so.1 and /dev/null differ diff --git a/lib/arm64/libc.so.6 b/lib/arm64/libc.so.6 deleted file mode 100755 index d01a3d0..0000000 Binary files a/lib/arm64/libc.so.6 and /dev/null differ diff --git a/lib/ld-linux-x86-64.so.2 b/lib/ld-linux-x86-64.so.2 deleted file mode 100755 index a8cb029..0000000 Binary files a/lib/ld-linux-x86-64.so.2 and /dev/null differ diff --git a/lib/x64/_start.o b/lib/x64/_start.o deleted file mode 100644 index 38dbb23..0000000 Binary files a/lib/x64/_start.o and /dev/null differ diff --git a/lib/x64/lib64/ld-linux-x86-64.so.2 b/lib/x64/lib64/ld-linux-x86-64.so.2 deleted file mode 100755 index a8cb029..0000000 Binary files a/lib/x64/lib64/ld-linux-x86-64.so.2 and /dev/null differ diff --git a/lib/x64/libc.so.6 b/lib/x64/libc.so.6 deleted file mode 100755 index f5b26e3..0000000 Binary files a/lib/x64/libc.so.6 and /dev/null differ diff --git a/lib/x64/scf_atomic.o b/lib/x64/scf_atomic.o deleted file mode 100644 index a703799..0000000 Binary files a/lib/x64/scf_atomic.o and /dev/null differ diff --git a/lib/x64/scf_object.o b/lib/x64/scf_object.o deleted file mode 100644 index 00fd525..0000000 Binary files a/lib/x64/scf_object.o and /dev/null differ diff --git a/parse/main.c b/parse/main.c index e72b0b8..61fe9e1 100644 --- a/parse/main.c +++ b/parse/main.c @@ -40,7 +40,8 @@ static char* __arm32_sofiles[] = void usage(char* path) { - fprintf(stderr, "Usage: %s [-c] [-d] [-t] [-a arch] [-s sysroot] [-Iinclude / -I include] [-lsofile / -l sofile] [-Lsopath / -L sopath] [-o out] src0 [src1]\n\n", path); + fprintf(stderr, "Usage: %s [-std=..] [-c] [-d] [-t] [-a arch] [-s sysroot] [-Iinclude / -I include] [-lsofile / -l sofile] [-Lsopath / -L sopath] [-o out] src0 [src1]\n\n", path); + fprintf(stderr, "-std: c89 or c99 version\n"); fprintf(stderr, "-c: only compile, not link\n"); fprintf(stderr, "-t: only 3ac code, not compile\n"); fprintf(stderr, "-a: select cpu arch (x64, arm64, naja, or eda), default is x64\n"); @@ -54,14 +55,15 @@ void usage(char* path) int add_sys_files(scf_vector_t* vec, const char* sysroot, const char* arch, char* files[], int n_files) { int len0 = strlen(sysroot); - int len1 = strlen(arch); + int len1 = strlen("lib/"); + int len2 = strlen(arch); int i; for (i = 0; i < n_files; i++) { - int len2 = strlen(files[i]); + int len3 = strlen(files[i]); - char* fname = calloc(1, len0 + len1 + len2 + 3); + char* fname = calloc(1, len0 + len1 + len2 + len3 + 4); if (!fname) return -ENOMEM; @@ -72,15 +74,18 @@ int add_sys_files(scf_vector_t* vec, const char* sysroot, const char* arch, char len++; } - memcpy(fname + len, arch, len1); + memcpy(fname + len, "lib/", len1); len += len1; + + memcpy(fname + len, arch, len2); + len += len2; if (fname[len - 1] != '/') { fname[len] = '/'; len++; } - memcpy(fname + len, files[i], len2); - len += len2; + memcpy(fname + len, files[i], len3); + len += len3; fname[len] = '\0'; scf_logi("add file: %s\n", fname); @@ -189,12 +194,16 @@ int main(int argc, char* argv[]) goto error; } - char* sysroot = "../lib"; - char* arch = "x64"; - char* out = NULL; - int link = 1; - int _3ac = 0; - int dyn = 0; + int obj_size = objs->size; + int so_size = sofiles->size; + + char* sysroot = "../sysroot"; + char* arch = "x64"; + char* out = NULL; + int link = 1; + int _3ac = 0; + int dyn = 0; + int c_version = SCF_C99; int i; for (i = 1; i < argc; i++) { @@ -234,6 +243,22 @@ int main(int argc, char* argv[]) if ('s' == argv[i][1]) { + if (!strncmp(argv[i] + 1, "std=", 4)) { + + char* std = argv[i] + 5; + + if (!strcmp(std, "c89") + || !strcmp(std, "C89") + || !strcmp(std, "C90") + || !strcmp(std, "c90") + || !strcmp(std, "ANSI") + || !strcmp(std, "ansi")) + c_version = SCF_C89; + + scf_logi("%s, c_version: %d\n", argv[i], c_version); + continue; + } + if (++i >= argc || '-' == argv[i][0]) { usage(argv[0]); @@ -354,7 +379,7 @@ int main(int argc, char* argv[]) if (srcs->size > 0) { scf_parse_t* parse = NULL; - ret = scf_parse_open(&parse, inc_paths); + ret = scf_parse_open(&parse, inc_paths, c_version); if (ret < 0) { scf_loge("\n"); goto error; @@ -388,8 +413,8 @@ int main(int argc, char* argv[]) parse = NULL; } - int obj_size = objs->size; - int so_size = sofiles->size; + obj_size = objs->size; + so_size = sofiles->size; if (link) { ret = add_so_files(sofiles, lib_paths, lib_files); diff --git a/parse/scf_dfa.h b/parse/scf_dfa.h index ddd68a1..d261f9d 100644 --- a/parse/scf_dfa.h +++ b/parse/scf_dfa.h @@ -84,6 +84,8 @@ struct scf_dfa_module_s { int (*init_module)(scf_dfa_t* dfa); int (*init_syntax)(scf_dfa_t* dfa); + int (*init_error )(scf_dfa_t* dfa); + int (*fini_module)(scf_dfa_t* dfa); int index; diff --git a/parse/scf_dfa_call.c b/parse/scf_dfa_call.c index 723fff0..c264278 100644 --- a/parse/scf_dfa_call.c +++ b/parse/scf_dfa_call.c @@ -244,6 +244,21 @@ static int _call_action_comma(scf_dfa_t* dfa, scf_vector_t* words, void* data) SCF_DFA_PUSH_HOOK(scf_dfa_find_node(dfa, "call_comma"), SCF_DFA_HOOK_POST); SCF_DFA_PUSH_HOOK(scf_dfa_find_node(dfa, "call_lp_stat"), SCF_DFA_HOOK_POST); + w = dfa->ops->pop_word(dfa); + if (w) { + dfa->ops->push_word(dfa, w); + + switch (w->type) { + case SCF_LEX_WORD_SEMICOLON: + case SCF_LEX_WORD_COMMA: + case SCF_LEX_WORD_RP: + + scf_loge("%s:%d:%d, NO expr after ','\n", w->file->data, w->line, w->pos); + return SCF_DFA_ERROR; + break; + }; + } + return SCF_DFA_SWITCH_TO; } diff --git a/parse/scf_dfa_expr.c b/parse/scf_dfa_expr.c index 3213c09..47b0772 100644 --- a/parse/scf_dfa_expr.c +++ b/parse/scf_dfa_expr.c @@ -996,6 +996,7 @@ static int _dfa_init_syntax_expr(scf_dfa_t* dfa) scf_dfa_node_add_child(rs, unary_post); scf_dfa_node_add_child(rs, rp); scf_dfa_node_add_child(identity, unary_post); + scf_dfa_node_add_child(identity, rs); // recursive unary_op, like: !*p scf_dfa_node_add_child(unary_op, unary_op); diff --git a/parse/scf_dfa_parse.c b/parse/scf_dfa_parse.c index 232e93a..ea88bc2 100644 --- a/parse/scf_dfa_parse.c +++ b/parse/scf_dfa_parse.c @@ -140,10 +140,11 @@ int scf_parse_dfa_init(scf_parse_t* parse) return -1; } + scf_dfa_module_t* m; int i; - for (i = 0; i < nb_modules; i++) { - scf_dfa_module_t* m = dfa_modules[i]; + for (i = 0; i < nb_modules; i++) { + m = dfa_modules[i]; if (!m) continue; @@ -160,8 +161,7 @@ int scf_parse_dfa_init(scf_parse_t* parse) } for (i = 0; i < nb_modules; i++) { - - scf_dfa_module_t* m = dfa_modules[i]; + m = dfa_modules[i]; if (!m || !m->init_syntax) continue; @@ -172,5 +172,17 @@ int scf_parse_dfa_init(scf_parse_t* parse) } } + for (i = 0; i < nb_modules; i++) { + m = dfa_modules[i]; + + if (!m || !m->init_error) + continue; + + if (m->init_error(parse->dfa) < 0) { + scf_loge("init error: %s\n", m->name); + return -1; + } + } + return 0; } diff --git a/parse/scf_dfa_type.c b/parse/scf_dfa_type.c index fca7f19..4cb546a 100644 --- a/parse/scf_dfa_type.c +++ b/parse/scf_dfa_type.c @@ -272,6 +272,29 @@ static int _type_action_comma(scf_dfa_t* dfa, scf_vector_t* words, void* data) return SCF_DFA_NEXT_WORD; } +// do errors below: +static int _type_is_no_var(scf_dfa_t* dfa, void* word) +{ + scf_lex_word_t* w = word; + + if (scf_lex_is_operator(w) + && SCF_LEX_WORD_LP != w->type + && SCF_LEX_WORD_RP != w->type + && SCF_LEX_WORD_STAR != w->type) + return 1; + + return 0; +} + +static int _type_error_no_var(scf_dfa_t* dfa, scf_vector_t* words, void* data) +{ + scf_lex_word_t* w = words->data[words->size - 1]; + + scf_loge("%s:%d:%d, NO var before '%s'\n", w->file->data, w->line, w->pos, w->text->data); + + return SCF_DFA_ERROR; +} + static int _dfa_init_module_type(scf_dfa_t* dfa) { SCF_DFA_MODULE_ENTRY(dfa, type); @@ -289,6 +312,8 @@ static int _dfa_init_module_type(scf_dfa_t* dfa) SCF_DFA_MODULE_NODE(dfa, type, star, scf_dfa_is_star, _type_action_star); SCF_DFA_MODULE_NODE(dfa, type, comma, scf_dfa_is_comma, _type_action_comma); + SCF_DFA_MODULE_NODE(dfa, type, no_var, _type_is_no_var, _type_error_no_var); + return SCF_DFA_OK; } @@ -375,11 +400,28 @@ static int _dfa_init_syntax_type(scf_dfa_t* dfa) scf_dfa_node_add_child(comma, base_type); scf_dfa_node_add_child(comma, type_name); + return SCF_DFA_OK; +} + +static int _dfa_init_error_type(scf_dfa_t* dfa) +{ + SCF_DFA_GET_MODULE_NODE(dfa, type, base_type, base_type); + SCF_DFA_GET_MODULE_NODE(dfa, identity, identity, type_name); + SCF_DFA_GET_MODULE_NODE(dfa, type, star, star); + + // do errors below: + SCF_DFA_GET_MODULE_NODE(dfa, type, no_var, no_var); + + scf_dfa_node_add_child(base_type, no_var); + scf_dfa_node_add_child(type_name, no_var); + scf_dfa_node_add_child(star, no_var); + + scf_dfa_node_t* node; int i; - for (i = 0; i < base_type->childs->size; i++) { - scf_dfa_node_t* n = base_type->childs->data[i]; + for (i = 0; i < type_name->childs->size; i++) { + node = type_name->childs->data[i]; - scf_logd("n->name: %s\n", n->name); + scf_logd("node->name: %s\n", node->name); } return SCF_DFA_OK; @@ -388,6 +430,9 @@ static int _dfa_init_syntax_type(scf_dfa_t* dfa) scf_dfa_module_t dfa_module_type = { .name = "type", + .init_module = _dfa_init_module_type, .init_syntax = _dfa_init_syntax_type, + + .init_error = _dfa_init_error_type, }; diff --git a/parse/scf_parse.c b/parse/scf_parse.c index e15f6f8..1158571 100644 --- a/parse/scf_parse.c +++ b/parse/scf_parse.c @@ -44,7 +44,7 @@ scf_base_type_t base_types[] = {"funcptr", SCF_FUNCTION_PTR, sizeof(void*)}, }; -int scf_parse_open(scf_parse_t** pparse, const scf_vector_t* inc_paths) +int scf_parse_open(scf_parse_t** pparse, const scf_vector_t* inc_paths, int c_version) { if (!pparse) return -EINVAL; @@ -82,6 +82,7 @@ int scf_parse_open(scf_parse_t** pparse, const scf_vector_t* inc_paths) goto debug_error; parse->inc_paths = inc_paths; + parse->c_version = c_version; *pparse = parse; return 0; @@ -124,7 +125,7 @@ int scf_parse_file(scf_parse_t* parse, const char* path) lex = lex->next; } - if (scf_lex_open(&parse->lex, path, NULL) < 0) + if (scf_lex_open(&parse->lex, path, NULL, parse->c_version) < 0) return -1; if (cur == ast->root_block) diff --git a/parse/scf_parse.h b/parse/scf_parse.h index a1dc31b..5e41f7a 100644 --- a/parse/scf_parse.h +++ b/parse/scf_parse.h @@ -27,6 +27,8 @@ struct scf_parse_s scf_dfa_t* dfa; dfa_data_t* dfa_data; + int c_version; + scf_vector_t* symtab; scf_vector_t* global_consts; @@ -120,7 +122,7 @@ struct dfa_data_s { int scf_parse_dfa_init(scf_parse_t* parse); -int scf_parse_open (scf_parse_t** pparse, const scf_vector_t* inc_paths); +int scf_parse_open (scf_parse_t** pparse, const scf_vector_t* inc_paths, int c_version); int scf_parse_close(scf_parse_t* parse); int scf_parse_file(scf_parse_t* parse, const char* path); diff --git a/sysroot/include/alltypes.h b/sysroot/include/alltypes.h new file mode 100644 index 0000000..b5d6f52 --- /dev/null +++ b/sysroot/include/alltypes.h @@ -0,0 +1,415 @@ +#define _Addr long +#define _Int64 long +#define _Reg long + +#define __BYTE_ORDER 1234 +#define __LONG_MAX 0x7fffffffffffffffL + +#ifndef __cplusplus +#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t) +typedef int wchar_t; +#define __DEFINED_wchar_t +#endif + +#endif + +#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2 +#if defined(__NEED_float_t) && !defined(__DEFINED_float_t) +typedef long double float_t; +#define __DEFINED_float_t +#endif + +#if defined(__NEED_double_t) && !defined(__DEFINED_double_t) +typedef long double double_t; +#define __DEFINED_double_t +#endif + +#else +#if defined(__NEED_float_t) && !defined(__DEFINED_float_t) +typedef float float_t; +#define __DEFINED_float_t +#endif + +#if defined(__NEED_double_t) && !defined(__DEFINED_double_t) +typedef double double_t; +#define __DEFINED_double_t +#endif + +#endif + +#if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t) +typedef struct { long long __ll; long double __ld; } max_align_t; +#define __DEFINED_max_align_t +#endif + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __USE_TIME_BITS64 1 + +#if defined(__NEED_size_t) && !defined(__DEFINED_size_t) +typedef unsigned _Addr size_t; +#define __DEFINED_size_t +#endif + +#if defined(__NEED_uintptr_t) && !defined(__DEFINED_uintptr_t) +typedef unsigned _Addr uintptr_t; +#define __DEFINED_uintptr_t +#endif + +#if defined(__NEED_ptrdiff_t) && !defined(__DEFINED_ptrdiff_t) +typedef _Addr ptrdiff_t; +#define __DEFINED_ptrdiff_t +#endif + +#if defined(__NEED_ssize_t) && !defined(__DEFINED_ssize_t) +typedef _Addr ssize_t; +#define __DEFINED_ssize_t +#endif + +#if defined(__NEED_intptr_t) && !defined(__DEFINED_intptr_t) +typedef _Addr intptr_t; +#define __DEFINED_intptr_t +#endif + +#if defined(__NEED_regoff_t) && !defined(__DEFINED_regoff_t) +typedef _Addr regoff_t; +#define __DEFINED_regoff_t +#endif + +#if defined(__NEED_register_t) && !defined(__DEFINED_register_t) +typedef _Reg register_t; +#define __DEFINED_register_t +#endif + +#if defined(__NEED_time_t) && !defined(__DEFINED_time_t) +typedef _Int64 time_t; +#define __DEFINED_time_t +#endif + +#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t) +typedef _Int64 suseconds_t; +#define __DEFINED_suseconds_t +#endif + + +#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t) +typedef signed char int8_t; +#define __DEFINED_int8_t +#endif + +#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t) +typedef signed short int16_t; +#define __DEFINED_int16_t +#endif + +#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t) +typedef signed int int32_t; +#define __DEFINED_int32_t +#endif + +#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t) +typedef signed _Int64 int64_t; +#define __DEFINED_int64_t +#endif + +#if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t) +typedef signed _Int64 intmax_t; +#define __DEFINED_intmax_t +#endif + +#if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t) +typedef unsigned char uint8_t; +#define __DEFINED_uint8_t +#endif + +#if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t) +typedef unsigned short uint16_t; +#define __DEFINED_uint16_t +#endif + +#if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t) +typedef unsigned int uint32_t; +#define __DEFINED_uint32_t +#endif + +#if defined(__NEED_uint64_t) && !defined(__DEFINED_uint64_t) +typedef unsigned _Int64 uint64_t; +#define __DEFINED_uint64_t +#endif + +#if defined(__NEED_u_int64_t) && !defined(__DEFINED_u_int64_t) +typedef unsigned _Int64 u_int64_t; +#define __DEFINED_u_int64_t +#endif + +#if defined(__NEED_uintmax_t) && !defined(__DEFINED_uintmax_t) +typedef unsigned _Int64 uintmax_t; +#define __DEFINED_uintmax_t +#endif + + +#if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t) +typedef unsigned mode_t; +#define __DEFINED_mode_t +#endif + +#if defined(__NEED_nlink_t) && !defined(__DEFINED_nlink_t) +typedef unsigned _Reg nlink_t; +#define __DEFINED_nlink_t +#endif + +#if defined(__NEED_off_t) && !defined(__DEFINED_off_t) +typedef _Int64 off_t; +#define __DEFINED_off_t +#endif + +#if defined(__NEED_ino_t) && !defined(__DEFINED_ino_t) +typedef unsigned _Int64 ino_t; +#define __DEFINED_ino_t +#endif + +#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t) +typedef unsigned _Int64 dev_t; +#define __DEFINED_dev_t +#endif + +#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t) +typedef long blksize_t; +#define __DEFINED_blksize_t +#endif + +#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t) +typedef _Int64 blkcnt_t; +#define __DEFINED_blkcnt_t +#endif + +#if defined(__NEED_fsblkcnt_t) && !defined(__DEFINED_fsblkcnt_t) +typedef unsigned _Int64 fsblkcnt_t; +#define __DEFINED_fsblkcnt_t +#endif + +#if defined(__NEED_fsfilcnt_t) && !defined(__DEFINED_fsfilcnt_t) +typedef unsigned _Int64 fsfilcnt_t; +#define __DEFINED_fsfilcnt_t +#endif + + +#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t) +typedef unsigned wint_t; +#define __DEFINED_wint_t +#endif + +#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t) +typedef unsigned long wctype_t; +#define __DEFINED_wctype_t +#endif + + +#if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t) +typedef void * timer_t; +#define __DEFINED_timer_t +#endif + +#if defined(__NEED_clockid_t) && !defined(__DEFINED_clockid_t) +typedef int clockid_t; +#define __DEFINED_clockid_t +#endif + +#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t) +typedef long clock_t; +#define __DEFINED_clock_t +#endif + +#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval) +struct timeval { time_t tv_sec; suseconds_t tv_usec; }; +#define __DEFINED_struct_timeval +#endif + +#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec) +struct timespec { time_t tv_sec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER==4321); long tv_nsec; int :8*(sizeof(time_t)-sizeof(long))*(__BYTE_ORDER!=4321); }; +#define __DEFINED_struct_timespec +#endif + + +#if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t) +typedef int pid_t; +#define __DEFINED_pid_t +#endif + +#if defined(__NEED_id_t) && !defined(__DEFINED_id_t) +typedef unsigned id_t; +#define __DEFINED_id_t +#endif + +#if defined(__NEED_uid_t) && !defined(__DEFINED_uid_t) +typedef unsigned uid_t; +#define __DEFINED_uid_t +#endif + +#if defined(__NEED_gid_t) && !defined(__DEFINED_gid_t) +typedef unsigned gid_t; +#define __DEFINED_gid_t +#endif + +#if defined(__NEED_key_t) && !defined(__DEFINED_key_t) +typedef int key_t; +#define __DEFINED_key_t +#endif + +#if defined(__NEED_useconds_t) && !defined(__DEFINED_useconds_t) +typedef unsigned useconds_t; +#define __DEFINED_useconds_t +#endif + + +#ifdef __cplusplus +#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t) +typedef unsigned long pthread_t; +#define __DEFINED_pthread_t +#endif + +#else +#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t) +typedef struct __pthread * pthread_t; +#define __DEFINED_pthread_t +#endif + +#endif +#if defined(__NEED_pthread_once_t) && !defined(__DEFINED_pthread_once_t) +typedef int pthread_once_t; +#define __DEFINED_pthread_once_t +#endif + +#if defined(__NEED_pthread_key_t) && !defined(__DEFINED_pthread_key_t) +typedef unsigned pthread_key_t; +#define __DEFINED_pthread_key_t +#endif + +#if defined(__NEED_pthread_spinlock_t) && !defined(__DEFINED_pthread_spinlock_t) +typedef int pthread_spinlock_t; +#define __DEFINED_pthread_spinlock_t +#endif + +#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t) +typedef struct { unsigned __attr; } pthread_mutexattr_t; +#define __DEFINED_pthread_mutexattr_t +#endif + +#if defined(__NEED_pthread_condattr_t) && !defined(__DEFINED_pthread_condattr_t) +typedef struct { unsigned __attr; } pthread_condattr_t; +#define __DEFINED_pthread_condattr_t +#endif + +#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t) +typedef struct { unsigned __attr; } pthread_barrierattr_t; +#define __DEFINED_pthread_barrierattr_t +#endif + +#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t) +typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t; +#define __DEFINED_pthread_rwlockattr_t +#endif + + +#if defined(__NEED_struct__IO_FILE) && !defined(__DEFINED_struct__IO_FILE) +struct _IO_FILE { char __x; }; +#define __DEFINED_struct__IO_FILE +#endif + +#if defined(__NEED_FILE) && !defined(__DEFINED_FILE) +typedef struct _IO_FILE FILE; +#define __DEFINED_FILE +#endif + + +#if defined(__NEED_va_list) && !defined(__DEFINED_va_list) +typedef __builtin_va_list va_list; +#define __DEFINED_va_list +#endif + +#if defined(__NEED___isoc_va_list) && !defined(__DEFINED___isoc_va_list) +typedef __builtin_va_list __isoc_va_list; +#define __DEFINED___isoc_va_list +#endif + + +#if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t) +typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t; +#define __DEFINED_mbstate_t +#endif + + +#if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t) +typedef struct __locale_struct * locale_t; +#define __DEFINED_locale_t +#endif + + +#if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t) +typedef struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t; +#define __DEFINED_sigset_t +#endif + + +#if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec) +struct iovec { void *iov_base; size_t iov_len; }; +#define __DEFINED_struct_iovec +#endif + + +#if defined(__NEED_struct_winsize) && !defined(__DEFINED_struct_winsize) +struct winsize { unsigned short ws_row, ws_col, ws_xpixel, ws_ypixel; }; +#define __DEFINED_struct_winsize +#endif + + +#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t) +typedef unsigned socklen_t; +#define __DEFINED_socklen_t +#endif + +#if defined(__NEED_sa_family_t) && !defined(__DEFINED_sa_family_t) +typedef unsigned short sa_family_t; +#define __DEFINED_sa_family_t +#endif + + +#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t) +typedef struct { union { int __i[sizeof(long)==8?14:9]; volatile int __vi[sizeof(long)==8?14:9]; unsigned long __s[sizeof(long)==8?7:9]; } __u; } pthread_attr_t; +#define __DEFINED_pthread_attr_t +#endif + +#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t) +typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } pthread_mutex_t; +#define __DEFINED_pthread_mutex_t +#endif + +#if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t) +typedef struct { union { int __i[sizeof(long)==8?10:6]; volatile int __vi[sizeof(long)==8?10:6]; volatile void *volatile __p[sizeof(long)==8?5:6]; } __u; } mtx_t; +#define __DEFINED_mtx_t +#endif + +#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t) +typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } pthread_cond_t; +#define __DEFINED_pthread_cond_t +#endif + +#if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t) +typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[12*sizeof(int)/sizeof(void*)]; } __u; } cnd_t; +#define __DEFINED_cnd_t +#endif + +#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t) +typedef struct { union { int __i[sizeof(long)==8?14:8]; volatile int __vi[sizeof(long)==8?14:8]; void *__p[sizeof(long)==8?7:8]; } __u; } pthread_rwlock_t; +#define __DEFINED_pthread_rwlock_t +#endif + +#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t) +typedef struct { union { int __i[sizeof(long)==8?8:5]; volatile int __vi[sizeof(long)==8?8:5]; void *__p[sizeof(long)==8?4:5]; } __u; } pthread_barrier_t; +#define __DEFINED_pthread_barrier_t +#endif + + +#undef _Addr +#undef _Int64 +#undef _Reg diff --git a/sysroot/include/stdio.h b/sysroot/include/stdio.h new file mode 100644 index 0000000..4ea4c17 --- /dev/null +++ b/sysroot/include/stdio.h @@ -0,0 +1,231 @@ +#ifndef _STDIO_H +#define _STDIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define __NEED_FILE +#define __NEED___isoc_va_list +#define __NEED_size_t + +#if __STDC_VERSION__ < 201112L +#define __NEED_struct__IO_FILE +#endif + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define __NEED_ssize_t +#define __NEED_off_t +#define __NEED_va_list +#endif + +#include + +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__cplusplus) +#define NULL 0L +#else +#define NULL ((void*)0) +#endif + +#undef EOF +#define EOF (-1) + +#undef SEEK_SET +#undef SEEK_CUR +#undef SEEK_END +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +#define _IOFBF 0 +#define _IOLBF 1 +#define _IONBF 2 + +#define BUFSIZ 1024 +#define FILENAME_MAX 4096 +#define FOPEN_MAX 1000 +#define TMP_MAX 10000 +#define L_tmpnam 20 + +typedef union _G_fpos64_t { + char __opaque[16]; + long long __lldata; + double __align; +} fpos_t; + +extern FILE *const stdin; +extern FILE *const stdout; +extern FILE *const stderr; + +#define stdin (stdin) +#define stdout (stdout) +#define stderr (stderr) + +FILE *fopen(const char *__restrict, const char *__restrict); +FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict); +int fclose(FILE *); + +int remove(const char *); +int rename(const char *, const char *); + +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +void clearerr(FILE *); + +int fseek(FILE *, long, int); +long ftell(FILE *); +void rewind(FILE *); + +int fgetpos(FILE *__restrict, fpos_t *__restrict); +int fsetpos(FILE *, const fpos_t *); + +size_t fread(void *__restrict, size_t, size_t, FILE *__restrict); +size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict); + +int fgetc(FILE *); +int getc(FILE *); +int getchar(void); +int ungetc(int, FILE *); + +int fputc(int, FILE *); +int putc(int, FILE *); +int putchar(int); + +char *fgets(char *__restrict, int, FILE *__restrict); +#if __STDC_VERSION__ < 201112L +char *gets(char *); +#endif + +int fputs(const char *__restrict, FILE *__restrict); +int puts(const char *); + +int printf(const char *__restrict, ...); +int fprintf(FILE *__restrict, const char *__restrict, ...); +int sprintf(char *__restrict, const char *__restrict, ...); +int snprintf(char *__restrict, size_t, const char *__restrict, ...); + +int vprintf(const char *__restrict, __isoc_va_list); +int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list); +int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list); + +int scanf(const char *__restrict, ...); +int fscanf(FILE *__restrict, const char *__restrict, ...); +int sscanf(const char *__restrict, const char *__restrict, ...); +int vscanf(const char *__restrict, __isoc_va_list); +int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list); +int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list); + +void perror(const char *); + +int setvbuf(FILE *__restrict, char *__restrict, int, size_t); +void setbuf(FILE *__restrict, char *__restrict); + +char *tmpnam(char *); +FILE *tmpfile(void); + +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +FILE *fmemopen(void *__restrict, size_t, const char *__restrict); +FILE *open_memstream(char **, size_t *); +FILE *fdopen(int, const char *); +FILE *popen(const char *, const char *); +int pclose(FILE *); +int fileno(FILE *); +int fseeko(FILE *, off_t, int); +off_t ftello(FILE *); +int dprintf(int, const char *__restrict, ...); +int vdprintf(int, const char *__restrict, __isoc_va_list); +void flockfile(FILE *); +int ftrylockfile(FILE *); +void funlockfile(FILE *); +int getc_unlocked(FILE *); +int getchar_unlocked(void); +int putc_unlocked(int, FILE *); +int putchar_unlocked(int); +ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict); +ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict); +int renameat(int, const char *, int, const char *); +char *ctermid(char *); +#define L_ctermid 20 +#endif + +#if defined(_GNU_SOURCE) +#define RENAME_NOREPLACE (1 << 0) +#define RENAME_EXCHANGE (1 << 1) +#define RENAME_WHITEOUT (1 << 2) + +int renameat2(int, const char *, int, const char *, unsigned); +#endif + +#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \ + || defined(_BSD_SOURCE) +#define P_tmpdir "/tmp" +char *tempnam(const char *, const char *); +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define L_cuserid 20 +char *cuserid(char *); +void setlinebuf(FILE *); +void setbuffer(FILE *, char *, size_t); +int fgetc_unlocked(FILE *); +int fputc_unlocked(int, FILE *); +int fflush_unlocked(FILE *); +size_t fread_unlocked(void *, size_t, size_t, FILE *); +size_t fwrite_unlocked(const void *, size_t, size_t, FILE *); +void clearerr_unlocked(FILE *); +int feof_unlocked(FILE *); +int ferror_unlocked(FILE *); +int fileno_unlocked(FILE *); +int getw(FILE *); +int putw(int, FILE *); +char *fgetln(FILE *, size_t *); +int asprintf(char **, const char *, ...); +int vasprintf(char **, const char *, __isoc_va_list); +#endif + +#ifdef _GNU_SOURCE +char *fgets_unlocked(char *, int, FILE *); +int fputs_unlocked(const char *, FILE *); + +typedef ssize_t (cookie_read_function_t)(void *, char *, size_t); +typedef ssize_t (cookie_write_function_t)(void *, const char *, size_t); +typedef int (cookie_seek_function_t)(void *, off_t *, int); +typedef int (cookie_close_function_t)(void *); + +typedef struct _IO_cookie_io_functions_t { + cookie_read_function_t *read; + cookie_write_function_t *write; + cookie_seek_function_t *seek; + cookie_close_function_t *close; +} cookie_io_functions_t; + +FILE *fopencookie(void *, const char *, cookie_io_functions_t); +#endif + +#if defined(_LARGEFILE64_SOURCE) +#define tmpfile64 tmpfile +#define fopen64 fopen +#define freopen64 freopen +#define fseeko64 fseeko +#define ftello64 ftello +#define fgetpos64 fgetpos +#define fsetpos64 fsetpos +#define fpos64_t fpos_t +#define off64_t off_t +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/sysroot/include/syscall.h b/sysroot/include/syscall.h new file mode 100644 index 0000000..fdf7a20 --- /dev/null +++ b/sysroot/include/syscall.h @@ -0,0 +1,769 @@ +#define __NR_read 0 +#define __NR_write 1 +#define __NR_open 2 +#define __NR_close 3 +#define __NR_stat 4 +#define __NR_fstat 5 +#define __NR_lstat 6 +#define __NR_poll 7 +#define __NR_lseek 8 +#define __NR_mmap 9 +#define __NR_mprotect 10 +#define __NR_munmap 11 +#define __NR_brk 12 +#define __NR_rt_sigaction 13 +#define __NR_rt_sigprocmask 14 +#define __NR_rt_sigreturn 15 +#define __NR_ioctl 16 +#define __NR_pread64 17 +#define __NR_pwrite64 18 +#define __NR_readv 19 +#define __NR_writev 20 +#define __NR_access 21 +#define __NR_pipe 22 +#define __NR_select 23 +#define __NR_sched_yield 24 +#define __NR_mremap 25 +#define __NR_msync 26 +#define __NR_mincore 27 +#define __NR_madvise 28 +#define __NR_shmget 29 +#define __NR_shmat 30 +#define __NR_shmctl 31 +#define __NR_dup 32 +#define __NR_dup2 33 +#define __NR_pause 34 +#define __NR_nanosleep 35 +#define __NR_getitimer 36 +#define __NR_alarm 37 +#define __NR_setitimer 38 +#define __NR_getpid 39 +#define __NR_sendfile 40 +#define __NR_socket 41 +#define __NR_connect 42 +#define __NR_accept 43 +#define __NR_sendto 44 +#define __NR_recvfrom 45 +#define __NR_sendmsg 46 +#define __NR_recvmsg 47 +#define __NR_shutdown 48 +#define __NR_bind 49 +#define __NR_listen 50 +#define __NR_getsockname 51 +#define __NR_getpeername 52 +#define __NR_socketpair 53 +#define __NR_setsockopt 54 +#define __NR_getsockopt 55 +#define __NR_clone 56 +#define __NR_fork 57 +#define __NR_vfork 58 +#define __NR_execve 59 +#define __NR_exit 60 +#define __NR_wait4 61 +#define __NR_kill 62 +#define __NR_uname 63 +#define __NR_semget 64 +#define __NR_semop 65 +#define __NR_semctl 66 +#define __NR_shmdt 67 +#define __NR_msgget 68 +#define __NR_msgsnd 69 +#define __NR_msgrcv 70 +#define __NR_msgctl 71 +#define __NR_fcntl 72 +#define __NR_flock 73 +#define __NR_fsync 74 +#define __NR_fdatasync 75 +#define __NR_truncate 76 +#define __NR_ftruncate 77 +#define __NR_getdents 78 +#define __NR_getcwd 79 +#define __NR_chdir 80 +#define __NR_fchdir 81 +#define __NR_rename 82 +#define __NR_mkdir 83 +#define __NR_rmdir 84 +#define __NR_creat 85 +#define __NR_link 86 +#define __NR_unlink 87 +#define __NR_symlink 88 +#define __NR_readlink 89 +#define __NR_chmod 90 +#define __NR_fchmod 91 +#define __NR_chown 92 +#define __NR_fchown 93 +#define __NR_lchown 94 +#define __NR_umask 95 +#define __NR_gettimeofday 96 +#define __NR_getrlimit 97 +#define __NR_getrusage 98 +#define __NR_sysinfo 99 +#define __NR_times 100 +#define __NR_ptrace 101 +#define __NR_getuid 102 +#define __NR_syslog 103 +#define __NR_getgid 104 +#define __NR_setuid 105 +#define __NR_setgid 106 +#define __NR_geteuid 107 +#define __NR_getegid 108 +#define __NR_setpgid 109 +#define __NR_getppid 110 +#define __NR_getpgrp 111 +#define __NR_setsid 112 +#define __NR_setreuid 113 +#define __NR_setregid 114 +#define __NR_getgroups 115 +#define __NR_setgroups 116 +#define __NR_setresuid 117 +#define __NR_getresuid 118 +#define __NR_setresgid 119 +#define __NR_getresgid 120 +#define __NR_getpgid 121 +#define __NR_setfsuid 122 +#define __NR_setfsgid 123 +#define __NR_getsid 124 +#define __NR_capget 125 +#define __NR_capset 126 +#define __NR_rt_sigpending 127 +#define __NR_rt_sigtimedwait 128 +#define __NR_rt_sigqueueinfo 129 +#define __NR_rt_sigsuspend 130 +#define __NR_sigaltstack 131 +#define __NR_utime 132 +#define __NR_mknod 133 +#define __NR_uselib 134 +#define __NR_personality 135 +#define __NR_ustat 136 +#define __NR_statfs 137 +#define __NR_fstatfs 138 +#define __NR_sysfs 139 +#define __NR_getpriority 140 +#define __NR_setpriority 141 +#define __NR_sched_setparam 142 +#define __NR_sched_getparam 143 +#define __NR_sched_setscheduler 144 +#define __NR_sched_getscheduler 145 +#define __NR_sched_get_priority_max 146 +#define __NR_sched_get_priority_min 147 +#define __NR_sched_rr_get_interval 148 +#define __NR_mlock 149 +#define __NR_munlock 150 +#define __NR_mlockall 151 +#define __NR_munlockall 152 +#define __NR_vhangup 153 +#define __NR_modify_ldt 154 +#define __NR_pivot_root 155 +#define __NR__sysctl 156 +#define __NR_prctl 157 +#define __NR_arch_prctl 158 +#define __NR_adjtimex 159 +#define __NR_setrlimit 160 +#define __NR_chroot 161 +#define __NR_sync 162 +#define __NR_acct 163 +#define __NR_settimeofday 164 +#define __NR_mount 165 +#define __NR_umount2 166 +#define __NR_swapon 167 +#define __NR_swapoff 168 +#define __NR_reboot 169 +#define __NR_sethostname 170 +#define __NR_setdomainname 171 +#define __NR_iopl 172 +#define __NR_ioperm 173 +#define __NR_create_module 174 +#define __NR_init_module 175 +#define __NR_delete_module 176 +#define __NR_get_kernel_syms 177 +#define __NR_query_module 178 +#define __NR_quotactl 179 +#define __NR_nfsservctl 180 +#define __NR_getpmsg 181 +#define __NR_putpmsg 182 +#define __NR_afs_syscall 183 +#define __NR_tuxcall 184 +#define __NR_security 185 +#define __NR_gettid 186 +#define __NR_readahead 187 +#define __NR_setxattr 188 +#define __NR_lsetxattr 189 +#define __NR_fsetxattr 190 +#define __NR_getxattr 191 +#define __NR_lgetxattr 192 +#define __NR_fgetxattr 193 +#define __NR_listxattr 194 +#define __NR_llistxattr 195 +#define __NR_flistxattr 196 +#define __NR_removexattr 197 +#define __NR_lremovexattr 198 +#define __NR_fremovexattr 199 +#define __NR_tkill 200 +#define __NR_time 201 +#define __NR_futex 202 +#define __NR_sched_setaffinity 203 +#define __NR_sched_getaffinity 204 +#define __NR_set_thread_area 205 +#define __NR_io_setup 206 +#define __NR_io_destroy 207 +#define __NR_io_getevents 208 +#define __NR_io_submit 209 +#define __NR_io_cancel 210 +#define __NR_get_thread_area 211 +#define __NR_lookup_dcookie 212 +#define __NR_epoll_create 213 +#define __NR_epoll_ctl_old 214 +#define __NR_epoll_wait_old 215 +#define __NR_remap_file_pages 216 +#define __NR_getdents64 217 +#define __NR_set_tid_address 218 +#define __NR_restart_syscall 219 +#define __NR_semtimedop 220 +#define __NR_fadvise64 221 +#define __NR_timer_create 222 +#define __NR_timer_settime 223 +#define __NR_timer_gettime 224 +#define __NR_timer_getoverrun 225 +#define __NR_timer_delete 226 +#define __NR_clock_settime 227 +#define __NR_clock_gettime 228 +#define __NR_clock_getres 229 +#define __NR_clock_nanosleep 230 +#define __NR_exit_group 231 +#define __NR_epoll_wait 232 +#define __NR_epoll_ctl 233 +#define __NR_tgkill 234 +#define __NR_utimes 235 +#define __NR_vserver 236 +#define __NR_mbind 237 +#define __NR_set_mempolicy 238 +#define __NR_get_mempolicy 239 +#define __NR_mq_open 240 +#define __NR_mq_unlink 241 +#define __NR_mq_timedsend 242 +#define __NR_mq_timedreceive 243 +#define __NR_mq_notify 244 +#define __NR_mq_getsetattr 245 +#define __NR_kexec_load 246 +#define __NR_waitid 247 +#define __NR_add_key 248 +#define __NR_request_key 249 +#define __NR_keyctl 250 +#define __NR_ioprio_set 251 +#define __NR_ioprio_get 252 +#define __NR_inotify_init 253 +#define __NR_inotify_add_watch 254 +#define __NR_inotify_rm_watch 255 +#define __NR_migrate_pages 256 +#define __NR_openat 257 +#define __NR_mkdirat 258 +#define __NR_mknodat 259 +#define __NR_fchownat 260 +#define __NR_futimesat 261 +#define __NR_newfstatat 262 +#define __NR_unlinkat 263 +#define __NR_renameat 264 +#define __NR_linkat 265 +#define __NR_symlinkat 266 +#define __NR_readlinkat 267 +#define __NR_fchmodat 268 +#define __NR_faccessat 269 +#define __NR_pselect6 270 +#define __NR_ppoll 271 +#define __NR_unshare 272 +#define __NR_set_robust_list 273 +#define __NR_get_robust_list 274 +#define __NR_splice 275 +#define __NR_tee 276 +#define __NR_sync_file_range 277 +#define __NR_vmsplice 278 +#define __NR_move_pages 279 +#define __NR_utimensat 280 +#define __NR_epoll_pwait 281 +#define __NR_signalfd 282 +#define __NR_timerfd_create 283 +#define __NR_eventfd 284 +#define __NR_fallocate 285 +#define __NR_timerfd_settime 286 +#define __NR_timerfd_gettime 287 +#define __NR_accept4 288 +#define __NR_signalfd4 289 +#define __NR_eventfd2 290 +#define __NR_epoll_create1 291 +#define __NR_dup3 292 +#define __NR_pipe2 293 +#define __NR_inotify_init1 294 +#define __NR_preadv 295 +#define __NR_pwritev 296 +#define __NR_rt_tgsigqueueinfo 297 +#define __NR_perf_event_open 298 +#define __NR_recvmmsg 299 +#define __NR_fanotify_init 300 +#define __NR_fanotify_mark 301 +#define __NR_prlimit64 302 +#define __NR_name_to_handle_at 303 +#define __NR_open_by_handle_at 304 +#define __NR_clock_adjtime 305 +#define __NR_syncfs 306 +#define __NR_sendmmsg 307 +#define __NR_setns 308 +#define __NR_getcpu 309 +#define __NR_process_vm_readv 310 +#define __NR_process_vm_writev 311 +#define __NR_kcmp 312 +#define __NR_finit_module 313 +#define __NR_sched_setattr 314 +#define __NR_sched_getattr 315 +#define __NR_renameat2 316 +#define __NR_seccomp 317 +#define __NR_getrandom 318 +#define __NR_memfd_create 319 +#define __NR_kexec_file_load 320 +#define __NR_bpf 321 +#define __NR_execveat 322 +#define __NR_userfaultfd 323 +#define __NR_membarrier 324 +#define __NR_mlock2 325 +#define __NR_copy_file_range 326 +#define __NR_preadv2 327 +#define __NR_pwritev2 328 +#define __NR_pkey_mprotect 329 +#define __NR_pkey_alloc 330 +#define __NR_pkey_free 331 +#define __NR_statx 332 +#define __NR_io_pgetevents 333 +#define __NR_rseq 334 +#define __NR_uretprobe 335 +#define __NR_uprobe 336 +#define __NR_pidfd_send_signal 424 +#define __NR_io_uring_setup 425 +#define __NR_io_uring_enter 426 +#define __NR_io_uring_register 427 +#define __NR_open_tree 428 +#define __NR_move_mount 429 +#define __NR_fsopen 430 +#define __NR_fsconfig 431 +#define __NR_fsmount 432 +#define __NR_fspick 433 +#define __NR_pidfd_open 434 +#define __NR_clone3 435 +#define __NR_close_range 436 +#define __NR_openat2 437 +#define __NR_pidfd_getfd 438 +#define __NR_faccessat2 439 +#define __NR_process_madvise 440 +#define __NR_epoll_pwait2 441 +#define __NR_mount_setattr 442 +#define __NR_quotactl_fd 443 +#define __NR_landlock_create_ruleset 444 +#define __NR_landlock_add_rule 445 +#define __NR_landlock_restrict_self 446 +#define __NR_memfd_secret 447 +#define __NR_process_mrelease 448 +#define __NR_futex_waitv 449 +#define __NR_set_mempolicy_home_node 450 +#define __NR_cachestat 451 +#define __NR_fchmodat2 452 +#define __NR_map_shadow_stack 453 +#define __NR_futex_wake 454 +#define __NR_futex_wait 455 +#define __NR_futex_requeue 456 +#define __NR_statmount 457 +#define __NR_listmount 458 +#define __NR_lsm_get_self_attr 459 +#define __NR_lsm_set_self_attr 460 +#define __NR_lsm_list_modules 461 +#define __NR_mseal 462 +#define __NR_setxattrat 463 +#define __NR_getxattrat 464 +#define __NR_listxattrat 465 +#define __NR_removexattrat 466 +#define __NR_open_tree_attr 467 +#define __NR_file_getattr 468 +#define __NR_file_setattr 469 +#define __NR_listns 470 + +#define SYS_read 0 +#define SYS_write 1 +#define SYS_open 2 +#define SYS_close 3 +#define SYS_stat 4 +#define SYS_fstat 5 +#define SYS_lstat 6 +#define SYS_poll 7 +#define SYS_lseek 8 +#define SYS_mmap 9 +#define SYS_mprotect 10 +#define SYS_munmap 11 +#define SYS_brk 12 +#define SYS_rt_sigaction 13 +#define SYS_rt_sigprocmask 14 +#define SYS_rt_sigreturn 15 +#define SYS_ioctl 16 +#define SYS_pread64 17 +#define SYS_pwrite64 18 +#define SYS_readv 19 +#define SYS_writev 20 +#define SYS_access 21 +#define SYS_pipe 22 +#define SYS_select 23 +#define SYS_sched_yield 24 +#define SYS_mremap 25 +#define SYS_msync 26 +#define SYS_mincore 27 +#define SYS_madvise 28 +#define SYS_shmget 29 +#define SYS_shmat 30 +#define SYS_shmctl 31 +#define SYS_dup 32 +#define SYS_dup2 33 +#define SYS_pause 34 +#define SYS_nanosleep 35 +#define SYS_getitimer 36 +#define SYS_alarm 37 +#define SYS_setitimer 38 +#define SYS_getpid 39 +#define SYS_sendfile 40 +#define SYS_socket 41 +#define SYS_connect 42 +#define SYS_accept 43 +#define SYS_sendto 44 +#define SYS_recvfrom 45 +#define SYS_sendmsg 46 +#define SYS_recvmsg 47 +#define SYS_shutdown 48 +#define SYS_bind 49 +#define SYS_listen 50 +#define SYS_getsockname 51 +#define SYS_getpeername 52 +#define SYS_socketpair 53 +#define SYS_setsockopt 54 +#define SYS_getsockopt 55 +#define SYS_clone 56 +#define SYS_fork 57 +#define SYS_vfork 58 +#define SYS_execve 59 +#define SYS_exit 60 +#define SYS_wait4 61 +#define SYS_kill 62 +#define SYS_uname 63 +#define SYS_semget 64 +#define SYS_semop 65 +#define SYS_semctl 66 +#define SYS_shmdt 67 +#define SYS_msgget 68 +#define SYS_msgsnd 69 +#define SYS_msgrcv 70 +#define SYS_msgctl 71 +#define SYS_fcntl 72 +#define SYS_flock 73 +#define SYS_fsync 74 +#define SYS_fdatasync 75 +#define SYS_truncate 76 +#define SYS_ftruncate 77 +#define SYS_getdents 78 +#define SYS_getcwd 79 +#define SYS_chdir 80 +#define SYS_fchdir 81 +#define SYS_rename 82 +#define SYS_mkdir 83 +#define SYS_rmdir 84 +#define SYS_creat 85 +#define SYS_link 86 +#define SYS_unlink 87 +#define SYS_symlink 88 +#define SYS_readlink 89 +#define SYS_chmod 90 +#define SYS_fchmod 91 +#define SYS_chown 92 +#define SYS_fchown 93 +#define SYS_lchown 94 +#define SYS_umask 95 +#define SYS_gettimeofday 96 +#define SYS_getrlimit 97 +#define SYS_getrusage 98 +#define SYS_sysinfo 99 +#define SYS_times 100 +#define SYS_ptrace 101 +#define SYS_getuid 102 +#define SYS_syslog 103 +#define SYS_getgid 104 +#define SYS_setuid 105 +#define SYS_setgid 106 +#define SYS_geteuid 107 +#define SYS_getegid 108 +#define SYS_setpgid 109 +#define SYS_getppid 110 +#define SYS_getpgrp 111 +#define SYS_setsid 112 +#define SYS_setreuid 113 +#define SYS_setregid 114 +#define SYS_getgroups 115 +#define SYS_setgroups 116 +#define SYS_setresuid 117 +#define SYS_getresuid 118 +#define SYS_setresgid 119 +#define SYS_getresgid 120 +#define SYS_getpgid 121 +#define SYS_setfsuid 122 +#define SYS_setfsgid 123 +#define SYS_getsid 124 +#define SYS_capget 125 +#define SYS_capset 126 +#define SYS_rt_sigpending 127 +#define SYS_rt_sigtimedwait 128 +#define SYS_rt_sigqueueinfo 129 +#define SYS_rt_sigsuspend 130 +#define SYS_sigaltstack 131 +#define SYS_utime 132 +#define SYS_mknod 133 +#define SYS_uselib 134 +#define SYS_personality 135 +#define SYS_ustat 136 +#define SYS_statfs 137 +#define SYS_fstatfs 138 +#define SYS_sysfs 139 +#define SYS_getpriority 140 +#define SYS_setpriority 141 +#define SYS_sched_setparam 142 +#define SYS_sched_getparam 143 +#define SYS_sched_setscheduler 144 +#define SYS_sched_getscheduler 145 +#define SYS_sched_get_priority_max 146 +#define SYS_sched_get_priority_min 147 +#define SYS_sched_rr_get_interval 148 +#define SYS_mlock 149 +#define SYS_munlock 150 +#define SYS_mlockall 151 +#define SYS_munlockall 152 +#define SYS_vhangup 153 +#define SYS_modify_ldt 154 +#define SYS_pivot_root 155 +#define SYS__sysctl 156 +#define SYS_prctl 157 +#define SYS_arch_prctl 158 +#define SYS_adjtimex 159 +#define SYS_setrlimit 160 +#define SYS_chroot 161 +#define SYS_sync 162 +#define SYS_acct 163 +#define SYS_settimeofday 164 +#define SYS_mount 165 +#define SYS_umount2 166 +#define SYS_swapon 167 +#define SYS_swapoff 168 +#define SYS_reboot 169 +#define SYS_sethostname 170 +#define SYS_setdomainname 171 +#define SYS_iopl 172 +#define SYS_ioperm 173 +#define SYS_create_module 174 +#define SYS_init_module 175 +#define SYS_delete_module 176 +#define SYS_get_kernel_syms 177 +#define SYS_query_module 178 +#define SYS_quotactl 179 +#define SYS_nfsservctl 180 +#define SYS_getpmsg 181 +#define SYS_putpmsg 182 +#define SYS_afs_syscall 183 +#define SYS_tuxcall 184 +#define SYS_security 185 +#define SYS_gettid 186 +#define SYS_readahead 187 +#define SYS_setxattr 188 +#define SYS_lsetxattr 189 +#define SYS_fsetxattr 190 +#define SYS_getxattr 191 +#define SYS_lgetxattr 192 +#define SYS_fgetxattr 193 +#define SYS_listxattr 194 +#define SYS_llistxattr 195 +#define SYS_flistxattr 196 +#define SYS_removexattr 197 +#define SYS_lremovexattr 198 +#define SYS_fremovexattr 199 +#define SYS_tkill 200 +#define SYS_time 201 +#define SYS_futex 202 +#define SYS_sched_setaffinity 203 +#define SYS_sched_getaffinity 204 +#define SYS_set_thread_area 205 +#define SYS_io_setup 206 +#define SYS_io_destroy 207 +#define SYS_io_getevents 208 +#define SYS_io_submit 209 +#define SYS_io_cancel 210 +#define SYS_get_thread_area 211 +#define SYS_lookup_dcookie 212 +#define SYS_epoll_create 213 +#define SYS_epoll_ctl_old 214 +#define SYS_epoll_wait_old 215 +#define SYS_remap_file_pages 216 +#define SYS_getdents64 217 +#define SYS_set_tid_address 218 +#define SYS_restart_syscall 219 +#define SYS_semtimedop 220 +#define SYS_fadvise64 221 +#define SYS_timer_create 222 +#define SYS_timer_settime 223 +#define SYS_timer_gettime 224 +#define SYS_timer_getoverrun 225 +#define SYS_timer_delete 226 +#define SYS_clock_settime 227 +#define SYS_clock_gettime 228 +#define SYS_clock_getres 229 +#define SYS_clock_nanosleep 230 +#define SYS_exit_group 231 +#define SYS_epoll_wait 232 +#define SYS_epoll_ctl 233 +#define SYS_tgkill 234 +#define SYS_utimes 235 +#define SYS_vserver 236 +#define SYS_mbind 237 +#define SYS_set_mempolicy 238 +#define SYS_get_mempolicy 239 +#define SYS_mq_open 240 +#define SYS_mq_unlink 241 +#define SYS_mq_timedsend 242 +#define SYS_mq_timedreceive 243 +#define SYS_mq_notify 244 +#define SYS_mq_getsetattr 245 +#define SYS_kexec_load 246 +#define SYS_waitid 247 +#define SYS_add_key 248 +#define SYS_request_key 249 +#define SYS_keyctl 250 +#define SYS_ioprio_set 251 +#define SYS_ioprio_get 252 +#define SYS_inotify_init 253 +#define SYS_inotify_add_watch 254 +#define SYS_inotify_rm_watch 255 +#define SYS_migrate_pages 256 +#define SYS_openat 257 +#define SYS_mkdirat 258 +#define SYS_mknodat 259 +#define SYS_fchownat 260 +#define SYS_futimesat 261 +#define SYS_newfstatat 262 +#define SYS_unlinkat 263 +#define SYS_renameat 264 +#define SYS_linkat 265 +#define SYS_symlinkat 266 +#define SYS_readlinkat 267 +#define SYS_fchmodat 268 +#define SYS_faccessat 269 +#define SYS_pselect6 270 +#define SYS_ppoll 271 +#define SYS_unshare 272 +#define SYS_set_robust_list 273 +#define SYS_get_robust_list 274 +#define SYS_splice 275 +#define SYS_tee 276 +#define SYS_sync_file_range 277 +#define SYS_vmsplice 278 +#define SYS_move_pages 279 +#define SYS_utimensat 280 +#define SYS_epoll_pwait 281 +#define SYS_signalfd 282 +#define SYS_timerfd_create 283 +#define SYS_eventfd 284 +#define SYS_fallocate 285 +#define SYS_timerfd_settime 286 +#define SYS_timerfd_gettime 287 +#define SYS_accept4 288 +#define SYS_signalfd4 289 +#define SYS_eventfd2 290 +#define SYS_epoll_create1 291 +#define SYS_dup3 292 +#define SYS_pipe2 293 +#define SYS_inotify_init1 294 +#define SYS_preadv 295 +#define SYS_pwritev 296 +#define SYS_rt_tgsigqueueinfo 297 +#define SYS_perf_event_open 298 +#define SYS_recvmmsg 299 +#define SYS_fanotify_init 300 +#define SYS_fanotify_mark 301 +#define SYS_prlimit64 302 +#define SYS_name_to_handle_at 303 +#define SYS_open_by_handle_at 304 +#define SYS_clock_adjtime 305 +#define SYS_syncfs 306 +#define SYS_sendmmsg 307 +#define SYS_setns 308 +#define SYS_getcpu 309 +#define SYS_process_vm_readv 310 +#define SYS_process_vm_writev 311 +#define SYS_kcmp 312 +#define SYS_finit_module 313 +#define SYS_sched_setattr 314 +#define SYS_sched_getattr 315 +#define SYS_renameat2 316 +#define SYS_seccomp 317 +#define SYS_getrandom 318 +#define SYS_memfd_create 319 +#define SYS_kexec_file_load 320 +#define SYS_bpf 321 +#define SYS_execveat 322 +#define SYS_userfaultfd 323 +#define SYS_membarrier 324 +#define SYS_mlock2 325 +#define SYS_copy_file_range 326 +#define SYS_preadv2 327 +#define SYS_pwritev2 328 +#define SYS_pkey_mprotect 329 +#define SYS_pkey_alloc 330 +#define SYS_pkey_free 331 +#define SYS_statx 332 +#define SYS_io_pgetevents 333 +#define SYS_rseq 334 +#define SYS_uretprobe 335 +#define SYS_uprobe 336 +#define SYS_pidfd_send_signal 424 +#define SYS_io_uring_setup 425 +#define SYS_io_uring_enter 426 +#define SYS_io_uring_register 427 +#define SYS_open_tree 428 +#define SYS_move_mount 429 +#define SYS_fsopen 430 +#define SYS_fsconfig 431 +#define SYS_fsmount 432 +#define SYS_fspick 433 +#define SYS_pidfd_open 434 +#define SYS_clone3 435 +#define SYS_close_range 436 +#define SYS_openat2 437 +#define SYS_pidfd_getfd 438 +#define SYS_faccessat2 439 +#define SYS_process_madvise 440 +#define SYS_epoll_pwait2 441 +#define SYS_mount_setattr 442 +#define SYS_quotactl_fd 443 +#define SYS_landlock_create_ruleset 444 +#define SYS_landlock_add_rule 445 +#define SYS_landlock_restrict_self 446 +#define SYS_memfd_secret 447 +#define SYS_process_mrelease 448 +#define SYS_futex_waitv 449 +#define SYS_set_mempolicy_home_node 450 +#define SYS_cachestat 451 +#define SYS_fchmodat2 452 +#define SYS_map_shadow_stack 453 +#define SYS_futex_wake 454 +#define SYS_futex_wait 455 +#define SYS_futex_requeue 456 +#define SYS_statmount 457 +#define SYS_listmount 458 +#define SYS_lsm_get_self_attr 459 +#define SYS_lsm_set_self_attr 460 +#define SYS_lsm_list_modules 461 +#define SYS_mseal 462 +#define SYS_setxattrat 463 +#define SYS_getxattrat 464 +#define SYS_listxattrat 465 +#define SYS_removexattrat 466 +#define SYS_open_tree_attr 467 +#define SYS_file_getattr 468 +#define SYS_file_setattr 469 +#define SYS_listns 470 diff --git a/lib/Makefile b/sysroot/lib/Makefile similarity index 100% rename from lib/Makefile rename to sysroot/lib/Makefile diff --git a/lib/arm32/_start.s b/sysroot/lib/arm32/_start.s similarity index 100% rename from lib/arm32/_start.s rename to sysroot/lib/arm32/_start.s diff --git a/lib/arm64/_start.s b/sysroot/lib/arm64/_start.s similarity index 100% rename from lib/arm64/_start.s rename to sysroot/lib/arm64/_start.s diff --git a/lib/scf_capi.c b/sysroot/lib/scf_capi.c similarity index 100% rename from lib/scf_capi.c rename to sysroot/lib/scf_capi.c diff --git a/lib/scf_complex.c b/sysroot/lib/scf_complex.c similarity index 100% rename from lib/scf_complex.c rename to sysroot/lib/scf_complex.c diff --git a/lib/scf_linux_api.c b/sysroot/lib/scf_linux_api.c similarity index 100% rename from lib/scf_linux_api.c rename to sysroot/lib/scf_linux_api.c diff --git a/lib/scf_list.c b/sysroot/lib/scf_list.c similarity index 100% rename from lib/scf_list.c rename to sysroot/lib/scf_list.c diff --git a/lib/scf_object.c b/sysroot/lib/scf_object.c similarity index 100% rename from lib/scf_object.c rename to sysroot/lib/scf_object.c diff --git a/lib/scf_rbtree.c b/sysroot/lib/scf_rbtree.c similarity index 100% rename from lib/scf_rbtree.c rename to sysroot/lib/scf_rbtree.c diff --git a/lib/scf_string.c b/sysroot/lib/scf_string.c similarity index 100% rename from lib/scf_string.c rename to sysroot/lib/scf_string.c diff --git a/lib/x64/_start.s b/sysroot/lib/x64/_start.s similarity index 100% rename from lib/x64/_start.s rename to sysroot/lib/x64/_start.s diff --git a/lib/x64/scf_atomic.s b/sysroot/lib/x64/scf_atomic.s similarity index 100% rename from lib/x64/scf_atomic.s rename to sysroot/lib/x64/scf_atomic.s diff --git a/lib/x64/scf_syscall.s b/sysroot/lib/x64/scf_syscall.s similarity index 100% rename from lib/x64/scf_syscall.s rename to sysroot/lib/x64/scf_syscall.s