1, add some error check for source code,
authoryu.dongliang <18588496441@163.com>
Mon, 3 Aug 2026 18:50:05 +0000 (02:50 +0800)
committeryu.dongliang <18588496441@163.com>
Mon, 3 Aug 2026 18:50:42 +0000 (02:50 +0800)
2, macro: short logic operator &&, ||,
3, mov ../lib to ../sysroot/lib.

58 files changed:
elf/scf_elf_arm32_so.c
elf/scf_elf_arm64_so.c
elf/scf_elf_naja_so.c
elf/scf_elf_x64_so.c
examples/auto_gc_0.c
examples/auto_gc_1.c
examples/auto_gc_multi_rets.c
examples/complex.c
examples/list_test.c
examples/mat.c
examples/mat2.c
examples/mat_mul_strassen.c
examples/member_array0.c
examples/recursive_pointer.c
examples/ret2_err.c
examples/str.c
examples/strcpy.c
examples/string.c
lex/scf_lex.c
lex/scf_lex.h
lex/scf_lex_test.c
lex/scf_macro_expr.c
lib/arm32/_start.o [deleted file]
lib/arm32/lib/ld-linux-armhf.so.3 [deleted file]
lib/arm32/libc.so.6 [deleted file]
lib/arm64/_start.o [deleted file]
lib/arm64/lib/ld-linux-aarch64.so.1 [deleted file]
lib/arm64/libc.so.6 [deleted file]
lib/ld-linux-x86-64.so.2 [deleted file]
lib/x64/_start.o [deleted file]
lib/x64/lib64/ld-linux-x86-64.so.2 [deleted file]
lib/x64/libc.so.6 [deleted file]
lib/x64/scf_atomic.o [deleted file]
lib/x64/scf_object.o [deleted file]
parse/main.c
parse/scf_dfa.h
parse/scf_dfa_call.c
parse/scf_dfa_expr.c
parse/scf_dfa_parse.c
parse/scf_dfa_type.c
parse/scf_parse.c
parse/scf_parse.h
sysroot/include/alltypes.h [new file with mode: 0644]
sysroot/include/stdio.h [new file with mode: 0644]
sysroot/include/syscall.h [new file with mode: 0644]
sysroot/lib/Makefile [moved from lib/Makefile with 100% similarity]
sysroot/lib/arm32/_start.s [moved from lib/arm32/_start.s with 100% similarity]
sysroot/lib/arm64/_start.s [moved from lib/arm64/_start.s with 100% similarity]
sysroot/lib/scf_capi.c [moved from lib/scf_capi.c with 100% similarity]
sysroot/lib/scf_complex.c [moved from lib/scf_complex.c with 100% similarity]
sysroot/lib/scf_linux_api.c [moved from lib/scf_linux_api.c with 100% similarity]
sysroot/lib/scf_list.c [moved from lib/scf_list.c with 100% similarity]
sysroot/lib/scf_object.c [moved from lib/scf_object.c with 100% similarity]
sysroot/lib/scf_rbtree.c [moved from lib/scf_rbtree.c with 100% similarity]
sysroot/lib/scf_string.c [moved from lib/scf_string.c with 100% similarity]
sysroot/lib/x64/_start.s [moved from lib/x64/_start.s with 100% similarity]
sysroot/lib/x64/scf_atomic.s [moved from lib/x64/scf_atomic.s with 100% similarity]
sysroot/lib/x64/scf_syscall.s [moved from lib/x64/scf_syscall.s with 100% similarity]

index 504912261cb06319696bb9c21ef9ed76c6c9713c..fc1dee00d54714d2c74b5b051fb769206ae47b47 100644 (file)
@@ -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];
index 803fbc92c874161249fbafbb023e20210ae943b3..783c4e9abfba6a9e238a1e516ea1001122e7af17 100644 (file)
@@ -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];
index 073e9629ab90be259624f7a7c821fc310e15d395..0193d5e9613d4e05925f8e9717505e508baf7d6c 100644 (file)
@@ -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];
index 46b1df7543df77ec0ad70bf66d627c8cb814d006..4639d2ce3364273d2a813487558d5a97a8e87457 100644 (file)
@@ -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];
index 76c0e9b448819d6d844f8dea87b008ea3d14efe2..2f7143273f56e88123905d2e0ddef72b5218c18b 100644 (file)
@@ -1,4 +1,4 @@
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 int* f()
 {
index f7ad54821249f29762c989507403b09cc3deab15..15d689e48266831ef2526bca6286d8af1e657337 100644 (file)
@@ -1,4 +1,4 @@
-#include"../lib/scf_capi.c"
+#include"../sysroot/lib/scf_capi.c"
 
 struct Object
 {
index ee8be8053f6054cbf9c9e7bfbfab0bd83021bf9b..e2b92e59b09873387c16fb853048fec1911b6d17 100644 (file)
@@ -1,5 +1,4 @@
-
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 int*, int* f()
 {
index 1f551580f38b2888fbad5de678b0b993ea5620ce..e8414df4384796681d391aaaa687af6b5bc8a4d5 100644 (file)
@@ -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()
 {
index 7d5985b59b17800c491dda3c62654bfa72fc8bad..5e0c2a717bed46aaeb92b8af0562e9f4b97d7832 100644 (file)
@@ -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
 {
index 0395a17d0da5bbc9b57e4beb62c960b263da23e9..8f696a0cec1fac102bae99e2d3181166f1e46a06 100644 (file)
@@ -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;
index 62922ef262d448df4e77fa905042e97100014d83..78499f38fdf6a7fc625135b4d47de23e64c00f34 100644 (file)
@@ -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;
index 5b7deeb6922e5299573b7c6410f638d61b942fb7..6f7903a90843846b8616aac97895a33df8918425 100644 (file)
@@ -1,4 +1,4 @@
-#include"../lib/scf_capi.c"
+#include"../sysroot/lib/scf_capi.c"
 
 #define assert(x)\
        do {\
index 0c2f233ff40d4831b46fd09affa31d930bdc1d10..cfb1da3b53be526e84ec7dd9b91e3508db4990bb 100644 (file)
@@ -1,4 +1,4 @@
-#include"../lib/scf_capi.c"
+#include"../sysroot/lib/scf_capi.c"
 
 struct mat
 {
index 83ae6bc9508a5a5fc7ba1580431fa85bd49a7d39..b2f1f8ae7d9a29de47e91d86af9c995dc603ccc7 100644 (file)
@@ -1,4 +1,4 @@
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 int f(int** t0, int **t1);
 
index 63a451223a28ce7abbbaadf993b020e5a2aaccdd..38dd665176e9a85a4c2b6e87a5151df61325d0c7 100644 (file)
@@ -1,5 +1,4 @@
-
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 struct str
 {
index 978f9d0a4101d1789d524971b363c420aff8e932..74bcf54d3706b98d1f8278e7f60b783ce6f2a1e4 100644 (file)
@@ -1,4 +1,4 @@
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 struct str
 {
index 83bb84cfa3e1f9b5429ac7b9ed0bf0eb8e9834c5..46189e74fd66af2bf5c600f22b31b13fe7cd64f8 100644 (file)
@@ -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;
 
index 9262554ab470e131407a61bf0cf9f54707d941de..9d258abb7771b421869521c41b8c2c71b185790f 100644 (file)
@@ -1,4 +1,4 @@
-#include "../lib/scf_capi.c"
+#include "../sysroot/lib/scf_capi.c"
 
 struct string
 {
index c2c69c1e7f3745f6949d589256e9c1c675e8def5..5512eb647e750882b8fc4e1fef5525a606fb7114 100644 (file)
@@ -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)
index 79b93914c0412a5aa5e3304e7441759dea072d8a..bacbe0d79061f1a47d96dd86902d4ddefda4cb0e 100644 (file)
@@ -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);
index a42dbb1d1b216df8bfbd0dd9c19d8598d6761cfa..3617057d4094dce79cc3d1e0c8803a66991b6104 100644 (file)
@@ -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;
        }
index 6602c9379b225e42e04e037df212c6449ddb464e..8548a303c0e0941c7dd5b1ee9c24ca38d391506a 100644 (file)
@@ -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 (file)
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 (executable)
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 (executable)
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 (file)
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 (executable)
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 (executable)
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 (executable)
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 (file)
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 (executable)
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 (executable)
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 (file)
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 (file)
index 00fd525..0000000
Binary files a/lib/x64/scf_object.o and /dev/null differ
index e72b0b88a357136962797e8f6ee64793f0f5c5b6..61fe9e19c02065367eaac5421f85aca796168b76 100644 (file)
@@ -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);
index ddd68a1b72268b9289d00fe0fcd51ea4f8bf233d..d261f9df98caec4a226e532a59160cb19eecb214 100644 (file)
@@ -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;
index 723fff021afdfa42ad8423643fbf72e1b118fb03..c264278e9c00d7c13efc27fd14d496470cfb3d31 100644 (file)
@@ -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;
 }
 
index 3213c091a54f5582bb862a42870bab53034eaac3..47b07727a893c56635b476925116a75c2be4acb7 100644 (file)
@@ -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);
index 232e93aa620891eb6d453c5e716297f37bb67882..ea88bc2d59610bba193a5f4694be655aa44c61e3 100644 (file)
@@ -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;
 }
index fca7f19b13f8e25f2adaca583494c03a7a8d318b..4cb546a47c56df8fc284957a677c79041a7de750 100644 (file)
@@ -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,
 };
index e15f6f8ca69759acd1d9077fcb0e51ad14415f07..11585714fd24afcae24d7a3a522559d55830bbcc 100644 (file)
@@ -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)
index a1dc31b749311823981aaa5fc9c359db74e34c44..5e41f7a1c97eccce74dac0dc44377112ae709b8a 100644 (file)
@@ -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 (file)
index 0000000..b5d6f52
--- /dev/null
@@ -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 (file)
index 0000000..4ea4c17
--- /dev/null
@@ -0,0 +1,231 @@
+#ifndef _STDIO_H
+#define _STDIO_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <features.h>
+
+#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 <bits/alltypes.h>
+
+#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 (file)
index 0000000..fdf7a20
--- /dev/null
@@ -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
similarity index 100%
rename from lib/Makefile
rename to sysroot/lib/Makefile
similarity index 100%
rename from lib/scf_capi.c
rename to sysroot/lib/scf_capi.c
similarity index 100%
rename from lib/scf_complex.c
rename to sysroot/lib/scf_complex.c
similarity index 100%
rename from lib/scf_list.c
rename to sysroot/lib/scf_list.c
similarity index 100%
rename from lib/scf_object.c
rename to sysroot/lib/scf_object.c
similarity index 100%
rename from lib/scf_rbtree.c
rename to sysroot/lib/scf_rbtree.c
similarity index 100%
rename from lib/scf_string.c
rename to sysroot/lib/scf_string.c
similarity index 100%
rename from lib/x64/_start.s
rename to sysroot/lib/x64/_start.s