Commit f7bc8900bf

Erik Hugne <erik.hugne@gmail.com>
2022-04-25 22:45:12
std.coff: parse out codebase and entrypoint from optionalheader
1 parent 6f4343b
Changed files (1)
lib
lib/std/coff.zig
@@ -197,7 +197,11 @@ pub const Coff = struct {
         const opt_header_pos = try self.in_file.getPos();
 
         self.pe_header.magic = try in.readIntLittle(u16);
-        // All we care about is the image base value and PDB info
+        try self.in_file.seekTo(opt_header_pos + 16);
+        self.pe_header.entry_addr = try in.readIntLittle(u32);
+        try self.in_file.seekTo(opt_header_pos + 20);
+        self.pe_header.code_base = try in.readIntLittle(u32);
+
         // The header structure is different for 32 or 64 bit
         var num_rva_pos: u64 = undefined;
         if (self.pe_header.magic == IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
@@ -374,6 +378,8 @@ const OptionalHeader = struct {
 
     magic: u16,
     data_directory: [IMAGE_NUMBEROF_DIRECTORY_ENTRIES]DataDirectory,
+    entry_addr: u32,
+    code_base: u32,
     image_base: u64,
 };