For PE format files, the base relocation table is necessary if the image is loaded...
[deliverable/binutils-gdb.git] / ld / emultempl / pep.em
index 2fef25e81d6ba6bb8cac1a89c6b88645e9b7aa29..e8f5ca503fb5695acd95d240da98e574b5095d69 100644 (file)
@@ -247,7 +247,8 @@ enum options
   OPTION_INSERT_TIMESTAMP,
   OPTION_NO_INSERT_TIMESTAMP,
   OPTION_TERMINAL_SERVER_AWARE,
-  OPTION_BUILD_ID
+  OPTION_BUILD_ID,
+  OPTION_ENABLE_RELOC_SECTION
 };
 
 static void
@@ -325,6 +326,7 @@ gld${EMULATION_NAME}_add_options
     {"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
     {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
     {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
+    {"enable-reloc-section", no_argument, NULL, OPTION_ENABLE_RELOC_SECTION},
     {NULL, no_argument, NULL, 0}
   };
 
@@ -448,6 +450,7 @@ gld_${EMULATION_NAME}_list_options (FILE *file)
                                        layout randomization (ASLR)\n"));
   fprintf (file, _("  --dynamicbase                      Image base address may be relocated using\n\
                                        address space layout randomization (ASLR)\n"));
+  fprintf (file, _("  --enable-reloc-section             Create the base relocation table\n"));
   fprintf (file, _("  --forceinteg               Code integrity checks are enforced\n"));
   fprintf (file, _("  --nxcompat                 Image is compatible with data execution prevention\n"));
   fprintf (file, _("  --no-isolation             Image understands isolation but do not isolate the image\n"));
@@ -799,9 +802,12 @@ gld${EMULATION_NAME}_handle_option (int optc)
     /*  Get DLLCharacteristics bits  */
     case OPTION_HIGH_ENTROPY_VA:
       pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA;
-      break;
+      /* fall through */
     case OPTION_DYNAMIC_BASE:
       pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE;
+      /* fall through */
+    case OPTION_ENABLE_RELOC_SECTION:
+      pep_dll_enable_reloc_section = 1;
       break;
     case OPTION_FORCE_INTEGRITY:
       pe_dll_characteristics |= IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY;
@@ -1755,6 +1761,7 @@ gld_${EMULATION_NAME}_finish (void)
 
 #ifdef DLL_SUPPORT
   if (bfd_link_pic (&link_info)
+      || pep_dll_enable_reloc_section
       || (!bfd_link_relocatable (&link_info)
          && pep_def_file->num_exports != 0))
     {
This page took 0.023632 seconds and 4 git commands to generate.