image name helper

This commit is contained in:
Nikita Smith
2025-05-15 17:21:46 -07:00
committed by Ryan Fleury
parent 6fd9ab7388
commit d3c3b672ea
2 changed files with 15 additions and 2 deletions
+14 -2
View File
@@ -364,6 +364,15 @@ lnk_error_invalid_uac_ui_access_param(LNK_ErrorCode error_code, String8 obj_path
////////////////////////////////
internal String8
lnk_get_image_name(LNK_Config *config)
{
String8 image_name = config->image_name;
image_name = str8_skip_last_slash(image_name);
image_name = str8_chop_last_dot(image_name);
return image_name;
}
internal U64
lnk_get_default_function_pad_min(COFF_MachineType machine)
{
@@ -835,8 +844,9 @@ lnk_parse_export_directive_ex(Arena *arena, String8List directive, String8 obj_p
}
// does directive have ordinal?
U16 ordinal16 = 0;
String8 ordinal = {0};
COFF_ImportByType import_by = COFF_ImportBy_Name;
U16 ordinal16 = 0;
String8 ordinal = {0};
String8 noname_flag = {0};
if (str8_match(str8_prefix(str8_list_first(&flags), 1), str8_lit("@"), 0)) {
// parse ordinal
@@ -845,6 +855,7 @@ lnk_parse_export_directive_ex(Arena *arena, String8List directive, String8 obj_p
U64 ordinal64 = u64_from_str8(ordinal, 10);
if (ordinal64 <= max_U16) {
ordinal16 = (U16)ordinal64;
import_by = COFF_ImportBy_Ordinal;
} else {
String8 d = str8_list_join(scratch.arena, &directive, &(StringJoin){.sep=str8_lit(",")});
lnk_error_with_loc(LNK_Error_IllExport, obj_path, lib_path, "ordinal value must fit into 16-bit integer, \"/EXPORT:%S\"", d);
@@ -892,6 +903,7 @@ lnk_parse_export_directive_ex(Arena *arena, String8List directive, String8 obj_p
export_out->name = push_str8_copy(arena, name);
export_out->alias = push_str8_copy(arena, alias);
export_out->type = type;
export_out->import_by = import_by;
export_out->ordinal = ordinal16;
export_out->is_ordinal_assigned = ordinal.size > 0;
export_out->is_noname_present = noname_flag.size > 0;
+1
View File
@@ -529,6 +529,7 @@ internal void lnk_error_cmd_switch_invalid_param (LNK_ErrorCode code, Strin
////////////////////////////////
// Getters
internal String8 lnk_get_image_name(LNK_Config *config);
internal U64 lnk_get_default_function_pad_min(COFF_MachineType machine);
internal U64 lnk_get_base_addr(LNK_Config *config);
internal Version lnk_get_default_subsystem_version(PE_WindowsSubsystem subsystem, COFF_MachineType machine);