@@ -158,6 +158,16 @@ extern int exceptions_state_mc_action_iter_1 (void);
while (exceptions_state_mc_action_iter ()) \
while (exceptions_state_mc_action_iter_1 ())
+/* A much more efficient version of TRY_CATCH without saving signal masks */
+#define TRY_CATCH_NOSIG(EXCEPTION,MASK) \
+ { \
+ SIGJMP_BUF *buf = \
+ exceptions_state_mc_init (&(EXCEPTION), (MASK)); \
+ SIGSETJMP_NOSIG (*buf); \
+ } \
+ while (exceptions_state_mc_action_iter ()) \
+ while (exceptions_state_mc_action_iter_1 ())
+
/* *INDENT-ON* */
/* Hook to allow client-specific actions to be performed prior to
@@ -24,10 +24,12 @@
#ifdef HAVE_SIGSETJMP
#define SIGJMP_BUF sigjmp_buf
#define SIGSETJMP(buf) sigsetjmp((buf), 1)
+#define SIGSETJMP_NOSIG(buf) sigsetjmp((buf), 0)
#define SIGLONGJMP(buf,val) siglongjmp((buf), (val))
#else
#define SIGJMP_BUF jmp_buf
#define SIGSETJMP(buf) setjmp(buf)
+#define SIGSETJMP_NOSIG(buf) setjmp(buf)
#define SIGLONGJMP(buf,val) longjmp((buf), (val))
#endif
@@ -111,7 +111,7 @@ value_rtti_type (struct value *v, int *full,
if ((current_cp_abi.rtti_type) == NULL)
return NULL;
- TRY_CATCH (e, RETURN_MASK_ERROR)
+ TRY_CATCH_NOSIG (e, RETURN_MASK_ERROR)
{
ret = (*current_cp_abi.rtti_type) (v, full, top, using_enc);
}
@@ -217,7 +217,7 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
return NULL; /* PyList_Append Sets the exception. */
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
insn_len = gdb_print_insn (gdbarch, pc, memfile, NULL);
}
@@ -378,7 +378,7 @@ gdbpy_block_for_pc (PyObject *self, PyObject *args)
if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
cust = find_pc_compunit_symtab (pc);
@@ -136,7 +136,7 @@ bppy_set_enabled (PyObject *self, PyObject *newvalue, void *closure)
if (cmp < 0)
return -1;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (cmp == 1)
enable_breakpoint (self_bp->bp);
@@ -242,7 +242,7 @@ bppy_set_task (PyObject *self, PyObject *newvalue, void *closure)
if (! gdb_py_int_as_long (newvalue, &id))
return -1;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
valid_id = valid_task_id (id);
}
@@ -282,7 +282,7 @@ bppy_delete_breakpoint (PyObject *self, PyObject *args)
BPPY_REQUIRE_VALID (self_bp);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
delete_breakpoint (self_bp->bp);
}
@@ -321,7 +321,7 @@ bppy_set_ignore_count (PyObject *self, PyObject *newvalue, void *closure)
if (value < 0)
value = 0;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
set_ignore_count (self_bp->number, (int) value, 0);
}
@@ -448,7 +448,7 @@ bppy_set_condition (PyObject *self, PyObject *newvalue, void *closure)
return -1;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
set_breakpoint_condition (self_bp->bp, exp, 0);
}
@@ -483,7 +483,7 @@ bppy_get_commands (PyObject *self, void *closure)
chain = make_cleanup_ui_file_delete (string_file);
ui_out_redirect (current_uiout, string_file);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
print_command_lines (current_uiout, breakpoint_commands (bp), 0);
}
@@ -644,7 +644,7 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
bppy_pending_object->number = -1;
bppy_pending_object->bp = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
char *copy = xstrdup (spec);
struct cleanup *cleanup = make_cleanup (xfree, copy);
@@ -637,7 +637,7 @@ cmdpy_init (PyObject *self, PyObject *args, PyObject *kw)
Py_INCREF (self);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cmd_list_element *cmd;
@@ -101,7 +101,7 @@ bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj)
if (!self_finishbp->return_type)
return;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *function =
value_object_to_value (self_finishbp->function_value);
@@ -136,7 +136,7 @@ bpfinishpy_post_stop_hook (struct gdbpy_breakpoint_object *bp_obj)
{
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Can't delete it here, but it will be removed at the next stop. */
disable_breakpoint (bp_obj->bp);
@@ -174,7 +174,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
&frame_obj, &internal))
return -1;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Default frame to newest frame if necessary. */
if (frame_obj == NULL)
@@ -243,7 +243,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
self_bpfinish->return_type = NULL;
self_bpfinish->function_value = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (get_frame_pc_if_available (frame, &pc))
{
@@ -284,7 +284,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
bppy_pending_object->number = -1;
bppy_pending_object->bp = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Set a breakpoint on the return address. */
finish_pc = get_frame_pc (prev_frame);
@@ -357,7 +357,7 @@ bpfinishpy_detect_out_scope_cb (struct breakpoint *b, void *args)
/* Check scope if not currently stopped at the FinishBreakpoint. */
if (b != bp_stopped)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (b->pspace == current_inferior ()->pspace
&& (!target_has_registers
@@ -103,7 +103,7 @@ frapy_is_valid (PyObject *self, PyObject *args)
struct frame_info *frame = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
frame = frame_object_to_frame_info (self);
}
@@ -127,7 +127,7 @@ frapy_name (PyObject *self, PyObject *args)
PyObject *result;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -163,7 +163,7 @@ frapy_type (PyObject *self, PyObject *args)
enum frame_type type = NORMAL_FRAME;/* Initialize to appease gcc warning. */
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -184,7 +184,7 @@ frapy_arch (PyObject *self, PyObject *args)
frame_object *obj = (frame_object *) self;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
}
@@ -203,7 +203,7 @@ frapy_unwind_stop_reason (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
enum unwind_stop_reason stop_reason;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
}
@@ -224,7 +224,7 @@ frapy_pc (PyObject *self, PyObject *args)
struct frame_info *frame;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -248,7 +248,7 @@ frapy_read_register (PyObject *self, PyObject *args)
if (!PyArg_ParseTuple (args, "s", ®num_str))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct frame_info *frame;
int regnum;
@@ -279,7 +279,7 @@ frapy_block (PyObject *self, PyObject *args)
const struct block *block = NULL, *fn_block;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
block = get_frame_block (frame, NULL);
@@ -318,7 +318,7 @@ frapy_function (PyObject *self, PyObject *args)
struct frame_info *frame;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -345,7 +345,7 @@ frame_info_to_frame_object (struct frame_info *frame)
if (frame_obj == NULL)
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Try to get the previous frame, to determine if this is the last frame
@@ -385,7 +385,7 @@ frapy_older (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
PyObject *prev_obj = NULL; /* Initialize to appease gcc warning. */
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -415,7 +415,7 @@ frapy_newer (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
PyObject *next_obj = NULL; /* Initialize to appease gcc warning. */
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -445,7 +445,7 @@ frapy_find_sal (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
PyObject *sal_obj = NULL; /* Initialize to appease gcc warning. */
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -502,7 +502,7 @@ frapy_read_var (PyObject *self, PyObject *args)
}
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -535,7 +535,7 @@ frapy_read_var (PyObject *self, PyObject *args)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, frame);
@@ -554,7 +554,7 @@ frapy_select (PyObject *self, PyObject *args)
struct frame_info *fi;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
FRAPY_REQUIRE_VALID (self, fi);
@@ -574,7 +574,7 @@ gdbpy_newest_frame (PyObject *self, PyObject *args)
struct frame_info *frame = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
frame = get_current_frame ();
}
@@ -592,7 +592,7 @@ gdbpy_selected_frame (PyObject *self, PyObject *args)
struct frame_info *frame = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
frame = get_selected_frame ("No frame is currently selected.");
}
@@ -203,7 +203,7 @@ py_print_type (struct ui_out *out, struct value *val)
{
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct type *type;
struct ui_file *stb;
@@ -257,7 +257,7 @@ py_print_value (struct ui_out *out, struct value *val,
{
struct type *type = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = check_typedef (value_type (val));
}
@@ -280,7 +280,7 @@ py_print_value (struct ui_out *out, struct value *val,
if (should_print)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct ui_file *stb;
struct cleanup *cleanup;
@@ -376,7 +376,7 @@ py_print_single_arg (struct ui_out *out,
else
val = fv;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
@@ -511,7 +511,7 @@ enumerate_args (PyObject *iter,
opts.deref_ref = 1;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_args ();
}
@@ -578,7 +578,7 @@ enumerate_args (PyObject *iter,
goto error;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
read_frame_arg (sym, frame, &arg, &entryarg);
}
@@ -612,7 +612,7 @@ enumerate_args (PyObject *iter,
{
if (arg.entry_kind != print_entry_values_only)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ui_out_text (out, ", ");
ui_out_wrap_hint (out, " ");
@@ -664,7 +664,7 @@ enumerate_args (PyObject *iter,
item = PyIter_Next (iter);
if (item != NULL)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ui_out_text (out, ", ");
}
@@ -678,7 +678,7 @@ enumerate_args (PyObject *iter,
else if (PyErr_Occurred ())
goto error;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_arg_end ();
}
@@ -761,7 +761,7 @@ enumerate_locals (PyObject *iter,
/* If the object did not provide a value, read it. */
if (val == NULL)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
val = read_var_value (sym, frame);
}
@@ -781,7 +781,7 @@ enumerate_locals (PyObject *iter,
if (print_args_field || args_type != NO_VALUES)
make_cleanup_ui_out_tuple_begin_end (out, NULL);
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (! ui_out_is_mi_like_p (out))
{
@@ -838,7 +838,7 @@ enumerate_locals (PyObject *iter,
do_cleanups (locals_cleanups);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ui_out_text (out, "\n");
}
@@ -954,7 +954,7 @@ py_print_args (PyObject *filter,
make_cleanup_ui_out_list_begin_end (out, "args");
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_args ();
if (! ui_out_is_mi_like_p (out))
@@ -971,7 +971,7 @@ py_print_args (PyObject *filter,
== EXT_LANG_BT_ERROR)
goto args_error;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (! ui_out_is_mi_like_p (out))
ui_out_text (out, ")");
@@ -1042,7 +1042,7 @@ py_print_frame (PyObject *filter, int flags,
if (frame == NULL)
goto error;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
gdbarch = get_frame_arch (frame);
}
@@ -1117,7 +1117,7 @@ py_print_frame (PyObject *filter, int flags,
slot = (struct frame_info **) htab_find_slot (levels_printed,
frame, INSERT);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
level = frame_relative_level (frame);
@@ -1150,7 +1150,7 @@ py_print_frame (PyObject *filter, int flags,
print nothing. */
if (opts.addressprint && has_addr)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_address ();
ui_out_field_core_addr (out, "addr", gdbarch, address);
@@ -1209,7 +1209,7 @@ py_print_frame (PyObject *filter, int flags,
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_function_name ();
if (function == NULL)
@@ -1242,7 +1242,7 @@ py_print_frame (PyObject *filter, int flags,
/* File name/source/line number information. */
if (print_frame_info)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_source_begin ();
}
@@ -1269,7 +1269,7 @@ py_print_frame (PyObject *filter, int flags,
}
make_cleanup (xfree, filename);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ui_out_wrap_hint (out, " ");
ui_out_text (out, " at ");
@@ -1300,7 +1300,7 @@ py_print_frame (PyObject *filter, int flags,
if (py_line != Py_None)
{
line = PyLong_AsLong (py_line);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ui_out_text (out, ":");
annotate_frame_source_line ();
@@ -1324,7 +1324,7 @@ py_print_frame (PyObject *filter, int flags,
elided frames, so if MI output detected do not send newline. */
if (! ui_out_is_mi_like_p (out))
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
annotate_frame_end ();
ui_out_text (out, "\n");
@@ -1481,7 +1481,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
if (!gdb_python_initialized)
return EXT_LANG_BT_NO_FILTERS;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
gdbarch = get_frame_arch (frame);
}
@@ -39,7 +39,7 @@ gdbpy_readline_wrapper (FILE *sys_stdin, FILE *sys_stdout,
char *p = NULL, *q;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
p = command_line_input (prompt, 0, "python");
/* Detect user interrupt (Ctrl-C). */
@@ -399,7 +399,7 @@ infpy_threads (PyObject *self, PyObject *args)
INFPY_REQUIRE_VALID (inf_obj);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
update_thread_list ();
GDB_PY_HANDLE_EXCEPTION (except);
@@ -514,7 +514,7 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw)
|| get_addr_from_python (length_obj, &length) < 0)
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
buffer = xmalloc (length);
@@ -588,7 +588,7 @@ infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw)
else if (get_addr_from_python (length_obj, &length) < 0)
goto fail;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
write_memory_with_notification (addr, (gdb_byte *) buffer, length);
}
@@ -760,7 +760,7 @@ infpy_search_memory (PyObject *self, PyObject *args, PyObject *kw)
goto fail;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
found = target_search_memory (start_addr, length,
buffer, pattern_size,
@@ -151,7 +151,7 @@ thpy_switch (PyObject *self, PyObject *args)
THPY_REQUIRE_VALID (thread_obj);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
switch_to_thread (thread_obj->thread->ptid);
}
@@ -105,7 +105,7 @@ stpy_convert_to_value (PyObject *self, PyObject *args)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
val = value_at_lazy (self_string->type, self_string->address);
}
@@ -179,7 +179,7 @@ ltpy_get_pcs_for_line (PyObject *self, PyObject *args)
if (! PyArg_ParseTuple (args, GDB_PY_LL_ARG, &py_line))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
pcs = find_pcs_for_symtab_line (symtab, py_line, &best_entry);
}
@@ -135,7 +135,7 @@ objfpy_get_build_id (PyObject *self, void *closure)
OBJFPY_REQUIRE_VALID (obj);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
build_id = build_id_bfd_get (objfile->obfd);
}
@@ -393,7 +393,7 @@ objfpy_add_separate_debug_file (PyObject *self, PyObject *args, PyObject *kw)
if (!PyArg_ParseTupleAndKeywords (args, kw, "s", keywords, &file_name))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
bfd *abfd = symfile_bfd_open (file_name);
@@ -724,7 +724,7 @@ parmpy_init (PyObject *self, PyObject *args, PyObject *kwds)
Py_INCREF (self);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
add_setshow_generic (parmclass, (enum command_class) cmdtype,
cmd_name, obj,
@@ -217,7 +217,7 @@ pretty_print_one_value (PyObject *printer, struct value **out_value)
PyObject *result = NULL;
*out_value = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
result = PyObject_CallMethodObjArgs (printer, gdbpy_to_string_cst, NULL);
if (result)
@@ -805,7 +805,7 @@ gdbpy_get_varobj_pretty_printer (struct value *value)
PyObject *pretty_printer = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
value = value_copy (value);
}
@@ -197,7 +197,7 @@ sympy_needs_frame (PyObject *self, void *closure)
SYMPY_REQUIRE_VALID (self, symbol);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
result = symbol_read_needs_frame (symbol);
}
@@ -264,7 +264,7 @@ sympy_value (PyObject *self, PyObject *args)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (frame_obj != NULL)
{
@@ -378,7 +378,7 @@ gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw)
struct frame_info *selected_frame;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
selected_frame = get_selected_frame (_("No frame selected."));
block = get_frame_block (selected_frame, NULL);
@@ -386,7 +386,7 @@ gdbpy_lookup_symbol (PyObject *self, PyObject *args, PyObject *kw)
GDB_PY_HANDLE_EXCEPTION (except);
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
symbol = lookup_symbol (name, block, domain, &is_a_field_of_this);
}
@@ -436,7 +436,7 @@ gdbpy_lookup_global_symbol (PyObject *self, PyObject *args, PyObject *kw)
&domain))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
symbol = lookup_global_symbol (name, NULL, domain);
}
@@ -345,7 +345,7 @@ typy_fields_items (PyObject *self, enum gdbpy_iter_kind kind)
struct type *type = ((type_object *) py_type)->type;
struct type *checked_type = type;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
CHECK_TYPEDEF (checked_type);
}
@@ -451,7 +451,7 @@ typy_strip_typedefs (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = check_typedef (type);
}
@@ -470,7 +470,7 @@ typy_get_composite (struct type *type)
for (;;)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
CHECK_TYPEDEF (type);
}
@@ -535,7 +535,7 @@ typy_array_1 (PyObject *self, PyObject *args, int is_vector)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
array = lookup_array_range_type (type, n1, n2);
if (is_vector)
@@ -569,7 +569,7 @@ typy_pointer (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = lookup_pointer_type (type);
}
@@ -650,7 +650,7 @@ typy_reference (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = lookup_reference_type (type);
}
@@ -682,7 +682,7 @@ typy_const (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = make_cv_type (1, 0, type, NULL);
}
@@ -698,7 +698,7 @@ typy_volatile (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = make_cv_type (0, 1, type, NULL);
}
@@ -714,7 +714,7 @@ typy_unqualified (PyObject *self, PyObject *args)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = make_cv_type (0, 0, type, NULL);
}
@@ -730,7 +730,7 @@ typy_get_sizeof (PyObject *self, void *closure)
struct type *type = ((type_object *) self)->type;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
check_typedef (type);
}
@@ -745,7 +745,7 @@ typy_lookup_typename (const char *type_name, const struct block *block)
struct type *type = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (!strncmp (type_name, "struct ", 7))
type = lookup_struct (type_name + 7, NULL);
@@ -784,7 +784,7 @@ typy_lookup_type (struct demangle_component *demangled,
if (! type)
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* If the demangled_type matches with one of the types
below, run the corresponding function and save the type
@@ -845,7 +845,7 @@ typy_legacy_template_argument (struct type *type, const struct block *block,
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Note -- this is not thread-safe. */
info = cp_demangled_name_to_comp (TYPE_NAME (type), &err);
@@ -919,7 +919,7 @@ typy_template_argument (PyObject *self, PyObject *args)
}
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = check_typedef (type);
if (TYPE_CODE (type) == TYPE_CODE_REF)
@@ -950,7 +950,7 @@ typy_template_argument (PyObject *self, PyObject *args)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
val = value_of_variable (sym, block);
}
@@ -967,7 +967,7 @@ typy_str (PyObject *self)
long length = 0;
PyObject *result;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cleanup *old_chain;
struct ui_file *stb;
@@ -1015,7 +1015,7 @@ typy_richcompare (PyObject *self, PyObject *other, int op)
result = Py_EQ;
else
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
result = types_deeply_equal (type1, type2);
}
@@ -318,7 +318,7 @@ get_addr_from_python (PyObject *obj, CORE_ADDR *addr)
{
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
*addr = value_as_address (value_object_to_value (obj));
}
@@ -175,7 +175,7 @@ valpy_dereference (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
PyObject *result = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *res_val;
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -203,7 +203,7 @@ valpy_referenced_value (PyObject *self, PyObject *args)
volatile struct gdb_exception except;
PyObject *result = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *self_val, *res_val;
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -239,7 +239,7 @@ valpy_get_address (PyObject *self, void *closure)
if (!val_obj->address)
{
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *res_val;
struct cleanup *cleanup
@@ -292,7 +292,7 @@ valpy_get_dynamic_type (PyObject *self, void *closure)
return obj->dynamic_type;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *val = obj->value;
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -364,7 +364,7 @@ valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw)
&user_encoding, &length))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -407,7 +407,7 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
&user_encoding, &errors, &length))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
LA_GET_STRING (value, &buffer, &length, &char_type, &la_encoding);
}
@@ -442,7 +442,7 @@ valpy_do_cast (PyObject *self, PyObject *args, enum exp_opcode op)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *val = ((value_object *) self)->value;
struct value *res_val;
@@ -524,7 +524,7 @@ value_has_field (struct value *v, PyObject *field)
return -1;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
val_type = value_type (v);
val_type = check_typedef (val_type);
@@ -673,7 +673,7 @@ valpy_getitem (PyObject *self, PyObject *key)
}
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *tmp = self_value->value;
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -751,7 +751,7 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
struct value *mark = value_mark ();
PyObject *result = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
ftype = check_typedef (value_type (function));
}
@@ -790,7 +790,7 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
}
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cleanup *cleanup = make_cleanup_value_free_to_mark (mark);
struct value *return_value;
@@ -817,7 +817,7 @@ valpy_str (PyObject *self)
get_user_print_options (&opts);
opts.deref_ref = 0;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct ui_file *stb = mem_fileopen ();
struct cleanup *old_chain = make_cleanup_ui_file_delete (stb);
@@ -844,7 +844,7 @@ valpy_get_is_optimized_out (PyObject *self, void *closure)
int opt = 0;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
opt = value_optimized_out (value);
}
@@ -864,7 +864,7 @@ valpy_get_is_lazy (PyObject *self, void *closure)
int opt = 0;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
opt = value_lazy (value);
}
@@ -883,7 +883,7 @@ valpy_fetch_lazy (PyObject *self, PyObject *args)
struct value *value = ((value_object *) self)->value;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (value_lazy (value))
value_fetch_lazy (value);
@@ -929,7 +929,7 @@ valpy_binop (enum valpy_opcode opcode, PyObject *self, PyObject *other)
volatile struct gdb_exception except;
PyObject *result = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *arg1, *arg2;
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -1106,7 +1106,7 @@ valpy_negative (PyObject *self)
volatile struct gdb_exception except;
PyObject *result = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Perhaps overkill, but consistency has some virtue. */
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -1134,7 +1134,7 @@ valpy_absolute (PyObject *self)
volatile struct gdb_exception except;
int isabs = 1;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct cleanup *cleanup = make_cleanup_value_free_to_mark (value_mark ());
@@ -1160,7 +1160,7 @@ valpy_nonzero (PyObject *self)
struct type *type;
int nonzero = 0; /* Appease GCC warning. */
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
type = check_typedef (value_type (self_value->value));
@@ -1191,7 +1191,7 @@ valpy_invert (PyObject *self)
struct value *val = NULL;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
val = value_complement (((value_object *) self)->value);
}
@@ -1262,7 +1262,7 @@ valpy_richcompare (PyObject *self, PyObject *other, int op)
return NULL;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct value *value_other, *mark = value_mark ();
struct cleanup *cleanup;
@@ -1329,7 +1329,7 @@ valpy_int (PyObject *self)
LONGEST l = 0;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (!is_integral_type (type))
error (_("Cannot convert value to int."));
@@ -1351,7 +1351,7 @@ valpy_long (PyObject *self)
LONGEST l = 0;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
CHECK_TYPEDEF (type);
@@ -1375,7 +1375,7 @@ valpy_float (PyObject *self)
double d = 0;
volatile struct gdb_exception except;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
CHECK_TYPEDEF (type);
@@ -1436,7 +1436,7 @@ convert_value_from_python (PyObject *obj)
gdb_assert (obj != NULL);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (PyBool_Check (obj))
{
@@ -1554,7 +1554,7 @@ gdbpy_history (PyObject *self, PyObject *args)
if (!PyArg_ParseTuple (args, "i", &i))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
res_val = access_value_history (i);
}
@@ -575,7 +575,7 @@ gdbpy_parameter (PyObject *self, PyObject *args)
newarg = concat ("show ", arg, (char *) NULL);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
found = lookup_cmd_composition (newarg, &alias, &prefix, &cmd);
}
@@ -646,7 +646,7 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
to_string = cmp;
}
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
/* Copy the argument text in case the command modifies it. */
char *copy = xstrdup (arg);
@@ -727,7 +727,7 @@ gdbpy_decode_line (PyObject *self, PyObject *args)
cleanups = make_cleanup (null_cleanup, NULL);
sals.sals = NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (arg)
{
@@ -829,7 +829,7 @@ gdbpy_parse_and_eval (PyObject *self, PyObject *args)
if (!PyArg_ParseTuple (args, "s", &expr_str))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
result = parse_and_eval (expr_str);
}
@@ -851,7 +851,7 @@ gdbpy_find_pc_line (PyObject *self, PyObject *args)
if (!PyArg_ParseTuple (args, GDB_PY_LLU_ARG, &pc_llu))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
struct symtab_and_line sal;
CORE_ADDR pc;
@@ -1102,7 +1102,7 @@ gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
&stream_type))
return NULL;
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
switch (stream_type)
{
@@ -1179,7 +1179,7 @@ gdbpy_print_stack (void)
/* PyErr_Print doesn't necessarily end output with a newline.
This works because Python's stdout/stderr is fed through
printf_filtered. */
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
begin_line ();
}
@@ -1196,7 +1196,7 @@ gdbpy_print_stack (void)
msg = gdbpy_exception_to_string (ptype, pvalue);
type = gdbpy_obj_to_string (ptype);
- TRY_CATCH (except, RETURN_MASK_ALL)
+ TRY_CATCH_NOSIG (except, RETURN_MASK_ALL)
{
if (msg == NULL)
{