patches/binutils/2.20.1/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 1621 60446d2e5660
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
yann@2088
    13
diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
yann@2088
    14
--- binutils-2.20.1.orig/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
yann@2088
    15
+++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:13.000000000 +0200
yann@2088
    16
@@ -10988,14 +10988,12 @@
yann@1614
    17
 	goto error_return;
yann@1614
    18
 
yann@1614
    19
       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
yann@1614
    20
-      if (info->warn_shared_textrel && info->shared)
yann@1614
    21
+      o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    22
+      if (info->warn_shared_textrel && o != NULL)
yann@1614
    23
 	{
yann@1614
    24
 	  bfd_byte *dyncon, *dynconend;
yann@1614
    25
 
yann@1614
    26
 	  /* Fix up .dynamic entries.  */
yann@1614
    27
-	  o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    28
-	  BFD_ASSERT (o != NULL);
yann@1614
    29
-
yann@1614
    30
 	  dyncon = o->contents;
yann@1614
    31
 	  dynconend = o->contents + o->size;
yann@1614
    32
 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
yann@2088
    33
@@ -11007,7 +11005,7 @@
yann@1614
    34
 	      if (dyn.d_tag == DT_TEXTREL)
yann@1614
    35
 		{
yann@1614
    36
 		 info->callbacks->einfo
yann@1614
    37
-		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
yann@1614
    38
+		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
yann@1614
    39
 		  break;
yann@1614
    40
 		}
yann@1614
    41
 	    }
yann@2088
    42
diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
yann@2088
    43
--- binutils-2.20.1.orig/ld/ldmain.c	2009-09-14 13:43:29.000000000 +0200
yann@2088
    44
+++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
yann@2088
    45
@@ -280,6 +280,7 @@
yann@2088
    46
   emulation = get_emulation (argc, argv);
yann@2088
    47
   ldemul_choose_mode (emulation);
yann@2088
    48
   default_target = ldemul_choose_target (argc, argv);
yann@1614
    49
+  link_info.warn_shared_textrel = TRUE;
yann@2088
    50
   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
yann@2088
    51
   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
yann@2088
    52
   lang_init ();
yann@2088
    53
diff -durN binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp binutils-2.20.1/ld/testsuite/lib/ld-lib.exp
yann@2088
    54
--- binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp	2009-10-02 12:51:13.000000000 +0200
yann@2088
    55
+++ binutils-2.20.1/ld/testsuite/lib/ld-lib.exp	2010-08-17 19:32:13.000000000 +0200
yann@2088
    56
@@ -196,6 +196,10 @@
yann@1614
    57
     # symbol, since the default linker script might use ENTRY.
yann@1614
    58
     regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
yann@1614
    59
 
yann@1614
    60
+    # Gentoo tweak:
yann@1614
    61
+    # We want to ignore TEXTREL warnings since we force enable them by default
yann@1614
    62
+    regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
yann@1614
    63
+
yann@1614
    64
     if [string match "" $exec_output] then {
yann@1614
    65
 	return 1
yann@1614
    66
     } else {