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;
|