Don't merge notes when the relocs associated with them cannot be reliably deleted.

* objcopy.c (merge_gnu_build_notes): Disable merge if there are
	more internal relocs than external relocs.
This commit is contained in:
Nick Clifton
2017-05-02 16:54:53 +01:00
parent 73ec947d59
commit 1395c6ce47
2 changed files with 12 additions and 0 deletions

View File

@@ -2137,6 +2137,13 @@ merge_gnu_build_notes (bfd * abfd, asection * sec, bfd_size_type size, bfd_byte
relcount = 0;
}
/* A few targets (eg MIPS, SPARC) create multiple internal relocs to
represent a single external reloc. Unfortunately the current BFD
API does not handle deleting relocs in such situations very well
and so it is unsafe to proceed. */
if (relcount > sec->reloc_count)
goto done;
/* Eliminate the duplicates. */
new = new_contents = xmalloc (size);
for (pnote = pnotes, old = contents;