--- binutils.orig/binutils/objcopy.c 2019-08-06 09:42:51.065854915 +0100 +++ binutils-2.30/binutils/objcopy.c 2019-08-06 09:47:36.293974283 +0100 @@ -2161,12 +2161,10 @@ merge_gnu_build_notes (bfd * abfd, asect attribute_type_byte = version_1_seen ? 1 : 3; val_start = attribute_type_byte + 1; - /* The first note should be the first version note. */ - if (pnotes[0].note.namedata[attribute_type_byte] != GNU_BUILD_ATTRIBUTE_VERSION) - { - err = _("bad GNU build attribute notes: first note not version note"); - goto done; - } + /* We used to require that the first note be a version note, + but this is no longer enforced. Due to the problems with + linking sections with the same name (eg .gnu.build.note.hot) + we cannot guarantee that the first note will be a version note. */ /* Now merge the notes. The rules are: 1. Preserve the ordering of the notes. @@ -2184,7 +2182,7 @@ merge_gnu_build_notes (bfd * abfd, asect description field of the note must be changed to contain the starting address to which it refers. 6. Notes with the same start and end address can be deleted. */ - for (pnote = pnotes + 1; pnote < pnotes_end; pnote ++) + for (pnote = pnotes; pnote < pnotes_end; pnote ++) { int note_type; objcopy_internal_note * back;