From e06e235377b5e6a9c4a45c9443b84e5142ff8bec Mon Sep 17 00:00:00 2001 From: Andrew Cagney Date: Wed, 19 Jan 2005 22:54:56 +0000 Subject: [PATCH] 2005-01-19 Andrew Cagney * utils.c (quit): Simplify, call fatal. * exceptions.c: Include "serial.h" (print_flush): Mimic flush code found in utils.c:quit. * Makefile.in: Update dependencies. --- gdb/ChangeLog | 7 +++++++ gdb/Makefile.in | 2 +- gdb/exceptions.c | 21 ++++++++++++++++++++- gdb/utils.c | 34 +++------------------------------- 4 files changed, 31 insertions(+), 33 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7a83a29ae89..9c75a27f2a2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2005-01-19 Andrew Cagney + + * utils.c (quit): Simplify, call fatal. + * exceptions.c: Include "serial.h" + (print_flush): Mimic flush code found in utils.c:quit. + * Makefile.in: Update dependencies. + 2005-01-19 Jim Blandy * configure.tgt: Set build_rdi_share to "yes" on those targets diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 2fdfa08b1d2..6a530ba8852 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1898,7 +1898,7 @@ event-top.o: event-top.c $(defs_h) $(top_h) $(inferior_h) $(target_h) \ $(exceptions_h) $(gdbcmd_h) $(readline_h) $(readline_history_h) exceptions.o: exceptions.c $(defs_h) $(exceptions_h) $(breakpoint_h) \ $(target_h) $(inferior_h) $(annotate_h) $(ui_out_h) $(gdb_assert_h) \ - $(gdb_string_h) + $(gdb_string_h) $(serial_h) exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \ $(language_h) $(symfile_h) $(objfiles_h) $(completer_h) $(value_h) \ $(exec_h) $(readline_h) $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) \ diff --git a/gdb/exceptions.c b/gdb/exceptions.c index 9219462ac41..fae2372002e 100644 --- a/gdb/exceptions.c +++ b/gdb/exceptions.c @@ -31,6 +31,7 @@ #include "ui-out.h" #include "gdb_assert.h" #include "gdb_string.h" +#include "serial.h" const struct exception exception_none = { 0, NO_ERROR, NULL }; @@ -262,11 +263,29 @@ deprecated_throw_reason (enum return_reason reason) static void print_flush (void) { + struct serial *gdb_stdout_serial; + if (deprecated_error_begin_hook) deprecated_error_begin_hook (); target_terminal_ours (); - wrap_here (""); /* Force out any buffered output */ + + /* We want all output to appear now, before we print the error. We + have 3 levels of buffering we have to flush (it's possible that + some of these should be changed to flush the lower-level ones + too): */ + + /* 1. The _filtered buffer. */ + wrap_here (""); + + /* 2. The stdio buffer. */ gdb_flush (gdb_stdout); + gdb_flush (gdb_stderr); + + /* 3. The system-level buffer. */ + gdb_stdout_serial = serial_fdopen (1); + serial_drain_output (gdb_stdout_serial); + serial_un_fdopen (gdb_stdout_serial); + annotate_error_begin (); } diff --git a/gdb/utils.c b/gdb/utils.c index 243fc754db6..55ee7ec0d04 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -880,47 +880,19 @@ print_sys_errmsg (const char *string, int errcode) void quit (void) { - struct serial *gdb_stdout_serial = serial_fdopen (1); - - target_terminal_ours (); - - /* We want all output to appear now, before we print "Quit". We - have 3 levels of buffering we have to flush (it's possible that - some of these should be changed to flush the lower-level ones - too): */ - - /* 1. The _filtered buffer. */ - wrap_here ((char *) 0); - - /* 2. The stdio buffer. */ - gdb_flush (gdb_stdout); - gdb_flush (gdb_stderr); - - /* 3. The system-level buffer. */ - serial_drain_output (gdb_stdout_serial); - serial_un_fdopen (gdb_stdout_serial); - - annotate_error_begin (); - - /* Don't use *_filtered; we don't want to prompt the user to continue. */ - if (quit_pre_print) - fputs_unfiltered (quit_pre_print, gdb_stderr); - #ifdef __MSDOS__ /* No steenking SIGINT will ever be coming our way when the program is resumed. Don't lie. */ - fprintf_unfiltered (gdb_stderr, "Quit\n"); + fatal ("Quit"); #else if (job_control /* If there is no terminal switching for this target, then we can't possibly get screwed by the lack of job control. */ || current_target.to_terminal_ours == NULL) - fprintf_unfiltered (gdb_stderr, "Quit\n"); + fatal ("Quit"); else - fprintf_unfiltered (gdb_stderr, - "Quit (expect signal SIGINT when the program is resumed)\n"); + fatal ("Quit (expect signal SIGINT when the program is resumed)"); #endif - deprecated_throw_reason (RETURN_QUIT); } /* Control C comes here */ -- 2.30.2