+2016-09-14  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/20537
+       * emultempl/elf32.em: More OPTION_xxx values into an enum.  Add
+       OPTION_NO_EH_FRAME_HDR.
+       (_add_options): Add support for --no-eh-frame-hdr.
+       * ld.texinfo: Document new option.
+       * lexsup.c (elf_shlib_list_options): List new option.
+       * NEWS: Mention the new option.
+
 2016-09-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/20550
 
 
 Changes in 2.28:
 
+* The command line option --no-eh-frame-hdr can now be used in ELF based
+  linkers to disable the automatic generation of .eh_frame_hdr sections.
+
 * Add --in-implib=<infile> to the ARM linker to enable specifying a set of
   Secure Gateway veneers that must exist in the output import library specified
   by --out-implib=<outfile> and the address they must have.  As such,
 
 
 fragment <<EOF
 
-#define OPTION_DISABLE_NEW_DTAGS       (400)
-#define OPTION_ENABLE_NEW_DTAGS                (OPTION_DISABLE_NEW_DTAGS + 1)
-#define OPTION_GROUP                   (OPTION_ENABLE_NEW_DTAGS + 1)
-#define OPTION_EH_FRAME_HDR            (OPTION_GROUP + 1)
-#define OPTION_EXCLUDE_LIBS            (OPTION_EH_FRAME_HDR + 1)
-#define OPTION_HASH_STYLE              (OPTION_EXCLUDE_LIBS + 1)
-#define OPTION_BUILD_ID                        (OPTION_HASH_STYLE + 1)
-#define OPTION_AUDIT                   (OPTION_BUILD_ID + 1)
-#define OPTION_COMPRESS_DEBUG          (OPTION_AUDIT + 1)
+enum elf_options
+{
+  OPTION_DISABLE_NEW_DTAGS = 400,
+  OPTION_ENABLE_NEW_DTAGS,
+  OPTION_GROUP,
+  OPTION_EH_FRAME_HDR,
+  OPTION_NO_EH_FRAME_HDR,
+  OPTION_EXCLUDE_LIBS,
+  OPTION_HASH_STYLE,
+  OPTION_BUILD_ID,
+  OPTION_AUDIT,
+  OPTION_COMPRESS_DEBUG
+};
 
 static void
 gld${EMULATION_NAME}_add_options
     {"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
     {"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
     {"eh-frame-hdr", no_argument, NULL, OPTION_EH_FRAME_HDR},
+    {"no-eh-frame-hdr", no_argument, NULL, OPTION_NO_EH_FRAME_HDR},
     {"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
     {"hash-style", required_argument, NULL, OPTION_HASH_STYLE},
 EOF
       link_info.eh_frame_hdr_type = DWARF2_EH_HDR;
       break;
 
+    case OPTION_NO_EH_FRAME_HDR:
+      link_info.eh_frame_hdr_type = 0;
+      break;
+
     case OPTION_GROUP:
       link_info.flags_1 |= (bfd_vma) DF_1_GROUP;
       /* Groups must be self-contained.  */
 
 call before the linker has a chance to wrap it to @code{malloc}.
 
 @kindex --eh-frame-hdr
+@kindex --no-eh-frame-hdr
 @item --eh-frame-hdr
-Request creation of @code{.eh_frame_hdr} section and ELF
-@code{PT_GNU_EH_FRAME} segment header.
+@itemx --no-eh-frame-hdr
+Request (@option{--eh-frame-hdr}) or suppress
+(@option{--no-eh-frame-hdr}) the creation of @code{.eh_frame_hdr}
+section and ELF @code{PT_GNU_EH_FRAME} segment header.
 
 @kindex --ld-generated-unwind-info
 @item --no-ld-generated-unwind-info