patches/binutils/2.20/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
     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 {