From: Aaron Merey Date: Fri, 19 Jan 2024 16:20:19 +0000 (-0500) Subject: gdb/ui-out.h: Fix exception handling in do_with_buffered_output X-Git-Tag: gdb-15-branchpoint~1199 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9323e42f586b753bf0e4e0dfc267ca00b948f448;p=thirdparty%2Fbinutils-gdb.git gdb/ui-out.h: Fix exception handling in do_with_buffered_output Replace throw with throw_exeception in do_with_buffered_output. This patch fixes regressions in gdb.dwarf2/dw2-dir-file-name.exp caused by commit 519d63439. do_with_buffered_output needs to use throw_exception instead of throw to ensure that exceptions of the correct type are thrown. If using throw, gdb_exception_error may be wrongly converted into gdb_exception during print_frame_info. This prevents the exception from being caught in print_stack_frame. --- diff --git a/gdb/ui-out.h b/gdb/ui-out.h index 71add908a84..5b6ddd55063 100644 --- a/gdb/ui-out.h +++ b/gdb/ui-out.h @@ -543,7 +543,7 @@ do_with_buffered_output (F func, ui_out *uiout, Arg... args) { func (uiout, std::forward (args)...); } - catch (const gdb_exception &ex) + catch (gdb_exception &ex) { /* Ideally flush would be called in the destructor of buffer_group, however flushing might cause an exception to be thrown. Catch it @@ -556,7 +556,7 @@ do_with_buffered_output (F func, ui_out *uiout, Arg... args) { } - throw (std::move (ex)); + throw_exception (std::move (ex)); } /* Try was successful. Let any further exceptions propagate. */