Rewrite TRY/CATCH
This rewrites gdb's TRY/CATCH to plain C++ try/catch. The patch was largely written by script, though one change (to a comment in common-exceptions.h) was reverted by hand. gdb/ChangeLog 2019-04-08 Tom Tromey <tom@tromey.com> * xml-support.c: Use C++ exception handling. * x86-linux-nat.c: Use C++ exception handling. * windows-nat.c: Use C++ exception handling. * varobj.c: Use C++ exception handling. * value.c: Use C++ exception handling. * valprint.c: Use C++ exception handling. * valops.c: Use C++ exception handling. * unittests/parse-connection-spec-selftests.c: Use C++ exception handling. * unittests/cli-utils-selftests.c: Use C++ exception handling. * typeprint.c: Use C++ exception handling. * tui/tui.c: Use C++ exception handling. * tracefile-tfile.c: Use C++ exception handling. * top.c: Use C++ exception handling. * thread.c: Use C++ exception handling. * target.c: Use C++ exception handling. * symmisc.c: Use C++ exception handling. * symfile-mem.c: Use C++ exception handling. * stack.c: Use C++ exception handling. * sparc64-linux-tdep.c: Use C++ exception handling. * solib.c: Use C++ exception handling. * solib-svr4.c: Use C++ exception handling. * solib-spu.c: Use C++ exception handling. * solib-frv.c: Use C++ exception handling. * solib-dsbt.c: Use C++ exception handling. * selftest-arch.c: Use C++ exception handling. * s390-tdep.c: Use C++ exception handling. * rust-lang.c: Use C++ exception handling. * rust-exp.y: Use C++ exception handling. * rs6000-tdep.c: Use C++ exception handling. * rs6000-aix-tdep.c: Use C++ exception handling. * riscv-tdep.c: Use C++ exception handling. * remote.c: Use C++ exception handling. * remote-fileio.c: Use C++ exception handling. * record-full.c: Use C++ exception handling. * record-btrace.c: Use C++ exception handling. * python/python.c: Use C++ exception handling. * python/py-value.c: Use C++ exception handling. * python/py-utils.c: Use C++ exception handling. * python/py-unwind.c: Use C++ exception handling. * python/py-type.c: Use C++ exception handling. * python/py-symbol.c: Use C++ exception handling. * python/py-record.c: Use C++ exception handling. * python/py-record-btrace.c: Use C++ exception handling. * python/py-progspace.c: Use C++ exception handling. * python/py-prettyprint.c: Use C++ exception handling. * python/py-param.c: Use C++ exception handling. * python/py-objfile.c: Use C++ exception handling. * python/py-linetable.c: Use C++ exception handling. * python/py-lazy-string.c: Use C++ exception handling. * python/py-infthread.c: Use C++ exception handling. * python/py-inferior.c: Use C++ exception handling. * python/py-gdb-readline.c: Use C++ exception handling. * python/py-framefilter.c: Use C++ exception handling. * python/py-frame.c: Use C++ exception handling. * python/py-finishbreakpoint.c: Use C++ exception handling. * python/py-cmd.c: Use C++ exception handling. * python/py-breakpoint.c: Use C++ exception handling. * python/py-arch.c: Use C++ exception handling. * printcmd.c: Use C++ exception handling. * ppc-linux-tdep.c: Use C++ exception handling. * parse.c: Use C++ exception handling. * p-valprint.c: Use C++ exception handling. * objc-lang.c: Use C++ exception handling. * mi/mi-main.c: Use C++ exception handling. * mi/mi-interp.c: Use C++ exception handling. * mi/mi-cmd-stack.c: Use C++ exception handling. * mi/mi-cmd-break.c: Use C++ exception handling. * main.c: Use C++ exception handling. * linux-thread-db.c: Use C++ exception handling. * linux-tdep.c: Use C++ exception handling. * linux-nat.c: Use C++ exception handling. * linux-fork.c: Use C++ exception handling. * linespec.c: Use C++ exception handling. * language.c: Use C++ exception handling. * jit.c: Use C++ exception handling. * infrun.c: Use C++ exception handling. * infcmd.c: Use C++ exception handling. * infcall.c: Use C++ exception handling. * inf-loop.c: Use C++ exception handling. * i386-tdep.c: Use C++ exception handling. * i386-linux-tdep.c: Use C++ exception handling. * guile/scm-value.c: Use C++ exception handling. * guile/scm-type.c: Use C++ exception handling. * guile/scm-symtab.c: Use C++ exception handling. * guile/scm-symbol.c: Use C++ exception handling. * guile/scm-pretty-print.c: Use C++ exception handling. * guile/scm-ports.c: Use C++ exception handling. * guile/scm-param.c: Use C++ exception handling. * guile/scm-math.c: Use C++ exception handling. * guile/scm-lazy-string.c: Use C++ exception handling. * guile/scm-frame.c: Use C++ exception handling. * guile/scm-disasm.c: Use C++ exception handling. * guile/scm-cmd.c: Use C++ exception handling. * guile/scm-breakpoint.c: Use C++ exception handling. * guile/scm-block.c: Use C++ exception handling. * guile/guile-internal.h: Use C++ exception handling. * gnu-v3-abi.c: Use C++ exception handling. * gdbtypes.c: Use C++ exception handling. * frame.c: Use C++ exception handling. * frame-unwind.c: Use C++ exception handling. * fbsd-tdep.c: Use C++ exception handling. * f-valprint.c: Use C++ exception handling. * exec.c: Use C++ exception handling. * event-top.c: Use C++ exception handling. * event-loop.c: Use C++ exception handling. * eval.c: Use C++ exception handling. * dwarf2read.c: Use C++ exception handling. * dwarf2loc.c: Use C++ exception handling. * dwarf2-frame.c: Use C++ exception handling. * dwarf2-frame-tailcall.c: Use C++ exception handling. * dwarf-index-write.c: Use C++ exception handling. * dwarf-index-cache.c: Use C++ exception handling. * dtrace-probe.c: Use C++ exception handling. * disasm-selftests.c: Use C++ exception handling. * darwin-nat.c: Use C++ exception handling. * cp-valprint.c: Use C++ exception handling. * cp-support.c: Use C++ exception handling. * cp-abi.c: Use C++ exception handling. * corelow.c: Use C++ exception handling. * completer.c: Use C++ exception handling. * compile/compile-object-run.c: Use C++ exception handling. * compile/compile-object-load.c: Use C++ exception handling. * compile/compile-cplus-symbols.c: Use C++ exception handling. * compile/compile-c-symbols.c: Use C++ exception handling. * common/selftest.c: Use C++ exception handling. * common/new-op.c: Use C++ exception handling. * cli/cli-script.c: Use C++ exception handling. * cli/cli-interp.c: Use C++ exception handling. * cli/cli-cmds.c: Use C++ exception handling. * c-varobj.c: Use C++ exception handling. * btrace.c: Use C++ exception handling. * breakpoint.c: Use C++ exception handling. * break-catch-throw.c: Use C++ exception handling. * arch-utils.c: Use C++ exception handling. * amd64-tdep.c: Use C++ exception handling. * ada-valprint.c: Use C++ exception handling. * ada-typeprint.c: Use C++ exception handling. * ada-lang.c: Use C++ exception handling. * aarch64-tdep.c: Use C++ exception handling. gdb/gdbserver/ChangeLog 2019-04-08 Tom Tromey <tom@tromey.com> * server.c: Use C++ exception handling. * linux-low.c: Use C++ exception handling. * gdbreplay.c: Use C++ exception handling.
This commit is contained in:
parent
3d6e9d2336
commit
a70b814420
144 changed files with 1033 additions and 1326 deletions
|
@ -216,7 +216,7 @@ valpy_dereference (PyObject *self, PyObject *args)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *res_val;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -224,11 +224,10 @@ valpy_dereference (PyObject *self, PyObject *args)
|
|||
res_val = value_ind (((value_object *) self)->value);
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -246,7 +245,7 @@ valpy_referenced_value (PyObject *self, PyObject *args)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *self_val, *res_val;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -268,11 +267,10 @@ valpy_referenced_value (PyObject *self, PyObject *args)
|
|||
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -284,7 +282,7 @@ valpy_reference_value (PyObject *self, PyObject *args, enum type_code refcode)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *self_val;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -292,11 +290,10 @@ valpy_reference_value (PyObject *self, PyObject *args, enum type_code refcode)
|
|||
self_val = ((value_object *) self)->value;
|
||||
result = value_to_value_object (value_ref (self_val, refcode));
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -320,7 +317,7 @@ valpy_const_value (PyObject *self, PyObject *args)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *self_val, *res_val;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -329,11 +326,10 @@ valpy_const_value (PyObject *self, PyObject *args)
|
|||
res_val = make_cv_value (1, 0, self_val);
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -346,7 +342,7 @@ valpy_get_address (PyObject *self, void *closure)
|
|||
|
||||
if (!val_obj->address)
|
||||
{
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *res_val;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -354,12 +350,11 @@ valpy_get_address (PyObject *self, void *closure)
|
|||
res_val = value_addr (val_obj->value);
|
||||
val_obj->address = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
val_obj->address = Py_None;
|
||||
Py_INCREF (Py_None);
|
||||
}
|
||||
END_CATCH
|
||||
}
|
||||
|
||||
Py_XINCREF (val_obj->address);
|
||||
|
@ -397,7 +392,7 @@ valpy_get_dynamic_type (PyObject *self, void *closure)
|
|||
return obj->dynamic_type;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *val = obj->value;
|
||||
scoped_value_mark free_values;
|
||||
|
@ -433,11 +428,10 @@ valpy_get_dynamic_type (PyObject *self, void *closure)
|
|||
type = NULL;
|
||||
}
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (type == NULL)
|
||||
obj->dynamic_type = valpy_get_type (self, NULL);
|
||||
|
@ -485,7 +479,7 @@ valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
scoped_value_mark free_values;
|
||||
struct type *type, *realtype;
|
||||
|
@ -540,11 +534,10 @@ valpy_lazy_string (PyObject *self, PyObject *args, PyObject *kw)
|
|||
str_obj = gdbpy_create_lazy_string_object (addr, length, user_encoding,
|
||||
type);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return str_obj;
|
||||
}
|
||||
|
@ -572,15 +565,14 @@ valpy_string (PyObject *self, PyObject *args, PyObject *kw)
|
|||
&user_encoding, &errors, &length))
|
||||
return NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
LA_GET_STRING (value, &buffer, &length, &char_type, &la_encoding);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
encoding = (user_encoding && *user_encoding) ? user_encoding : la_encoding;
|
||||
return PyUnicode_Decode ((const char *) buffer.get (),
|
||||
|
@ -733,16 +725,15 @@ valpy_format_string (PyObject *self, PyObject *args, PyObject *kw)
|
|||
|
||||
string_file stb;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
common_val_print (((value_object *) self)->value, &stb, 0,
|
||||
&opts, python_language);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return PyUnicode_Decode (stb.c_str (), stb.size (), host_charset (), NULL);
|
||||
}
|
||||
|
@ -766,7 +757,7 @@ valpy_do_cast (PyObject *self, PyObject *args, enum exp_opcode op)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *val = ((value_object *) self)->value;
|
||||
struct value *res_val;
|
||||
|
@ -784,11 +775,10 @@ valpy_do_cast (PyObject *self, PyObject *args, enum exp_opcode op)
|
|||
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -849,7 +839,7 @@ value_has_field (struct value *v, PyObject *field)
|
|||
return -1;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
val_type = value_type (v);
|
||||
val_type = check_typedef (val_type);
|
||||
|
@ -863,11 +853,10 @@ value_has_field (struct value *v, PyObject *field)
|
|||
else
|
||||
has_field = 0;
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_SET_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return has_field;
|
||||
}
|
||||
|
@ -988,7 +977,7 @@ valpy_getitem (PyObject *self, PyObject *key)
|
|||
}
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct value *tmp = self_value->value;
|
||||
struct value *res_val = NULL;
|
||||
|
@ -1042,11 +1031,10 @@ valpy_getitem (PyObject *self, PyObject *key)
|
|||
if (res_val)
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
CATCH (ex, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &ex)
|
||||
{
|
||||
except = ex;
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
|
||||
|
@ -1072,15 +1060,14 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
|
|||
struct type *ftype = NULL;
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
ftype = check_typedef (value_type (function));
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (TYPE_CODE (ftype) != TYPE_CODE_FUNC)
|
||||
{
|
||||
|
@ -1115,7 +1102,7 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
|
|||
}
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
scoped_value_mark free_values;
|
||||
|
||||
|
@ -1124,11 +1111,10 @@ valpy_call (PyObject *self, PyObject *args, PyObject *keywords)
|
|||
gdb::make_array_view (vargs, args_count));
|
||||
result = value_to_value_object (return_value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1145,16 +1131,15 @@ valpy_str (PyObject *self)
|
|||
|
||||
string_file stb;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
common_val_print (((value_object *) self)->value, &stb, 0,
|
||||
&opts, python_language);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return PyUnicode_Decode (stb.c_str (), stb.size (), host_charset (), NULL);
|
||||
}
|
||||
|
@ -1166,15 +1151,14 @@ valpy_get_is_optimized_out (PyObject *self, void *closure)
|
|||
struct value *value = ((value_object *) self)->value;
|
||||
int opt = 0;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
opt = value_optimized_out (value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (opt)
|
||||
Py_RETURN_TRUE;
|
||||
|
@ -1189,15 +1173,14 @@ valpy_get_is_lazy (PyObject *self, void *closure)
|
|||
struct value *value = ((value_object *) self)->value;
|
||||
int opt = 0;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
opt = value_lazy (value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (opt)
|
||||
Py_RETURN_TRUE;
|
||||
|
@ -1211,16 +1194,15 @@ valpy_fetch_lazy (PyObject *self, PyObject *args)
|
|||
{
|
||||
struct value *value = ((value_object *) self)->value;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
if (value_lazy (value))
|
||||
value_fetch_lazy (value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
@ -1384,15 +1366,14 @@ valpy_binop (enum valpy_opcode opcode, PyObject *self, PyObject *other)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
result = valpy_binop_throw (opcode, self, other);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1448,7 +1429,7 @@ valpy_negative (PyObject *self)
|
|||
{
|
||||
PyObject *result = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
/* Perhaps overkill, but consistency has some virtue. */
|
||||
scoped_value_mark free_values;
|
||||
|
@ -1457,11 +1438,10 @@ valpy_negative (PyObject *self)
|
|||
val = value_neg (((value_object *) self)->value);
|
||||
result = value_to_value_object (val);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -1478,18 +1458,17 @@ valpy_absolute (PyObject *self)
|
|||
struct value *value = ((value_object *) self)->value;
|
||||
int isabs = 1;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
scoped_value_mark free_values;
|
||||
|
||||
if (value_less (value, value_zero (value_type (value), not_lval)))
|
||||
isabs = 0;
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (isabs)
|
||||
return valpy_positive (self);
|
||||
|
@ -1506,7 +1485,7 @@ valpy_nonzero (PyObject *self)
|
|||
struct type *type;
|
||||
int nonzero = 0; /* Appease GCC warning. */
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
type = check_typedef (value_type (self_value->value));
|
||||
|
||||
|
@ -1519,11 +1498,10 @@ valpy_nonzero (PyObject *self)
|
|||
/* All other values are True. */
|
||||
nonzero = 1;
|
||||
}
|
||||
CATCH (ex, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &ex)
|
||||
{
|
||||
except = ex;
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
/* This is not documented in the Python documentation, but if this
|
||||
function fails, return -1 as slot_nb_nonzero does (the default
|
||||
|
@ -1539,15 +1517,14 @@ valpy_invert (PyObject *self)
|
|||
{
|
||||
struct value *val = NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
val = value_complement (((value_object *) self)->value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return value_to_value_object (val);
|
||||
}
|
||||
|
@ -1667,15 +1644,14 @@ valpy_richcompare (PyObject *self, PyObject *other, int op)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
result = valpy_richcompare_throw (self, other, op);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
/* In this case, the Python exception has already been set. */
|
||||
if (result < 0)
|
||||
|
@ -1696,7 +1672,7 @@ valpy_int (PyObject *self)
|
|||
struct type *type = value_type (value);
|
||||
LONGEST l = 0;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
if (is_floating_value (value))
|
||||
{
|
||||
|
@ -1710,11 +1686,10 @@ valpy_int (PyObject *self)
|
|||
|
||||
l = value_as_long (value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (TYPE_UNSIGNED (type))
|
||||
return gdb_py_object_from_ulongest (l).release ();
|
||||
|
@ -1731,7 +1706,7 @@ valpy_long (PyObject *self)
|
|||
struct type *type = value_type (value);
|
||||
LONGEST l = 0;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
if (is_floating_value (value))
|
||||
{
|
||||
|
@ -1747,11 +1722,10 @@ valpy_long (PyObject *self)
|
|||
|
||||
l = value_as_long (value);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (TYPE_UNSIGNED (type))
|
||||
return gdb_py_long_from_ulongest (l);
|
||||
|
@ -1767,7 +1741,7 @@ valpy_float (PyObject *self)
|
|||
struct type *type = value_type (value);
|
||||
double d = 0;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
type = check_typedef (type);
|
||||
|
||||
|
@ -1783,11 +1757,10 @@ valpy_float (PyObject *self)
|
|||
else
|
||||
error (_("Cannot convert value to float."));
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return PyFloat_FromDouble (d);
|
||||
}
|
||||
|
@ -1837,7 +1810,7 @@ convert_value_from_python (PyObject *obj)
|
|||
|
||||
gdb_assert (obj != NULL);
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
if (PyBool_Check (obj))
|
||||
{
|
||||
|
@ -1927,12 +1900,11 @@ convert_value_from_python (PyObject *obj)
|
|||
PyString_AsString (PyObject_Str (obj)));
|
||||
#endif
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
gdbpy_convert_exception (except);
|
||||
return NULL;
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return value;
|
||||
}
|
||||
|
@ -1947,15 +1919,14 @@ gdbpy_history (PyObject *self, PyObject *args)
|
|||
if (!PyArg_ParseTuple (args, "i", &i))
|
||||
return NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
res_val = access_value_history (i);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return value_to_value_object (res_val);
|
||||
}
|
||||
|
@ -1970,7 +1941,7 @@ gdbpy_convenience_variable (PyObject *self, PyObject *args)
|
|||
if (!PyArg_ParseTuple (args, "s", &varname))
|
||||
return NULL;
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
struct internalvar *var = lookup_only_internalvar (varname);
|
||||
|
||||
|
@ -1981,11 +1952,10 @@ gdbpy_convenience_variable (PyObject *self, PyObject *args)
|
|||
res_val = NULL;
|
||||
}
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
if (res_val == NULL)
|
||||
Py_RETURN_NONE;
|
||||
|
@ -2012,7 +1982,7 @@ gdbpy_set_convenience_variable (PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
TRY
|
||||
try
|
||||
{
|
||||
if (value == NULL)
|
||||
{
|
||||
|
@ -2028,11 +1998,10 @@ gdbpy_set_convenience_variable (PyObject *self, PyObject *args)
|
|||
set_internalvar (var, value);
|
||||
}
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
catch (const gdb_exception_RETURN_MASK_ALL &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue