diff options
author | Max Ostapenko <m.ostapenko@partner.samsung.com> | 2015-01-22 12:55:32 +0200 |
---|---|---|
committer | Maxim Ostapenko <chefmax@gcc.gnu.org> | 2015-01-22 12:55:32 +0200 |
commit | f78a6ae44db20145f0d3deecf9a0ff46153b7cb4 (patch) | |
tree | 47ba3178546f5353e4a374eccefb3e4ced072bb7 /gcc/gcc.c | |
parent | 0c3068e0068c5850939c83c6719e8905db0342b1 (diff) | |
download | gcc-f78a6ae44db20145f0d3deecf9a0ff46153b7cb4.zip gcc-f78a6ae44db20145f0d3deecf9a0ff46153b7cb4.tar.gz gcc-f78a6ae44db20145f0d3deecf9a0ff46153b7cb4.tar.bz2 |
re PR driver/64690 (-freport-bug issue with comments)
2015-01-22 Max Ostapenko <m.ostapenko@partner.samsung.com>
PR driver/64690
* gcc.c (insert_comments): New function.
(try_generate_repro): Call it.
(append_text): Removed.
From-SVN: r219990
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r-- | gcc/gcc.c | 58 |
1 files changed, 34 insertions, 24 deletions
@@ -6487,6 +6487,29 @@ out: return status; } +/* This routine reads lines from IN file, adds C++ style comments + at the begining of each line and writes result into OUT. */ + +static void +insert_comments (const char *file_in, const char *file_out) +{ + FILE *in = fopen (file_in, "rb"); + FILE *out = fopen (file_out, "wb"); + char line[256]; + + bool add_comment = true; + while (fgets (line, sizeof (line), in)) + { + if (add_comment) + fputs ("// ", out); + fputs (line, out); + add_comment = strchr (line, '\n') != NULL; + } + + fclose (in); + fclose (out); +} + /* This routine adds preprocessed source code into the given ERR_FILE. To do this, it adds "-E" to NEW_ARGV and execute RUN_ATTEMPT routine to add information in report file. RUN_ATTEMPT should return @@ -6523,19 +6546,6 @@ do_report_bug (const char **new_argv, const int nargs, } } -/* Append string STR to file FILE. */ - -static void -append_text (char *file, const char *str) -{ - int fd = open (file, O_RDWR | O_APPEND); - if (fd < 0) - return; - - write (fd, str, strlen (str)); - close (fd); -} - /* Try to reproduce ICE. If bug is reproducible, generate report .err file containing GCC configuration, backtrace, compiler's command line options and preprocessed source code. */ @@ -6598,16 +6608,10 @@ try_generate_repro (const char **argv) emit_system_info = 1; } - if (emit_system_info) - append_text (temp_stderr_files[attempt], "/*\n"); - status = run_attempt (new_argv, temp_stdout_files[attempt], temp_stderr_files[attempt], emit_system_info, append); - if (emit_system_info) - append_text (temp_stderr_files[attempt], "*/\n"); - if (status != ATTEMPT_STATUS_ICE) { fnotice (stderr, "The bug is not reproducible, so it is" @@ -6619,11 +6623,17 @@ try_generate_repro (const char **argv) if (!check_repro (temp_stdout_files, temp_stderr_files)) goto out; - /* In final attempt we append compiler options and preprocesssed code to last - generated .err file with configuration and backtrace. */ - do_report_bug (new_argv, nargs, - &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1], - &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1]); + { + /* Insert commented out backtrace into report file. */ + char **stderr_commented = &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1]; + insert_comments (temp_stderr_files[RETRY_ICE_ATTEMPTS - 1], + *stderr_commented); + + /* In final attempt we append compiler options and preprocesssed code to last + generated .out file with configuration and backtrace. */ + char **output = &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1]; + do_report_bug (new_argv, nargs, stderr_commented, output); + } out: for (i = 0; i < RETRY_ICE_ATTEMPTS * 2; i++) |