summaryrefslogtreecommitdiff
path: root/debian/patches/gcc-ice-dump.diff
blob: 557f34240daf9b392bad43bd9c1dc3ef799f4a1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# DP: For ICEs, dump the preprocessed source file to stderr
# DP: when in a distro build environment.

Index: b/src/gcc/gcc.c
===================================================================
--- a/src/gcc/gcc.c
+++ b/src/gcc/gcc.c
@@ -2940,7 +2940,8 @@ execute (void)
 	    /* For ICEs in cc1, cc1obj, cc1plus see if it is
 	       reproducible or not.  */
 	    const char *p;
-	    if (flag_report_bug
+	    char *deb_build_options = getenv("DEB_BUILD_OPTIONS");
+	    if ((flag_report_bug || deb_build_options)
 		&& WEXITSTATUS (status) == ICE_EXIT_CODE
 		&& i == 0
 		&& (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
@@ -6571,8 +6572,23 @@ do_report_bug (const char **new_argv, co
 
   if (status == ATTEMPT_STATUS_SUCCESS)
     {
+      char *deb_build_options = getenv("DEB_BUILD_OPTIONS");
+
       fnotice (stderr, "Preprocessed source stored into %s file,"
 	       " please attach this to your bugreport.\n", *out_file);
+      if (deb_build_options)
+	{
+	  char *cmd = XNEWVEC (char, 50 + strlen (*out_file));
+
+	  sprintf(cmd, "/bin/cat %s >&2", *out_file);
+	  fprintf(stderr, "=== BEGIN GCC DUMP ===\n");
+	  fflush(stderr);
+	  system(cmd);
+	  fflush(stderr);
+	  fprintf(stderr, "=== END GCC DUMP ===\n");
+	  fflush(stderr);
+	  free(cmd);
+	}
       /* Make sure it is not deleted.  */
       free (*out_file);
       *out_file = NULL;