patches/binutils/2.20.1a/170-warn-textrel.patch
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 2088 4f21ba5f8e91
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@1614
     1
textrels are bad for forcing copy-on-write (this affects everyone),
yann@1614
     2
and for security/runtime code generation, this affects security ppl.
yann@1614
     3
But in either case, it doesn't matter who needs textrels, it's
yann@1614
     4
the very fact that they're needed at all.
yann@1614
     5
yann@1614
     6
2006-06-10  Ned Ludd  <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
yann@1614
     7
yann@1614
     8
	* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
yann@1614
     9
	* ld/ldmain.c (main): Change textrel warning default to true.
yann@1614
    10
	* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
yann@1614
    11
	warnings from ld output.
yann@1614
    12
yann@2088
    13
diff -durN binutils-2.20.1.orig/bfd/elflink.c binutils-2.20.1/bfd/elflink.c
yann@2088
    14
--- binutils-2.20.1.orig/bfd/elflink.c	2010-08-17 19:32:11.000000000 +0200
yann@2088
    15
+++ binutils-2.20.1/bfd/elflink.c	2010-08-17 19:32:13.000000000 +0200
yann@2088
    16
@@ -10988,14 +10988,12 @@
yann@1614
    17
 	goto error_return;
yann@1614
    18
 
yann@1614
    19
       /* Check for DT_TEXTREL (late, in case the backend removes it).  */
yann@1614
    20
-      if (info->warn_shared_textrel && info->shared)
yann@1614
    21
+      o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    22
+      if (info->warn_shared_textrel && o != NULL)
yann@1614
    23
 	{
yann@1614
    24
 	  bfd_byte *dyncon, *dynconend;
yann@1614
    25
 
yann@1614
    26
 	  /* Fix up .dynamic entries.  */
yann@1614
    27
-	  o = bfd_get_section_by_name (dynobj, ".dynamic");
yann@1614
    28
-	  BFD_ASSERT (o != NULL);
yann@1614
    29
-
yann@1614
    30
 	  dyncon = o->contents;
yann@1614
    31
 	  dynconend = o->contents + o->size;
yann@1614
    32
 	  for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
yann@2088
    33
@@ -11007,7 +11005,7 @@
yann@1614
    34
 	      if (dyn.d_tag == DT_TEXTREL)
yann@1614
    35
 		{
yann@1614
    36
 		 info->callbacks->einfo
yann@1614
    37
-		    (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
yann@1614
    38
+		    (_("%P: warning: creating a DT_TEXTREL in object.\n"));
yann@1614
    39
 		  break;
yann@1614
    40
 		}
yann@1614
    41
 	    }
yann@2088
    42
diff -durN binutils-2.20.1.orig/ld/ldmain.c binutils-2.20.1/ld/ldmain.c
yann@2088
    43
--- binutils-2.20.1.orig/ld/ldmain.c	2009-09-14 13:43:29.000000000 +0200
yann@2088
    44
+++ binutils-2.20.1/ld/ldmain.c	2010-08-17 19:32:13.000000000 +0200
yann@2088
    45
@@ -280,6 +280,7 @@
yann@2088
    46
   emulation = get_emulation (argc, argv);
yann@2088
    47
   ldemul_choose_mode (emulation);
yann@2088
    48
   default_target = ldemul_choose_target (argc, argv);
yann@1614
    49
+  link_info.warn_shared_textrel = TRUE;
yann@2088
    50
   config.maxpagesize = bfd_emul_get_maxpagesize (default_target);
yann@2088
    51
   config.commonpagesize = bfd_emul_get_commonpagesize (default_target);
yann@2088
    52
   lang_init ();
yann@2088
    53
diff -durN binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp binutils-2.20.1/ld/testsuite/lib/ld-lib.exp
yann@2088
    54
--- binutils-2.20.1.orig/ld/testsuite/lib/ld-lib.exp	2009-10-02 12:51:13.000000000 +0200
yann@2088
    55
+++ binutils-2.20.1/ld/testsuite/lib/ld-lib.exp	2010-08-17 19:32:13.000000000 +0200
yann@2088
    56
@@ -196,6 +196,10 @@
yann@1614
    57
     # symbol, since the default linker script might use ENTRY.
yann@1614
    58
     regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
yann@1614
    59
 
yann@1614
    60
+    # Gentoo tweak:
yann@1614
    61
+    # We want to ignore TEXTREL warnings since we force enable them by default
yann@1614
    62
+    regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
yann@1614
    63
+
yann@1614
    64
     if [string match "" $exec_output] then {
yann@1614
    65
 	return 1
yann@1614
    66
     } else {