diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2016-06-27 01:33:02 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2016-06-27 15:23:06 +0200 |
| commit | b80a82fcc9edc73057796005cede4eea8380e193 (patch) | |
| tree | 2da5e7cddef0bc39b449410c9826680a3dd6ca9d /le/le_file.cpp | |
| parent | a7bcede17b4c10e172c7877fc2ce89862dc454af (diff) | |
| download | openwar-b80a82fcc9edc73057796005cede4eea8380e193.tar.gz openwar-b80a82fcc9edc73057796005cede4eea8380e193.tar.bz2 openwar-b80a82fcc9edc73057796005cede4eea8380e193.zip | |
Parses the fixup page and fixup record table.
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 }; } |
