0b119dd9d5
Fix merging ppc64le notes (again). (#1928936)
43 lines
1.3 KiB
Diff
43 lines
1.3 KiB
Diff
--- binutils.orig/binutils/objcopy.c 2021-02-18 11:35:48.062479490 +0000
|
|
+++ binutils-2.30/binutils/objcopy.c 2021-02-18 11:36:52.207071148 +0000
|
|
@@ -2224,6 +2224,11 @@ merge_gnu_build_notes (bfd * ab
|
|
goto done;
|
|
}
|
|
|
|
+ if (start > end)
|
|
+ /* This can happen with PPC64LE binaries where empty notes are
|
|
+ encoded as start = end + 4. */
|
|
+ start = end;
|
|
+
|
|
if (is_open_note (pnote))
|
|
{
|
|
if (start)
|
|
--- binutils.orig/binutils/objcopy.c 2021-02-22 10:36:15.710374328 +0000
|
|
+++ binutils-2.36.1/binutils/objcopy.c 2021-02-22 16:47:11.702344502 +0000
|
|
@@ -2246,23 +2246,8 @@ merge_gnu_build_notes (bfd * ab
|
|
break;
|
|
|
|
case 8:
|
|
- if (! is_64bit (abfd))
|
|
- {
|
|
- start = bfd_get_32 (abfd, pnote->note.descdata);
|
|
- end = bfd_get_32 (abfd, pnote->note.descdata + 4);
|
|
- }
|
|
- else
|
|
- {
|
|
- start = bfd_get_64 (abfd, pnote->note.descdata);
|
|
- /* FIXME: For version 1 and 2 notes we should try to
|
|
- calculate the end address by finding a symbol whose
|
|
- value is START, and then adding in its size.
|
|
-
|
|
- For now though, since v1 and v2 was not intended to
|
|
- handle gaps, we chose an artificially large end
|
|
- address. */
|
|
- end = (bfd_vma) -1;
|
|
- }
|
|
+ start = bfd_get_32 (abfd, pnote->note.descdata);
|
|
+ end = bfd_get_32 (abfd, pnote->note.descdata + 4);
|
|
break;
|
|
|
|
case 16:
|