patches/binutils/2.20/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 18 23:00:46 2011 +0200 (2011-05-18)
changeset 2467 200836977ce6
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
config: rename variables that are arrays

Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

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 {