aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmain.py18
-rw-r--r--resources/makefile2
-rw-r--r--test/autowasm.c3
-rw-r--r--test/makefile2
-rw-r--r--test/struct.json51
-rw-r--r--text.py2
6 files changed, 19 insertions, 59 deletions
diff --git a/main.py b/main.py
index b39aa83..e5b89b1 100755
--- a/main.py
+++ b/main.py
@@ -197,7 +197,7 @@ def dupemake(path, main_name):
class CodeGen(object):
def __init__(self, argparser):
self.argparser = argparser
- self.struct_json = json.load(open(self.argparser.args.structs))
+ #self.struct_json = json.load(open(self.argparser.args.structs))
self.dnt = datetime.datetime.now().isoformat()
self.elems = []
self.def_elems = []
@@ -356,11 +356,12 @@ class CodeGen(object):
void_source.write("\n// automatically generated by faultreiber\n")
void_source.write("// " + self.dnt + "\n")
void_source.write('#include "./structs.h"\n')
- void_source.write('#include "./read.c"\n')
+ void_source.write('#include "./read.h"\n')
void_source.write("#include <stdlib.h>\n")
#void_source.write("void** void_train(void) {\n")
void_source_h.write('#ifndef FT_AGGREGATE_H\n#define FT_AGGREGATE_H\n')
void_source_h.write('#ifdef __cplusplus\nextern "C" {\n#endif\n')
+ void_source_h.write('#include "./structs.h"\n')
for elem in self.read_elems:
count = get_elem_count(elem)
size = get_elem_size(elem)
@@ -506,17 +507,21 @@ class CodeGen(object):
def_header.write("}" + child.attrib["name"] + ";\n\n")
def gen_struct_header_xml(self):
- struct_source = open(self.struct_source, "w")
+ struct_source = open(self.struct_source_h, "w")
struct_source_c = open(get_full_path(self.argparser.args.outdir, "structs.c"), "w")
+ struct_source.write("#ifndef FT_STRUCTS_H\n#define FT_STRUCTS_H\n")
struct_source_c.write('#include "structs.h"')
+ struct_source.write('#include <unistd.h>')
struct_source.write(text.pre_header_guard)
struct_source.write(text.autogen_warning)
if self.argparser.args.datetime: struct_source.write("// " + self.dnt + "\n")
struct_source.write(text.header_guard_begin.replace("XXX", "structs".upper()))
struct_source.write(text.header_inttype)
- struct_source.write(text.c_read_leb_u_def + "\n")
- struct_source.write(text.c_read_leb_s_def + "\n")
- struct_source.write(text.c_read_leb_macro_defs + "\n")
+ struct_source_c.write(text.c_read_leb_u_def + "\n")
+ struct_source_c.write(text.c_read_leb_s_def + "\n")
+ struct_source.write(text.c_read_leb_128_u_sig + "\n")
+ struct_source.write(text.c_read_leb_128_s_sig + "\n")
+ #struct_source.write(text.c_read_leb_macro_defs + "\n")
if self.argparser.args.structsinclude:
copy(self.argparser.args.structsinclude, self.argparser.args.outdir)
pos = self.argparser.args.structsinclude.rfind("/")
@@ -548,6 +553,7 @@ class CodeGen(object):
struct_source.write(ref_type + pointer + " " + childer.attrib["name"] + ";\n")
struct_source.write("}" + child.attrib["name"] + ";\n\n")
struct_source.write(text.pragma_endif)
+ struct_source.write("#endif //end of header guard\n")
#struct_source.write(text.last_comment)
def gen_struct_header(self):
diff --git a/resources/makefile b/resources/makefile
index d5598ea..434dc68 100644
--- a/resources/makefile
+++ b/resources/makefile
@@ -34,7 +34,7 @@ depend:.depend
.c.o:
$(CC) $(CC_FLAGS) -c $< -o $@
-$(TARGET): $(TARGET).o
+$(TARGET): $(TARGET).o read.o aggregate.o structs.o
$(CC) $^ $(LD_FLAGS) -o $@
ASM:$(TARGET).asm
diff --git a/test/autowasm.c b/test/autowasm.c
index 7e4150a..b62ad34 100644
--- a/test/autowasm.c
+++ b/test/autowasm.c
@@ -12,6 +12,8 @@
#pragma weak main
int main (int argc, char** argv) {
int wasm = open("./test.wasm", O_RDONLY);
+ malloc_all();
+#if 0
uint64_t test_u = 0U;
int64_t test_s = 0;
unsigned char test_byte;
@@ -35,5 +37,6 @@ int main (int argc, char** argv) {
counter++;
}
printf("\n");
+#endif
return 0;
}
diff --git a/test/makefile b/test/makefile
index 6dec265..db69aff 100644
--- a/test/makefile
+++ b/test/makefile
@@ -34,7 +34,7 @@ depend:.depend
.c.o:
$(CC) $(CC_FLAGS) -c $< -o $@
-$(TARGET): $(TARGET).o
+$(TARGET): $(TARGET).o read.o aggregate.o structs.o
$(CC) $^ $(LD_FLAGS) -o $@
ASM:$(TARGET).asm
diff --git a/test/struct.json b/test/struct.json
deleted file mode 100644
index cb7899c..0000000
--- a/test/struct.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{ "init_expr_t":
- {"field_name": ["size", "code"], "field_type": ["varuint32", "char*"], "lua_type": ["integer", "string"], "methods": ["convert", "check", "push_self", "push_args", "new"]},
- "resizable_limit_t":
- {"field_name":["flags", "initial", "maximum"], "field_type": ["varuint1", "varuint32", "varuint32"], "lua_type": ["integer", "integer", "integer"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "global_type_t":
- {"field_name": ["value_type", "mutability"], "field_type": ["enum value_type_t", "varuint1"], "lua_type":["integer", "integer"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "table_type_t":
- {"field_name": ["element_type", "resizable_limit"],"field_type": ["varint7", "resizable_limit_t*"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "memory_type_t":
- {"field_name":["resizable_limit"], "field_type":["resizable_limit_t*"], "lua_type":["lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Type_Section_Entry":
- {"field_name": ["form", "param_count", "param_types", "return_count", "return_types"], "field_type":["varint7", "varuint32", "varint7*", "varuint1", "varint7*"], "lua_type":["integer", "integer", "lightuserdata", "integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args","new"]},
- "W_Type_Section":
- {"field_name":["count", "entries"], "field_type": ["varuint32", "W_Type_Section_Entry**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Import_Section_Entry":
- {"field_name":["module_length", "module_str", "field_len", "field_str", "kind", "type"], "field_type":["varuint32", "char*", "varuint32", "char*", "enum external_kind_t", "void*"], "lua_type": ["integer", "string", "integer", "string", "integer", "lightuserdata"], "methods": ["convert", "check", "push_self", "push_args", "new"]},
- "W_Import_Section":
- {"field_name":["count", "entries"], "field_type":["varuint32","W_Import_Section_Entry**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Function_Section":
- {"field_name":["count", "types"], "field_type":["varuint32", "varuint32*"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Table_Section":
- {"field_name":["count", "entries"], "field_type":["varuint32", "table_type_t**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Memory_Section":
- {"field_name":["count", "entries"], "field_type":["varuint32", "memory_type_t**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Global_Entry":
- {"field_name":["type", "init"], "field_type":["global_type_t*", "init_expr_t*"], "lua_type":["lightuserdata", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Global_Section":
- {"field_name":["count", "globals"], "field_type":["varuint32", "W_Global_Entry**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Export_Entry":
- {"field_name":["field_len", "field_str", "kind", "index"], "field_type":["varuint32", "char*", "enum external_kind_t", "varuint32"], "lua_type":["integer", "string", "integer", "integer"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Export_Section":
- {"field_name":["count", "entries"], "field_type": ["varuint32", "W_Export_Entry**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Start_Section":
- {"field_name":["index"], "field_type":["varuint32"], "lua_type":["integer"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Elem_Segment":
- {"field_name":["index", "offset", "num_length", "elems"], "field_type":["varuint32", "init_expr_t*", "varuint32", "varuint32*"], "lua_type":["integer", "lightuserdata", "integer", "integer"], "methods": ["convert", "check", "push_self", "push_args", "new"]},
- "W_Element_Section":
- {"field_name":["count", "entries"], "field_type":["varuint32", "W_Elem_Segment**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Local_Entry":
- {"field_name":["count", "type"], "field_type":["varuint32", "enum value_type_t"], "lua_type":["integer", "integer"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Function_Body":
- {"field_name":["body_size", "local_count", "locals", "code"], "field_type":["varuint32", "varuint32", "W_Local_Entry**", "char*"], "lua_type":["integer", "integer", "lightuserdata", "string"], "methods": ["convert", "check", "push_self", "push_args", "new"]},
- "W_Code_Section":
- {"field_name":["count", "bodies"], "field_type":["varuint32", "W_Function_Body**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Data_Segment":
- {"field_name":["index", "offset", "size", "data"], "field_type":["varuint32", "init_expr_t*", "varuint32", "char*"], "lua_type":["integer", "lightuserdata", "integer", "string"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "W_Data_Section":
- {"field_name": ["count", "entries"], "field_type":["varuint32", "W_Data_Segment**"], "lua_type":["integer", "lightuserdata"], "methods":["convert", "check", "push_self", "push_args", "new"]},
- "Wasm_Module":
- {"field_name":["type_section", "import_section", "function_section", "table_section", "memory_section", "global_section", "export_section", "start_section", "element_section", "code_section", "data_section", "W_Custom_Sections", "name"], "field_type":["W_Type_Section*", "W_Import_Section*", "W_Function_Section*", "W_Table_Section*", "W_Memory_Section*", "W_Global_Section*", "W_Export_Section*", "W_Start_Section*", "W_Element_Section*", "W_Code_Section*", "W_Data_Section*", "void**", "char*"], "lua_type":["lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata", "lightuserdata","string"], "methods":["convert", "check", "push_self", "push_args", "new"]}
-}
diff --git a/text.py b/text.py
index f976327..a80d9ce 100644
--- a/text.py
+++ b/text.py
@@ -65,6 +65,8 @@ int64_t read_leb_128_s(int _fd, int max_size) {
if ((last_byte & 0x40) != 0) result |= -(1 << shift);
return result;
}"""
+ c_read_leb_128_s_sig = "int64_t read_leb_128_s(int _fd, int max_size);\n"
+ c_read_leb_128_u_sig = "uint64_t read_leb_128_u(int _fd, int max_size);\n"
c_read_leb_macro_defs = """
#define READ_VAR_UINT_1(FD) read_leb128_u(FD, 1)