patches/gcc/4.3.2/110-trampolinewarn.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 22:43:07 2011 +0200 (2011-07-17)
changeset 2893 a8a65758664f
parent 747 d3e603e7c17c
permissions -rw-r--r--
cc/gcc: do not use the core pass-2 to build the baremetal compiler

In case we build a baremetal compiler, use the standard passes:
- core_cc is used to build the C library;
- as such, it is meant to run on build, not host;
- the final compiler is meant to run on host;

As the current final compiler step can not build a baremetal compiler,
call the core backend from the final step.

NB: Currently, newlib is built during the start_files pass, so we have
to have a core compiler by then... Once we can build the baremetal
compiler from the final cc step, then we can move the newlib build to
the proper step, and then get rid of the core pass-1 static compiler...

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@552
     1
Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.1/gentoo/00_all_gcc-trampolinewarn.patch
yann@552
     2
	This trivial patch causes gcc to emit a warning whenever
yann@552
     3
	it generates a trampoline.  These are otherwise hard to
yann@552
     4
	locate.  It is rigged to default ON - to have it default
yann@552
     5
	to OFF remove the text 'Init(1)' from the common.opt
yann@552
     6
	patch, leaving just 'Common Var(warn_trampolines)'.
yann@552
     7
	Kevin F. Quinn <kevquinn@gentoo.org> 17 Jan 2006
yann@552
     8
yann@552
     9
diff -durN gcc-4.3.1.orig/gcc/builtins.c gcc-4.3.1/gcc/builtins.c
yann@552
    10
--- gcc-4.3.1.orig/gcc/builtins.c	2008-04-23 00:36:27.000000000 +0200
yann@552
    11
+++ gcc-4.3.1/gcc/builtins.c	2008-06-10 14:56:54.000000000 +0200
yann@552
    12
@@ -5662,6 +5662,9 @@
yann@552
    13
   trampolines_created = 1;
yann@552
    14
   INITIALIZE_TRAMPOLINE (r_tramp, r_func, r_chain);
yann@552
    15
 
yann@552
    16
+  if (warn_trampolines)
yann@552
    17
+    warning (OPT_Wtrampolines, "generating trampoline in object (requires executable stack)");
yann@552
    18
+
yann@552
    19
   return const0_rtx;
yann@552
    20
 }
yann@552
    21
 
yann@552
    22
diff -durN gcc-4.3.1.orig/gcc/common.opt gcc-4.3.1/gcc/common.opt
yann@552
    23
--- gcc-4.3.1.orig/gcc/common.opt	2008-01-22 15:11:44.000000000 +0100
yann@552
    24
+++ gcc-4.3.1/gcc/common.opt	2008-06-10 14:56:54.000000000 +0200
yann@552
    25
@@ -182,6 +182,10 @@
yann@552
    26
 Common Var(warn_system_headers) Warning
yann@552
    27
 Do not suppress warnings from system headers
yann@552
    28
 
yann@552
    29
+Wtrampolines
yann@552
    30
+Common Var(warn_trampolines) Init(1)
yann@552
    31
+Warn whenever a trampoline is generated
yann@552
    32
+
yann@552
    33
 Wuninitialized
yann@552
    34
 Common Var(warn_uninitialized) Warning
yann@552
    35
 Warn about uninitialized automatic variables