summaryrefslogtreecommitdiff
path: root/le/le_file.cpp
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2016-06-27 01:33:02 +0200
committerDennis Brentjes <d.brentjes@gmail.com>2016-06-27 15:23:06 +0200
commitb80a82fcc9edc73057796005cede4eea8380e193 (patch)
tree2da5e7cddef0bc39b449410c9826680a3dd6ca9d /le/le_file.cpp
parenta7bcede17b4c10e172c7877fc2ce89862dc454af (diff)
downloadopenwar-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.cpp17
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
};
}