set dynamic base on /fixed:no

This commit is contained in:
Nikita Smith
2024-10-24 11:36:52 -07:00
parent 15b1ebcd21
commit 6ffc065712
+5 -3
View File
@@ -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) {