From 580bfe01c89c4e95cfb341b73514b8ec769ce635 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Fri, 26 Aug 2022 10:28:33 +0200 Subject: coff: fix after rebase --- src/link/Coff.zig | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/link/Coff.zig b/src/link/Coff.zig index d7e6ebe162..adfb843e04 100644 --- a/src/link/Coff.zig +++ b/src/link/Coff.zig @@ -729,15 +729,19 @@ pub fn flushModule(self: *Coff, comp: *Compilation, prog_node: *std.Progress.Nod index += 2; // Characteristics - var characteristics: u16 = std.coff.IMAGE_FILE_DEBUG_STRIPPED | std.coff.IMAGE_FILE_RELOCS_STRIPPED; // TODO Remove debug info stripped flag when necessary + var flags: std.coff.CoffHeaderFlags = .{ + // TODO Remove debug info stripped flag when necessary + .DEBUG_STRIPPED = 1, + .RELOCS_STRIPPED = 1, + }; if (output_mode == .Exe) { - characteristics |= std.coff.IMAGE_FILE_EXECUTABLE_IMAGE; + flags.EXECUTABLE_IMAGE = 1; } switch (self.ptr_width) { - .p32 => characteristics |= std.coff.IMAGE_FILE_32BIT_MACHINE, - .p64 => characteristics |= std.coff.IMAGE_FILE_LARGE_ADDRESS_AWARE, + .p32 => flags.@"32BIT_MACHINE" = 1, + .p64 => flags.LARGE_ADDRESS_AWARE = 1, } - mem.writeIntLittle(u16, hdr_data[index..][0..2], characteristics); + mem.writeIntLittle(u16, hdr_data[index..][0..2], @bitCast(u16, flags)); index += 2; assert(index == 20); @@ -877,7 +881,10 @@ pub fn flushModule(self: *Coff, comp: *Compilation, prog_node: *std.Progress.Nod mem.set(u8, hdr_data[index..][0..12], 0); index += 12; // Section flags - mem.writeIntLittle(u32, hdr_data[index..][0..4], std.coff.IMAGE_SCN_CNT_INITIALIZED_DATA | std.coff.IMAGE_SCN_MEM_READ); + mem.writeIntLittle(u32, hdr_data[index..][0..4], @bitCast(u32, std.coff.SectionHeaderFlags{ + .CNT_INITIALIZED_DATA = 1, + .MEM_READ = 1, + })); index += 4; // Then, the .text section hdr_data[index..][0..8].* = ".text\x00\x00\x00".*; @@ -903,11 +910,12 @@ pub fn flushModule(self: *Coff, comp: *Compilation, prog_node: *std.Progress.Nod mem.set(u8, hdr_data[index..][0..12], 0); index += 12; // Section flags - mem.writeIntLittle( - u32, - hdr_data[index..][0..4], - std.coff.IMAGE_SCN_CNT_CODE | std.coff.IMAGE_SCN_MEM_EXECUTE | std.coff.IMAGE_SCN_MEM_READ | std.coff.IMAGE_SCN_MEM_WRITE, - ); + mem.writeIntLittle(u32, hdr_data[index..][0..4], @bitCast(u32, std.coff.SectionHeaderFlags{ + .CNT_CODE = 1, + .MEM_EXECUTE = 1, + .MEM_READ = 1, + .MEM_WRITE = 1, + })); index += 4; assert(index == optional_header_size + section_table_size); -- cgit v1.2.3