Blame SOURCES/binutils-ignore-duplicate-FDE-entries.patch

a6dfc0
--- binutils-2.32.orig/bfd/elf-eh-frame.c	2019-06-26 07:05:43.839194746 -0400
a6dfc0
+++ binutils-2.32/bfd/elf-eh-frame.c	2019-06-26 07:32:37.124219479 -0400
a6dfc0
@@ -2478,11 +2478,16 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
a6dfc0
 		  != sec->output_section->vma + val))
a6dfc0
 	    overflow = TRUE;
a6dfc0
 	  bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8);
a6dfc0
-	  if (i != 0
a6dfc0
-	      && (hdr_info->u.dwarf.array[i].initial_loc
a6dfc0
-		  < (hdr_info->u.dwarf.array[i - 1].initial_loc
a6dfc0
-		     + hdr_info->u.dwarf.array[i - 1].range)))
a6dfc0
-	    overlap = TRUE;
a6dfc0
+	  if (i != 0)
a6dfc0
+	    {
a6dfc0
+	      struct eh_frame_array_ent * this_entry = hdr_info->u.dwarf.array + i;
a6dfc0
+	      struct eh_frame_array_ent * prev_entry = hdr_info->u.dwarf.array + (i - 1);
a6dfc0
+
a6dfc0
+	      if (this_entry->initial_loc < prev_entry->initial_loc + prev_entry->range
a6dfc0
+		  && (this_entry->initial_loc != prev_entry->initial_loc
a6dfc0
+		      || this_entry->range != prev_entry->range))
a6dfc0
+		overlap = TRUE;
a6dfc0
+	    }
a6dfc0
 	}
a6dfc0
       if (overflow)
a6dfc0
 	_bfd_error_handler (_(".eh_frame_hdr entry overflow"));