From 6ffc065712fc455f7b0c67398fedc1a86afe40c5 Mon Sep 17 00:00:00 2001 From: Nikita Smith Date: Thu, 24 Oct 2024 11:36:52 -0700 Subject: [PATCH] set dynamic base on /fixed:no --- src/linker/lnk_config.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/linker/lnk_config.c b/src/linker/lnk_config.c index 9f039ce1..37937306 100644 --- a/src/linker/lnk_config.c +++ b/src/linker/lnk_config.c @@ -873,9 +873,6 @@ lnk_config_from_cmd_line(Arena *arena, String8List raw_cmd_line) lnk_cmd_line_push_option_if_not_presentf(scratch.arena, &cmd_line, LNK_CmdSwitch_Align, "%u", KB(4)); lnk_cmd_line_push_option_if_not_presentf(scratch.arena, &cmd_line, LNK_CmdSwitch_Debug, "none"); lnk_cmd_line_push_option_if_not_presentf(scratch.arena, &cmd_line, LNK_CmdSwitch_FileAlign, "%u", 512); - if (!lnk_cmd_line_has_switch(cmd_line, LNK_CmdSwitch_Fixed)) { - lnk_cmd_line_push_optionf(scratch.arena, &cmd_line, LNK_CmdSwitch_DynamicBase, ""); - } if (lnk_cmd_line_has_switch(cmd_line, LNK_CmdSwitch_Dll)) { lnk_cmd_line_push_option_if_not_presentf(scratch.arena, &cmd_line, LNK_CmdSwitch_SubSystem, "%S", pe_string_from_subsystem(PE_WindowsSubsystem_WINDOWS_GUI)); } @@ -1753,6 +1750,11 @@ lnk_config_from_cmd_line(Arena *arena, String8List raw_cmd_line) config->file_characteristics |= PE_ImageFileCharacteristic_STRIPPED; config->dll_characteristics &= ~PE_DllCharacteristic_DYNAMIC_BASE; } + // if we don't have a fixed image and dynamic base switch + // was omitted we make image with dynamic base + else if (!lnk_cmd_line_has_switch(cmd_line, LNK_CmdSwitch_DynamicBase)) { + config->dll_characteristics |= PE_DllCharacteristic_DYNAMIC_BASE; + } // set flag for /guard if (config->guard_flags != LNK_Guard_None) {