/* Python interface to stack frames
- Copyright (C) 2008-2019 Free Software Foundation, Inc.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
This file is part of GDB.
#include "symfile.h"
#include "objfiles.h"
#include "user-regs.h"
-#include "py-ref.h"
typedef struct {
PyObject_HEAD
{
struct frame_info *frame = NULL;
- TRY
+ try
{
frame = frame_object_to_frame_info (self);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
if (frame == NULL)
Py_RETURN_FALSE;
enum language lang;
PyObject *result;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
name = find_frame_funname (frame, &lang, NULL);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
if (name)
{
struct frame_info *frame;
enum frame_type type = NORMAL_FRAME;/* Initialize to appease gcc warning. */
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
type = get_frame_type (frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return PyInt_FromLong (type);
}
struct frame_info *frame = NULL; /* Initialize to appease gcc warning. */
frame_object *obj = (frame_object *) self;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return gdbarch_to_arch_object (obj->gdbarch);
}
struct frame_info *frame = NULL; /* Initialize to appease gcc warning. */
enum unwind_stop_reason stop_reason;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
stop_reason = get_frame_unwind_stop_reason (frame);
CORE_ADDR pc = 0; /* Initialize to appease gcc warning. */
struct frame_info *frame;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
pc = get_frame_pc (frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return gdb_py_long_from_ulongest (pc);
}
if (!PyArg_ParseTuple (args, "s", ®num_str))
return NULL;
- TRY
+ try
{
struct frame_info *frame;
int regnum;
if (val == NULL)
PyErr_SetString (PyExc_ValueError, _("Unknown register."));
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return val == NULL ? NULL : value_to_value_object (val);
}
struct frame_info *frame;
const struct block *block = NULL, *fn_block;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
block = get_frame_block (frame, NULL);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
for (fn_block = block;
fn_block != NULL && BLOCK_FUNCTION (fn_block) == NULL;
struct symbol *sym = NULL;
struct frame_info *frame;
- TRY
+ try
{
enum language funlang;
gdb::unique_xmalloc_ptr<char> funname
= find_frame_funname (frame, &funlang, &sym);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
if (sym)
return symbol_to_symbol_object (sym);
if (frame_obj == NULL)
return NULL;
- TRY
+ try
{
/* Try to get the previous frame, to determine if this is the last frame
}
frame_obj->gdbarch = get_frame_arch (frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
gdbpy_convert_exception (except);
return NULL;
}
- END_CATCH
return (PyObject *) frame_obj.release ();
}
struct frame_info *frame, *prev = NULL;
PyObject *prev_obj = NULL; /* Initialize to appease gcc warning. */
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
prev = get_prev_frame (frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
if (prev)
prev_obj = frame_info_to_frame_object (prev);
struct frame_info *frame, *next = NULL;
PyObject *next_obj = NULL; /* Initialize to appease gcc warning. */
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
next = get_next_frame (frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
if (next)
next_obj = frame_info_to_frame_object (next);
struct frame_info *frame;
PyObject *sal_obj = NULL; /* Initialize to appease gcc warning. */
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
symtab_and_line sal = find_frame_sal (frame);
sal_obj = symtab_and_line_to_sal_object (sal);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return sal_obj;
}
}
}
- TRY
+ try
{
struct block_symbol lookup_sym;
FRAPY_REQUIRE_VALID (self, frame);
var = lookup_sym.symbol;
block = lookup_sym.block;
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
gdbpy_convert_exception (except);
return NULL;
}
- END_CATCH
if (!var)
{
return NULL;
}
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, frame);
val = read_var_value (var, block, frame);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return value_to_value_object (val);
}
{
struct frame_info *fi;
- TRY
+ try
{
FRAPY_REQUIRE_VALID (self, fi);
select_frame (fi);
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
Py_RETURN_NONE;
}
{
struct frame_info *frame = NULL;
- TRY
+ try
{
frame = get_current_frame ();
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return frame_info_to_frame_object (frame);
}
{
struct frame_info *frame = NULL;
- TRY
+ try
{
frame = get_selected_frame ("No frame is currently selected.");
}
- CATCH (except, RETURN_MASK_ALL)
+ catch (const gdb_exception &except)
{
GDB_PY_HANDLE_EXCEPTION (except);
}
- END_CATCH
return frame_info_to_frame_object (frame);
}