patches/binutils/2.20/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:28:10 2011 +0200 (2011-08-02)
changeset 2590 b64cfb67944e
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
scripts/functions: svn retrieval first tries the mirror for tarballs

The svn download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via svn.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard svn retrieval will kick in.

Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1614
     1
textrels are bad for forcing copy-on-write (this affects everyone),
yann@1614
     2
and for security/runtime code generation, this affects security ppl.
yann@1614
     3
But in either case, it doesn't matter who needs textrels, it's
yann@1614
     4
the very fact that they're needed at all.
yann@1614
     5
yann@1614
     6
2006-06-10  Ned Ludd  <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
yann@1614
     7
yann@1614
     8
	* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
yann@1614
     9
	* ld/ldmain.c (main): Change textrel warning default to true.
yann@1614
    10
	* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
yann@1614
    11
	warnings from ld output.
yann@1614
    12
fr@1621
    13
--- binutils/bfd/elflink.c
fr@1621
    14
+++ binutils/bfd/elflink.c
yann@1614
    15
@@ -8652,14 +8652,12 @@
yann@1614
    16
 	goto error_return;
yann@1614
    17
 
yann@1614
    18
       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
yann@1614
    19
-      if (info->warn_shared_textrel && info->shared)
yann@1614
    20
+      o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    21
+      if (info->warn_shared_textrel && o != NULL)
yann@1614
    22
 	{
yann@1614
    23
 	  bfd_byte *dyncon, *dynconend;
yann@1614
    24
 
yann@1614
    25
 	  /* Fix up .dynamic entries.  */
yann@1614
    26
-	  o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    27
-	  BFD_ASSERT (o != NULL);
yann@1614
    28
-
yann@1614
    29
 	  dyncon = o->contents;
yann@1614
    30
 	  dynconend = o->contents + o->size;
yann@1614
    31
 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
yann@1614
    32
@@ -8702,7 +8702,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
yann@1614
    33
 	      if (dyn.d_tag == DT_TEXTREL)
yann@1614
    34
 		{
yann@1614
    35
 		 info->callbacks->einfo
yann@1614
    36
-		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
yann@1614
    37
+		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
yann@1614
    38
 		  break;
yann@1614
    39
 		}
yann@1614
    40
 	    }
fr@1621
    41
--- binutils/ld/ldmain.c
fr@1621
    42
+++ binutils/ld/ldmain.c
yann@1614
    43
@@ -282,2 +282,3 @@ main (int argc, char **argv)
yann@1614
    44
   link_info.spare_dynamic_tags = 5;
yann@1614
    45
+  link_info.warn_shared_textrel = TRUE;
yann@1614
    46
   link_info.sharable_sections = FALSE;
fr@1621
    47
--- binutils/ld/testsuite/lib/ld-lib.exp
fr@1621
    48
+++ binutils/ld/testsuite/lib/ld-lib.exp
yann@1614
    49
@@ -181,6 +181,10 @@ proc default_ld_simple_link { ld target 
yann@1614
    50
     # symbol, since the default linker script might use ENTRY.
yann@1614
    51
     regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
yann@1614
    52
 
yann@1614
    53
+    # Gentoo tweak:
yann@1614
    54
+    # We want to ignore TEXTREL warnings since we force enable them by default
yann@1614
    55
+    regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
yann@1614
    56
+
yann@1614
    57
     if [string match "" $exec_output] then {
yann@1614
    58
 	return 1
yann@1614
    59
     } else {