diff --git a/binutils-rh1247126.patch b/binutils-rh1247126.patch new file mode 100644 index 0000000..a7c13d3 --- /dev/null +++ b/binutils-rh1247126.patch @@ -0,0 +1,26 @@ +diff -Nrup a/bfd/elf.c b/bfd/elf.c +--- a/bfd/elf.c 2015-07-28 10:52:10.941754850 -0600 ++++ b/bfd/elf.c 2015-07-28 10:53:34.725982912 -0600 +@@ -4081,11 +4081,18 @@ _bfd_elf_map_sections_to_segments (bfd * + new_segment = TRUE; + } + else if ((last_hdr->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0 +- && (hdr->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) != 0) ++ && (hdr->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) != 0 ++ && ((abfd->flags & D_PAGED) == 0 ++ || (((last_hdr->lma + last_size - 1) & -maxpagesize) ++ != (hdr->lma & -maxpagesize)))) + { +- /* We don't want to put a loadable section after a +- nonloadable section in the same segment. +- Consider .tbss sections as loadable for this purpose. */ ++ /* We don't want to put a loaded section after a ++ nonloaded (ie. bss style) section in the same segment ++ as that will force the non-loaded section to be loaded. ++ Consider .tbss sections as loaded for this purpose. ++ However, like the writable/non-writable case below, ++ if they are on the same page then they must be put ++ in the same segment. */ + new_segment = TRUE; + } + else if ((abfd->flags & D_PAGED) == 0) diff --git a/binutils.spec b/binutils.spec index 68c62db..a8d7781 100644 --- a/binutils.spec +++ b/binutils.spec @@ -20,7 +20,7 @@ Summary: A GNU collection of binary utilities Name: %{?cross}binutils%{?_with_debug:-debug} Version: 2.25.1 -Release: 6%{?dist} +Release: 7%{?dist} License: GPLv3+ Group: Development/Tools URL: http://sources.redhat.com/binutils @@ -59,6 +59,8 @@ Patch15: binutils-2.25.1-ihex-parsing.patch # Qt linked with gold crash on startup, BZ #1193044 Patch16: binutils-2.25.1-dynamic_list.patch Patch17: binutils-2.25.1-aarch64-pr18668.patch +# Fix incorrectly generated ELF binaries and DSOs +Patch18: binutils-rh1247126.patch Provides: bundled(libiberty) @@ -184,7 +186,7 @@ using libelf instead of BFD. %patch15 -p1 -b .ihex~ %patch16 -p1 -b .dynamic_list~ %patch17 -p1 - +%patch18 -p1 # We cannot run autotools as there is an exact requirement of autoconf-2.59. @@ -499,6 +501,10 @@ exit 0 %endif # %{isnative} %changelog +* Thu Sep 24 2015 Nick Clifton 2.25.1-7 +- Fix incorrectly generated binaries and DSOs on PPC platforms. + (#1247126) + * Fri Sep 11 2015 Nick Clifton 2.25.1-6 - Fix handling of AArch64 local GOT relocs. (#1262091)