mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
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:
parent
73ec947d59
commit
1395c6ce47
@ -1,3 +1,8 @@
|
||||
2017-05-02 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* objcopy.c (merge_gnu_build_notes): Disable merge if there are
|
||||
more internal relocs than external relocs.
|
||||
|
||||
2017-05-02 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* testsuite/binutils-all/mips/mips16-undecoded.d: Adjust the
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user