[binutils] Import fix for PR ld/12921.
Nicholas Clifton
nickc at fedoraproject.org
Fri Jun 24 10:45:53 UTC 2011
commit 3e3ce188a7255121ab4934880442840323addc63
Author: Nick Clifton <nickc at redhat.com>
Date: Fri Jun 24 11:46:17 2011 +0100
Import fix for PR ld/12921.
...tils-2.21.52.0.1-sh_offset-for-SHT_NOBITS.patch | 55 ++++++++++++++++++++
binutils.spec | 7 ++-
2 files changed, 61 insertions(+), 1 deletions(-)
---
diff --git a/binutils-2.21.52.0.1-sh_offset-for-SHT_NOBITS.patch b/binutils-2.21.52.0.1-sh_offset-for-SHT_NOBITS.patch
new file mode 100644
index 0000000..100828b
--- /dev/null
+++ b/binutils-2.21.52.0.1-sh_offset-for-SHT_NOBITS.patch
@@ -0,0 +1,55 @@
+*** ../binutils-2.21.52.0.1.orig/bfd/elf.c 2011-06-24 11:21:17.380536999 +0100
+--- bfd/elf.c 2011-06-24 11:27:44.781536999 +0100
+*************** assign_file_positions_for_load_sections
+*** 4803,4826 ****
+ }
+ else
+ {
+! if (p->p_type == PT_LOAD
+! || (this_hdr->sh_type == SHT_NOBITS
+! && (this_hdr->sh_flags & SHF_TLS) != 0
+! && this_hdr->sh_offset == 0))
+ {
+! if (this_hdr->sh_type == SHT_NOBITS)
+! {
+! /* These sections don't really need sh_offset,
+! but give them one anyway. */
+! bfd_vma adjust = vma_page_aligned_bias (this_hdr->sh_addr,
+! off, align);
+! this_hdr->sh_offset = sec->filepos = off + adjust;
+! }
+! else
+! {
+! this_hdr->sh_offset = sec->filepos = off;
+! off += this_hdr->sh_size;
+! }
+ }
+
+ if (this_hdr->sh_type != SHT_NOBITS)
+--- 4803,4828 ----
+ }
+ else
+ {
+! if (p->p_type == PT_LOAD)
+ {
+! this_hdr->sh_offset = sec->filepos = off;
+! if (this_hdr->sh_type != SHT_NOBITS)
+! off += this_hdr->sh_size;
+! }
+! else if (this_hdr->sh_type == SHT_NOBITS
+! && (this_hdr->sh_flags & SHF_TLS) != 0
+! && this_hdr->sh_offset == 0)
+! {
+! /* This is a .tbss section that didn't get a PT_LOAD.
+! (See _bfd_elf_map_sections_to_segments "Create a
+! final PT_LOAD".) Set sh_offset to the value it
+! would have if we had created a zero p_filesz and
+! p_memsz PT_LOAD header for the section. This
+! also makes the PT_TLS header have the same
+! p_offset value. */
+! bfd_vma adjust = vma_page_aligned_bias (this_hdr->sh_addr,
+! off, align);
+! this_hdr->sh_offset = sec->filepos = off + adjust;
+ }
+
+ if (this_hdr->sh_type != SHT_NOBITS)
diff --git a/binutils.spec b/binutils.spec
index c30ba27..7797a41 100644
--- a/binutils.spec
+++ b/binutils.spec
@@ -17,7 +17,7 @@
Summary: A GNU collection of binary utilities
Name: %{?cross}binutils%{?_with_debug:-debug}
Version: 2.21.52.0.1
-Release: 4%{?dist}
+Release: 5%{?dist}
License: GPLv3+
Group: Development/Tools
URL: http://sources.redhat.com/binutils
@@ -33,6 +33,7 @@ Patch07: binutils-2.20.51.0.10-sec-merge-emit.patch
Patch08: binutils-2.20.51.0.2-build-id.patch
Patch09: binutils-2.21.52.0.1-keeping-notes.patch
Patch10: binutils-2.21.52.0.1-finding-without-symbols.patch
+Patch11: binutils-2.21.52.0.1-sh_offset-for-SHT_NOBITS.patch
%define gold_arches %ix86 x86_64
@@ -133,6 +134,7 @@ using libelf instead of BFD.
%patch08 -p0 -b .build-id~
%patch09 -p0 -b .keeping-notes~
%patch10 -p0 -b .finding~
+%patch11 -p0 -b .sh_offset~
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
@@ -422,6 +424,9 @@ exit 0
%endif # %{isnative}
%changelog
+* Fri Jun 24 2011 Nick Clifton <nickc at redhat.com> - 2.21.52.0.1-5
+- Import fix for PR ld/12921.
+
* Fri Jun 24 2011 Nick Clifton <nickc at redhat.com> - 2.21.52.0.1-4
- Run "alternatives --auto" to restore ld symbolic link if it was manually configured. (BZ 661247)
More information about the scm-commits
mailing list