 +#define TARGET_USE_LEAVE	(ix86_tune_features[X86_TUNE_USE_LEAVE] && !flag_control_integrity)
 diff -uNr gcc-4.4.2.orig/gcc/config/i386/predicates.md gcc-4.4.2/gcc/config/i386/predicates.md
 --- gcc-4.4.2.orig/gcc/config/i386/predicates.md	2009-03-12 21:45:39.000000000 +0100
-+++ gcc-4.4.2/gcc/config/i386/predicates.md	2009-11-26 18:14:17.000000000 +0100
++++ gcc-4.4.2/gcc/config/i386/predicates.md	2009-12-25 11:10:19.000000000 +0100
 @@ -792,14 +792,16 @@
  
  ;; Return true if op if a valid address, and does not contain

     {
diff -uNr gcc-4.4.2.orig/gcc/passes.c gcc-4.4.2/gcc/passes.c
--- gcc-4.4.2.orig/gcc/passes.c	2009-02-20 16:20:38.000000000 +0100
+++ gcc-4.4.2/gcc/passes.c	2009-11-26 18:14:17.000000000 +0100
@@ -764,6 +764,7 @@
       NEXT_PASS (pass_stack_ptr_mod);
       NEXT_PASS (pass_mode_switching);

       cygwin* | pe | mingw32*)
diff -uNr gcc-4.4.2.orig/gcc/ctrl-intg.c gcc-4.4.2/gcc/ctrl-intg.c
--- gcc-4.4.2.orig/gcc/ctrl-intg.c	1970-01-01 01:00:00.000000000 +0100
+++ gcc-4.4.2/gcc/ctrl-intg.c	2009-12-25 11:10:19.000000000 +0100
@@ -0,0 +1,376 @@
+/* Patch RTL to enforce control flow integrity for GCC.
+   Copyright (C) 1987, 1988, 1992, 1997, 1998, 1999, 2000, 2002, 2003,
