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 16:04:09.390542219 +0000
|
||
|
+++ binutils-2.30/binutils/objcopy.c 2021-02-22 16:04:32.214392597 +0000
|
||
|
@@ -2195,23 +2195,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) 0x7ffffffffffffffUL;
|
||
|
- }
|
||
|
+ start = bfd_get_32 (abfd, pnote->note.descdata);
|
||
|
+ end = bfd_get_32 (abfd, pnote->note.descdata + 4);
|
||
|
break;
|
||
|
|
||
|
case 16:
|