patches/binutils/2.20/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Aug 23 14:32:16 2010 +0200 (2010-08-23)
changeset 2100 f9fcfc002c8a
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
debug/gdb: install dependable libs in a generic target static libs dir

For now, ncurses is the only dependable target library built for gdb.
But expat is coming, and there's no reason to install each library in
its own place.

So, install ncurses in a generic directory, where other dependable
libraries can be installed as well.

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 {