patches/binutils/2.20.1a/170-warn-textrel.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 05 00:01:05 2013 +0200 (2013-05-05)
changeset 3218 3709e61ad85b
parent 2088 4f21ba5f8e91
permissions -rw-r--r--
complibs/cloog: add support for the ISL backend

CLooG 0.18+ will use ISL instead of PPL, so we have to configure
adequately depending of which backend is in use.

The Kconfig entries will decide for us which is selected, so we
can rely on either PPL xor ISL to be selected, not both.

Reported-by: "Plotnikov Dmitry" <leitz@ispras.ru>
[Dmitry did a preliminray patch to add ISL support,
which this patch is inspired from]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
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 {