diff options
-rw-r--r-- | gdb/cli/cli-interp.c | 6 | ||||
-rw-r--r-- | gdb/event-top.c | 2 | ||||
-rw-r--r-- | gdb/tui/tui-io.c | 8 | ||||
-rw-r--r-- | gdb/utils.c | 30 |
4 files changed, 13 insertions, 33 deletions
diff --git a/gdb/cli/cli-interp.c b/gdb/cli/cli-interp.c index d36715d..fe9e4b4 100644 --- a/gdb/cli/cli-interp.c +++ b/gdb/cli/cli-interp.c @@ -397,6 +397,7 @@ struct saved_output_files ui_file *targ; ui_file *targerr; ui_file_up file_to_delete; + ui_file_up log_to_delete; }; static std::unique_ptr<saved_output_files> saved_output; @@ -427,8 +428,11 @@ cli_interp_base::set_logging (ui_file_up logfile, bool logging_redirect, else saved_output->file_to_delete = std::move (logfile); + saved_output->log_to_delete.reset + (new timestamped_file (debug_redirect ? logfile_p : tee)); + gdb_stdout = logging_redirect ? logfile_p : tee; - gdb_stdlog = debug_redirect ? logfile_p : tee; + gdb_stdlog = saved_output->log_to_delete.get (); gdb_stderr = logging_redirect ? logfile_p : tee; gdb_stdtarg = logging_redirect ? logfile_p : tee; gdb_stdtargerr = logging_redirect ? logfile_p : tee; diff --git a/gdb/event-top.c b/gdb/event-top.c index c1a95a4..3ba7239 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -1306,7 +1306,7 @@ gdb_setup_readline (int editing) if (!batch_silent) gdb_stdout = new stdio_file (ui->outstream); gdb_stderr = new stderr_file (ui->errstream); - gdb_stdlog = gdb_stderr; /* for moment */ + gdb_stdlog = new timestamped_file (gdb_stderr); gdb_stdtarg = gdb_stderr; /* for moment */ gdb_stdtargerr = gdb_stderr; /* for moment */ diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c index 8cac1c4..01300d8 100644 --- a/gdb/tui/tui-io.c +++ b/gdb/tui/tui-io.c @@ -108,11 +108,13 @@ key_is_start_sequence (int ch) /* TUI output files. */ static struct ui_file *tui_stdout; static struct ui_file *tui_stderr; +static struct ui_file *tui_stdlog; struct ui_out *tui_out; /* GDB output files in non-curses mode. */ static struct ui_file *tui_old_stdout; static struct ui_file *tui_old_stderr; +static struct ui_file *tui_old_stdlog; cli_ui_out *tui_old_uiout; /* Readline previous hooks. */ @@ -828,13 +830,14 @@ tui_setup_io (int mode) /* Keep track of previous gdb output. */ tui_old_stdout = gdb_stdout; tui_old_stderr = gdb_stderr; + tui_old_stdlog = gdb_stdlog; tui_old_uiout = dynamic_cast<cli_ui_out *> (current_uiout); gdb_assert (tui_old_uiout != nullptr); /* Reconfigure gdb output. */ gdb_stdout = tui_stdout; gdb_stderr = tui_stderr; - gdb_stdlog = gdb_stdout; /* for moment */ + gdb_stdlog = tui_stdlog; gdb_stdtarg = gdb_stderr; /* for moment */ gdb_stdtargerr = gdb_stderr; /* for moment */ current_uiout = tui_out; @@ -847,7 +850,7 @@ tui_setup_io (int mode) /* Restore gdb output. */ gdb_stdout = tui_old_stdout; gdb_stderr = tui_old_stderr; - gdb_stdlog = gdb_stdout; /* for moment */ + gdb_stdlog = tui_old_stdlog; gdb_stdtarg = gdb_stderr; /* for moment */ gdb_stdtargerr = gdb_stderr; /* for moment */ current_uiout = tui_old_uiout; @@ -902,6 +905,7 @@ tui_initialize_io (void) /* Create tui output streams. */ tui_stdout = new tui_file (stdout); tui_stderr = new tui_file (stderr); + tui_stdlog = new timestamped_file (tui_stderr); tui_out = tui_out_new (tui_stdout); /* Create the default UI. */ diff --git a/gdb/utils.c b/gdb/utils.c index 8dd7008..48aedb0 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -1938,35 +1938,7 @@ vfprintf_filtered (struct ui_file *stream, const char *format, va_list args) void vfprintf_unfiltered (struct ui_file *stream, const char *format, va_list args) { - if (debug_timestamp && stream == gdb_stdlog) - { - static bool needs_timestamp = true; - - /* Print timestamp if previous print ended with a \n. */ - if (needs_timestamp) - { - using namespace std::chrono; - - steady_clock::time_point now = steady_clock::now (); - seconds s = duration_cast<seconds> (now.time_since_epoch ()); - microseconds us = duration_cast<microseconds> (now.time_since_epoch () - s); - std::string timestamp = string_printf ("%ld.%06ld ", - (long) s.count (), - (long) us.count ()); - fputs_unfiltered (timestamp.c_str (), stream); - } - - /* Print the message. */ - string_file sfile; - cli_ui_out (&sfile, 0).vmessage (ui_file_style (), format, args); - const std::string &linebuffer = sfile.string (); - fputs_unfiltered (linebuffer.c_str (), stream); - - size_t len = linebuffer.length (); - needs_timestamp = (len > 0 && linebuffer[len - 1] == '\n'); - } - else - vfprintf_maybe_filtered (stream, format, args, false); + vfprintf_maybe_filtered (stream, format, args, false); } void |