diff --git a/src/coff/coff.c b/src/coff/coff.c index a474f698..2cd9bf29 100644 --- a/src/coff/coff.c +++ b/src/coff/coff.c @@ -301,18 +301,19 @@ coff_ordinal_data_from_hint(Arena *arena, COFF_MachineType machine, U16 hint) } internal String8 -coff_make_import_header_by_name(Arena *arena, - COFF_MachineType machine, - COFF_TimeStamp time_stamp, - String8 dll_name, - String8 name, - U16 hint, - COFF_ImportType type) +coff_make_import_header(Arena *arena, + COFF_MachineType machine, + COFF_TimeStamp time_stamp, + String8 dll_name, + COFF_ImportByType import_by, + String8 name, + U16 hint_or_ordinal, + COFF_ImportType type) { COFF_ImportHeaderFlags flags = 0; flags |= (type & COFF_ImportHeader_TypeMask) << COFF_ImportHeader_TypeShift; - flags |= COFF_ImportBy_Name << COFF_ImportHeader_ImportByShift; - + flags |= import_by << COFF_ImportHeader_ImportByShift; + COFF_ImportHeader header = {0}; header.sig1 = COFF_MachineType_Unknown; header.sig2 = max_U16; @@ -320,7 +321,6 @@ coff_make_import_header_by_name(Arena *arena, header.machine = machine; header.time_stamp = time_stamp; header.data_size = safe_cast_u32(name.size + dll_name.size + 2); - header.hint_or_ordinal = hint; header.flags = flags; // alloc memory @@ -344,48 +344,6 @@ coff_make_import_header_by_name(Arena *arena, return import_data; } -internal String8 -coff_make_import_header_by_ordinal(Arena *arena, - COFF_MachineType machine, - COFF_TimeStamp time_stamp, - String8 dll_name, - U16 ordinal, - COFF_ImportType type) -{ - COFF_ImportHeaderFlags flags = 0; - flags |= (type & COFF_ImportHeader_TypeMask) << COFF_ImportHeader_TypeShift; - flags |= COFF_ImportBy_Ordinal << COFF_ImportHeader_ImportByShift; - - COFF_ImportHeader header = {0}; - header.sig1 = COFF_MachineType_Unknown; - header.sig2 = max_U16; - header.version = 0; - header.machine = machine; - header.time_stamp = time_stamp; - header.data_size = safe_cast_u32(dll_name.size + 2); - header.hint_or_ordinal = ordinal; - header.flags = flags; - - // alloc memory - U64 buffer_size = sizeof(header) + header.data_size; - U8 *buffer = push_array_no_zero(arena, U8, buffer_size); - - // copy header - MemoryCopy(buffer, &header, sizeof(header)); - - // no function name write zero - U8 *func_name = buffer + sizeof(header); - func_name[0] = 0; - - // copy dll name - U8 *dll_name_buffer = buffer + sizeof(header) + /* name.size */ + 1; - MemoryCopy(dll_name_buffer, dll_name.str, dll_name.size); - dll_name_buffer[dll_name.size] = 0; - - String8 import_data = str8(buffer, buffer_size); - return import_data; -} - internal U64 coff_word_size_from_machine(COFF_MachineType machine) { diff --git a/src/coff/coff.h b/src/coff/coff.h index 3cbe8f8e..c7c59b78 100644 --- a/src/coff/coff.h +++ b/src/coff/coff.h @@ -611,7 +611,8 @@ internal U32 coff_make_ordinal32(U16 hint); internal U64 coff_make_ordinal64(U16 hint); internal String8 coff_ordinal_data_from_hint(Arena *arena, COFF_MachineType machine, U16 hint); -internal String8 coff_make_import_lookup (Arena *arena, U16 hint, String8 name); +internal String8 coff_make_import_lookup(Arena *arena, U16 hint, String8 name); +internal String8 coff_make_import_header(Arena *arena, COFF_MachineType machine, COFF_TimeStamp time_stamp, String8 dll_name, COFF_ImportByType import_by, String8 name, U16 hint_or_ordinal, COFF_ImportType type); //////////////////////////////// // Misc