diff options
Diffstat (limited to 'le/le_file.cpp')
| -rw-r--r-- | le/le_file.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/le/le_file.cpp b/le/le_file.cpp index b6aa54f..55478c8 100644 --- a/le/le_file.cpp +++ b/le/le_file.cpp @@ -19,8 +19,12 @@ BOOST_FUSION_ADAPT_STRUCT( (le::Header, le_header) (le::ObjectTable, object_table) (le::ObjectPageTable, object_page_table) + (le::ObjectIterateDataMapTable, object_iterate_data_map_table) + (le::ResourceTable, resource_table) (le::ResidentNameTable, resident_name_table) (le::EntryTable, entry_table) + (le::FixupPageTable, fixup_page_table) + (le::FixupRecordTable, fixup_record_table) ) namespace le { @@ -39,14 +43,13 @@ File parse_file(std::istream& is) { binparse::dump_bytes(is, dos_exe, "dos_exe"); auto le_h = le::parse_header(is); - auto object_table = parse_object_table(is, le_offset + le_h.object_table_offset, le_h.nr_objects_in_module); - auto object_page_table = parse_object_page_table(is, le_offset + le_h.object_page_table_offset, le_h.module_nr_of_pages); - auto resident_name_table = parse_resident_name_table(is, le_offset + le_h.resident_name_table_offset); - auto entry_table = parse_entry_table(is, le_offset + le_h.entry_table_offset); + auto resource_table = parse_resource_table(is, le_offset + le_h.resource_table_offset, le_h.nr_resource_table_entries); + auto fixup_page_table = parse_fixup_page_table(is, le_offset + le_h.fixup_page_table_offset, le_h.module_nr_of_pages + binparse::Value32(1)); + auto fixup_record_table = parse_fixup_record_table(is, le_offset + le_h.fixup_record_table_offset, fixup_page_table); return { mz_h, @@ -58,8 +61,12 @@ File parse_file(std::istream& is) { le_h, object_table, object_page_table, + {}, + resource_table, resident_name_table, - entry_table + entry_table, + fixup_page_table, + fixup_record_table }; } |
