diff --git a/binutils-2.19.51.0.2-orphan-section-placement.patch b/binutils-2.19.51.0.2-orphan-section-placement.patch new file mode 100644 index 0000000..026a91d --- /dev/null +++ b/binutils-2.19.51.0.2-orphan-section-placement.patch @@ -0,0 +1,34 @@ +--- ../binutils-2.19.51.0.2.orig/ld/ldlang.c 2009-07-17 12:43:11.000000000 +0100 ++++ ld/ldlang.c 2009-07-17 12:50:39.000000000 +0100 +@@ -1533,10 +1533,13 @@ output_prev_sec_find (lang_output_sectio + idea is to skip over anything that might be inside a SECTIONS {} + statement in a script, before we find another output section + statement. Assignments to "dot" before an output section statement +- are assumed to belong to it. An exception to this rule is made for +- the first assignment to dot, otherwise we might put an orphan +- before . = . + SIZEOF_HEADERS or similar assignments that set the +- initial address. */ ++ are assumed to belong to it, except in two cases; The first ++ assignment to dot, and assignments before non-alloc sections. ++ Otherwise we might put an orphan before . = . + SIZEOF_HEADERS or ++ similar assignments that set the initial address, or we might ++ insert non-alloc note sections among assignments setting end of ++ image symbols. */ ++ + + static lang_statement_union_type ** + insert_os_after (lang_output_section_statement_type *after) +@@ -1580,7 +1583,12 @@ insert_os_after (lang_output_section_sta + continue; + case lang_output_section_statement_enum: + if (assign != NULL) +- where = assign; ++ { ++ asection *s = (*where)->output_section_statement.bfd_section; ++ ++ if (s == NULL || (s->flags & SEC_ALLOC) != 0) ++ where = assign; ++ } + break; + case lang_input_statement_enum: + case lang_address_statement_enum: diff --git a/binutils.spec b/binutils.spec index d6307b7..e73cd91 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.19.51.0.2 -Release: 17%{?dist} +Release: 18%{?dist} License: GPLv3+ Group: Development/Tools URL: http://sources.redhat.com/binutils @@ -32,6 +32,7 @@ Patch06: binutils-2.19.50.0.1-set-long-long.patch Patch07: binutils-2.19.50.0.1-build-id.patch Patch08: binutils-2.19.51.0.2-ifunc.patch Patch09: binutils-2.19.51.0.2-IBM.patch +Patch10: binutils-2.19.51.0.2-orphan-section-placement.patch %if 0%{?_with_debug:1} # Define this if you want to skip the strip step and preserve debug info. @@ -104,6 +105,7 @@ to consider using libelf instead of BFD. %patch07 -p0 -b .build-id~ %patch08 -p1 -b .ifunc~ %patch09 -p0 -b .IBM~ +%patch10 -p0 -b .oprphan-section-placement~ # We cannot run autotools as there is an exact requirement of autoconf-2.59. @@ -347,6 +349,9 @@ fi %endif # %{isnative} %changelog +* Fri Jul 17 2009 Nick Clifton 2.19.51.0.2-18 +- Import orphan section placement patch from mainline. (BZ 510384). + * Tue Mar 17 2009 Nick Clifton 2.19.51.0.2-17 - Add glibc-static to BuildRequires when running the testsuite.