+2016-02-10  Nick Clifton  <nickc@redhat.com>
+
+       PR 19405
+       * elf32-nios2.c (nios2_elf32_install_imm16): Allow for signed
+       immediate values.
+       * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Limit the
+       number of messages about FDE encoding preventing .eh_frame_hdr
+       generation.
+
 2016-02-09  Nick Clifton  <nickc@redhat.com>
 
        * oasys.c (oasys_archive_p): Fix indentation.
 
                     && ent->make_relative == 0)
                    || (ent->fde_encoding & 0x70) == DW_EH_PE_aligned))
              {
+               static int num_warnings_issued = 0;
+
                /* If a shared library uses absolute pointers
                   which we cannot turn into PC relative,
                   don't create the binary search table,
                   since it is affected by runtime relocations.  */
                hdr_info->u.dwarf.table = FALSE;
-               (*info->callbacks->einfo)
-                 (_("%P: FDE encoding in %B(%A) prevents .eh_frame_hdr"
-                    " table being created.\n"), abfd, sec);
+               if (num_warnings_issued < 10)
+                 {
+                   (*info->callbacks->einfo)
+                     (_("%P: FDE encoding in %B(%A) prevents .eh_frame_hdr"
+                        " table being created.\n"), abfd, sec);
+                   num_warnings_issued ++;
+                 }
+               else if (num_warnings_issued == 10)
+                 {
+                   (*info->callbacks->einfo)
+                     (_("%P: Further warnings about FDE encoding preventing .eh_frame_hdr generation dropped.\n"));
+                   num_warnings_issued ++;
+                 }
              }
            ent->removed = 0;
            hdr_info->u.dwarf.fde_count++;
 
 {
   bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset);
 
-  BFD_ASSERT(value <= 0xffff);
+  BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff);
 
   bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6),
              sec->contents + offset);