File binutils-2.42-option-high-entry-va.patch of Package mingw64-binutils
diff -ur binutils-2.42.orig/ld/emultempl/pe.em binutils-2.42/ld/emultempl/pe.em
--- binutils-2.42.orig/ld/emultempl/pe.em 2024-01-29 01:00:00.000000000 +0100
+++ binutils-2.42/ld/emultempl/pe.em 2024-06-03 09:22:53.442422519 +0200
@@ -128,6 +128,7 @@
#define DEFAULT_DLL_CHARACTERISTICS (${cygwin_behavior} ? 0 : \
IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE \
+ | IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA \
| IMAGE_DLL_CHARACTERISTICS_NX_COMPAT)
#if defined(TARGET_IS_i386pe) || ! defined(DLL_SUPPORT)
@@ -285,6 +286,7 @@
OPTION_ENABLE_LONG_SECTION_NAMES,
OPTION_DISABLE_LONG_SECTION_NAMES,
/* DLLCharacteristics flags. */
+ OPTION_HIGH_ENTROPY_VA,
OPTION_DYNAMIC_BASE,
OPTION_FORCE_INTEGRITY,
OPTION_NX_COMPAT,
@@ -303,6 +305,7 @@
OPTION_ENABLE_RELOC_SECTION,
OPTION_DISABLE_RELOC_SECTION,
/* DLL Characteristics flags. */
+ OPTION_DISABLE_HIGH_ENTROPY_VA,
OPTION_DISABLE_DYNAMIC_BASE,
OPTION_DISABLE_FORCE_INTEGRITY,
OPTION_DISABLE_NX_COMPAT,
@@ -382,6 +385,8 @@
{"disable-large-address-aware", no_argument, NULL, OPTION_DISABLE_LARGE_ADDRESS_AWARE},
{"enable-long-section-names", no_argument, NULL, OPTION_ENABLE_LONG_SECTION_NAMES},
{"disable-long-section-names", no_argument, NULL, OPTION_DISABLE_LONG_SECTION_NAMES},
+ {"high-entropy-va", no_argument, NULL, OPTION_HIGH_ENTROPY_VA},
+ {"disable-high-entropy-va", no_argument, NULL, OPTION_DISABLE_HIGH_ENTROPY_VA},
{"dynamicbase",no_argument, NULL, OPTION_DYNAMIC_BASE},
{"disable-dynamicbase",no_argument, NULL, OPTION_DISABLE_DYNAMIC_BASE},
{"forceinteg", no_argument, NULL, OPTION_FORCE_INTEGRITY},
@@ -935,6 +940,9 @@
pe_use_coff_long_section_names = 0;
break;
/* Get DLLCharacteristics bits */
+ case OPTION_HIGH_ENTROPY_VA:
+ pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA;
+ /* fall through */
case OPTION_DYNAMIC_BASE:
pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE;
/* fall through */
@@ -946,6 +954,9 @@
/* fall through */
case OPTION_DISABLE_DYNAMIC_BASE:
pe_dll_characteristics &= ~ IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE;
+ /* fall through */
+ case OPTION_DISABLE_HIGH_ENTROPY_VA:
+ pe_dll_characteristics &= ~ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA;
break;
case OPTION_FORCE_INTEGRITY:
pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY;