diff --git a/gdb/python/py-finishbreakpoint.c b/gdb/python/py-finishbreakpoint.c
index 3b682f5ad36..159164e8009 100644
--- a/gdb/python/py-finishbreakpoint.c
+++ b/gdb/python/py-finishbreakpoint.c
@@ -20,6 +20,7 @@
#include "defs.h"
+#include "top.h" /* For quit_force(). */
#include "python-internal.h"
#include "breakpoint.h"
#include "frame.h"
@@ -275,6 +276,10 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
}
}
}
+ catch (const gdb_exception_forced_quit &except)
+ {
+ quit_force (NULL, 0);
+ }
catch (const gdb_exception &except)
{
/* Just swallow. Either the return type or the function value
diff --git a/gdb/python/py-gdb-readline.c b/gdb/python/py-gdb-readline.c
index ea0f78c9ad8..b9294ad9afc 100644
--- a/gdb/python/py-gdb-readline.c
+++ b/gdb/python/py-gdb-readline.c
@@ -46,6 +46,10 @@ gdbpy_readline_wrapper (FILE *sys_stdin, FILE *sys_stdout,
p = command_line_input (buffer, prompt, "python");
}
/* Handle errors by raising Python exceptions. */
+ catch (const gdb_exception_forced_quit &e)
+ {
+ quit_force (NULL, 0);
+ }
catch (const gdb_exception &except)
{
/* Detect user interrupt (Ctrl-C). */
diff --git a/gdb/python/py-symbol.c b/gdb/python/py-symbol.c
index e6497ed473f..066a27f0e35 100644
--- a/gdb/python/py-symbol.c
+++ b/gdb/python/py-symbol.c
@@ -18,6 +18,7 @@
along with this program. If not, see . */
#include "defs.h"
+#include "top.h" /* For force_quit (). */
#include "block.h"
#include "frame.h"
#include "symtab.h"
@@ -517,6 +518,10 @@ gdbpy_lookup_static_symbol (PyObject *self, PyObject *args, PyObject *kw)
= get_selected_frame (_("No frame selected."));
block = get_frame_block (selected_frame, NULL);
}
+ catch (const gdb_exception_forced_quit &e)
+ {
+ quit_force (NULL, 0);
+ }
catch (const gdb_exception &except)
{
/* Nothing. */
diff --git a/gdb/python/py-utils.c b/gdb/python/py-utils.c
index 624b90a827f..d5b07a80d82 100644
--- a/gdb/python/py-utils.c
+++ b/gdb/python/py-utils.c
@@ -18,6 +18,7 @@
along with this program. If not, see . */
#include "defs.h"
+#include "top.h" /* For quit_force (). */
#include "charset.h"
#include "value.h"
#include "python-internal.h"
@@ -219,6 +220,8 @@ gdbpy_convert_exception (const struct gdb_exception &exception)
if (exception.reason == RETURN_QUIT)
exc_class = PyExc_KeyboardInterrupt;
+ else if (exception.reason == RETURN_FORCED_QUIT)
+ quit_force (NULL, 0);
else if (exception.error == MEMORY_ERROR)
exc_class = gdbpy_gdb_memory_error;
else
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 9441a43cad8..65384c781bc 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -18,6 +18,7 @@
along with this program. If not, see . */
#include "defs.h"
+#include "top.h" /* For quit_force (). */
#include "charset.h"
#include "value.h"
#include "language.h"
@@ -371,6 +372,10 @@ valpy_get_address (PyObject *self, void *closure)
res_val = value_addr (val_obj->value);
val_obj->address = value_to_value_object (res_val);
}
+ catch (const gdb_exception_forced_quit &except)
+ {
+ quit_force (NULL, 0);
+ }
catch (const gdb_exception &except)
{
val_obj->address = Py_None;