patches/binutils/2.20/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Dec 18 22:55:56 2010 +0100 (2010-12-18)
changeset 2309 2e0f0757289d
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
comptools: install them side-to-side with build tools

As companion tools might or might not be used to build each
toolchain, they do belong to that toolchain's build tools,
not to the generic override tools.

Fix a typo in the autoconf URL.

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