diff -rup binutils-2.27.orig/bfd/elf-eh-frame.c binutils-2.27/bfd/elf-eh-frame.c --- binutils-2.27.orig/bfd/elf-eh-frame.c 2017-01-16 17:27:46.411632857 +0000 +++ binutils-2.27/bfd/elf-eh-frame.c 2017-01-16 17:30:03.663437755 +0000 @@ -2296,7 +2296,15 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str != sec->output_section->vma + val)) overflow = TRUE; bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8); - if (i != 0 + if (i > 0 + && hdr_info->u.dwarf.array[i].initial_loc + == hdr_info->u.dwarf.array[i - 1].initial_loc + && hdr_info->u.dwarf.array[i].range + == hdr_info->u.dwarf.array[i - 1].range) + /* Duplicate FDE entry. We should probably discard it + but for now just ignore it. */ + ; + else if (i != 0 && (hdr_info->u.dwarf.array[i].initial_loc < (hdr_info->u.dwarf.array[i - 1].initial_loc + hdr_info->u.dwarf.array[i - 1].range)))