patches/binutils/2.19.1a/150-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Dec 31 16:23:27 2011 +0100 (2011-12-31)
changeset 2814 3dc2727ebffc
parent 1243 5d15872659ec
permissions -rw-r--r--
cc/gcc: add option to use system zlib

In some cases, it might be desirable to use the system zlib

Eg. because latest gcc seem to be totally borked when it comes
to multilib, and tries to build a multilib host zlib, when it
is *absolutely* *not* needed: we want mulitlib on the target,
not on the host! Sigh... :-(

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/150-warn-textrel.patch
     2 
     3 -= BEGIN original header =-
     4 Original patch from Gentoo:
     5 gentoo/src/patchsets/binutils/2.19/66_all_binutils-2.18.50.0.2-warn-textrel.patch
     6 
     7 textrels are bad for forcing copy-on-write (this affects everyone),
     8 and for security/runtime code generation, this affects security ppl.
     9 But in either case, it doesn't matter who needs textrels, it's
    10 the very fact that they're needed at all.
    11 
    12 -= END original header =-
    13 
    14 diff -durN binutils-2.19.1.orig/bfd/elflink.c binutils-2.19.1/bfd/elflink.c
    15 --- binutils-2.19.1.orig/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
    16 +++ binutils-2.19.1/bfd/elflink.c	2009-03-08 11:57:02.000000000 +0100
    17 @@ -10820,14 +10820,12 @@
    18  	goto error_return;
    19  
    20        /* Check for DT_TEXTREL (late, in case the backend removes it).  */
    21 -      if (info->warn_shared_textrel && info->shared)
    22 +      o = bfd_get_section_by_name (dynobj, ".dynamic");
    23 +      if (info->warn_shared_textrel && o != NULL)
    24  	{
    25  	  bfd_byte *dyncon, *dynconend;
    26  
    27  	  /* Fix up .dynamic entries.  */
    28 -	  o = bfd_get_section_by_name (dynobj, ".dynamic");
    29 -	  BFD_ASSERT (o != NULL);
    30 -
    31  	  dyncon = o->contents;
    32  	  dynconend = o->contents + o->size;
    33  	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
    34 @@ -10839,7 +10837,7 @@
    35  	      if (dyn.d_tag == DT_TEXTREL)
    36  		{
    37  		 info->callbacks->einfo
    38 -		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
    39 +		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
    40  		  break;
    41  		}
    42  	    }
    43 diff -durN binutils-2.19.1.orig/ld/ldmain.c binutils-2.19.1/ld/ldmain.c
    44 --- binutils-2.19.1.orig/ld/ldmain.c	2008-08-17 05:12:50.000000000 +0200
    45 +++ binutils-2.19.1/ld/ldmain.c	2009-03-08 11:57:02.000000000 +0100
    46 @@ -274,6 +274,7 @@
    47    link_info.relax_pass = 1;
    48    link_info.pei386_auto_import = -1;
    49    link_info.spare_dynamic_tags = 5;
    50 +  link_info.warn_shared_textrel = TRUE;
    51    link_info.path_separator = ':';
    52  
    53    ldfile_add_arch ("");