#
# See http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/4.6.2/gentoo/01_all_joined-cpp-defs.patch
#
diff -ur gcc-4.6.3-orig/gcc/gcc.c gcc-4.6.3/gcc/gcc.c
--- gcc-4.6.3-orig/gcc/gcc.c	2011-02-22 16:04:43.000000000 -1000
+++ gcc-4.6.3/gcc/gcc.c	2012-03-26 22:20:23.143626041 -1000
@@ -741,6 +741,7 @@
  %{H} %C %{D*&U*&A*} %{i*} %Z %i\
  %{fmudflap:-D_MUDFLAP -include mf-runtime.h}\
  %{fmudflapth:-D_MUDFLAP -D_MUDFLAPTH -include mf-runtime.h}\
+ %{!D_FORTIFY_SOURCE:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=2}}}\
  %{E|M|MM:%W{o*}}";
 
 /* This contains cpp options which are common with cc1_options and are passed
diff -ur gcc-4.6.3-orig/gcc/java/jvgenmain.c gcc-4.6.3/gcc/java/jvgenmain.c
--- gcc-4.6.3-orig/gcc/java/jvgenmain.c	2011-01-03 10:52:22.000000000 -1000
+++ gcc-4.6.3/gcc/java/jvgenmain.c	2012-03-26 22:29:56.962500898 -1000
@@ -128,7 +128,10 @@
 	continue;
 
       fprintf (stream, "  \"");
-      for (p = argv[i]; *p; ++p)
+      p = &argv[i][2];
+      if (*p == '\0')
+	p = &argv[++i][0];
+      for (; *p; ++p) 
 	{
 	  if (! ISPRINT (*p))
 	    fprintf (stream, "\\%o", *p);
diff -ur gcc-4.6.3-orig/gcc/opts-common.c gcc-4.6.3/gcc/opts-common.c
--- gcc-4.6.3-orig/gcc/opts-common.c	2011-02-22 16:04:43.000000000 -1000
+++ gcc-4.6.3/gcc/opts-common.c	2012-03-26 22:26:51.082958085 -1000
@@ -276,7 +276,8 @@
   if (arg)
     {
       if ((option->flags & CL_SEPARATE)
-	  && !(option->flags & CL_SEPARATE_ALIAS))
+	  && !(option->flags & CL_SEPARATE_ALIAS)
+	  && !(opt_text[1] == 'D' || opt_text[1] == 'U'))
 	{
 	  decoded->canonical_option[0] = opt_text;
 	  decoded->canonical_option[1] = arg;
