From: Tim Wiederhake <tim.wiederhake@intel.com>
To: gdb-patches@sourceware.org
Cc: markus.t.metzger@intel.com, brobecker@adacore.com, qiyaoltc@gmail.com
Subject: [PATCH v2 2/8] Python: Fix exception handling in py-record-btrace.c
Date: Fri, 21 Apr 2017 10:50:00 -0000 [thread overview]
Message-ID: <1492771786-26372-3-git-send-email-tim.wiederhake@intel.com> (raw)
In-Reply-To: <1492771786-26372-1-git-send-email-tim.wiederhake@intel.com>
GDB_PY_HANDLE_EXCEPTION does not handle all exceptions. Replace with call to
gdbpy_convert_exception.
2017-04-21 Tim Wiederhake <tim.wiederhake@intel.com>
gdb/ChangeLog:
python/py-record-btrace.c (btpy_insn_sal, btpy_insn_data,
btpy_insn_decode, recpy_bt_goto): Handle all exceptions.
---
gdb/python/py-record-btrace.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/gdb/python/py-record-btrace.c b/gdb/python/py-record-btrace.c
index 0f8d7ef..9d79e2b 100644
--- a/gdb/python/py-record-btrace.c
+++ b/gdb/python/py-record-btrace.c
@@ -227,7 +227,7 @@ btpy_insn_sal (PyObject *self, void *closure)
}
CATCH (except, RETURN_MASK_ALL)
{
- GDB_PY_HANDLE_EXCEPTION (except);
+ gdbpy_convert_exception (except);
}
END_CATCH
@@ -320,10 +320,14 @@ btpy_insn_data (PyObject *self, void *closure)
CATCH (except, RETURN_MASK_ALL)
{
xfree (buffer);
- GDB_PY_HANDLE_EXCEPTION (except);
+ buffer = NULL;
+ gdbpy_convert_exception (except);
}
END_CATCH
+ if (buffer == NULL)
+ return NULL;
+
object = PyBytes_FromStringAndSize ((const char*) buffer, insn->size);
xfree (buffer);
@@ -348,6 +352,7 @@ btpy_insn_decode (PyObject *self, void *closure)
const struct btrace_insn *insn;
struct btrace_insn_iterator iter;
string_file strfile;
+ int length = 0;
BTPY_REQUIRE_VALID_INSN (obj, iter);
@@ -364,15 +369,16 @@ btpy_insn_decode (PyObject *self, void *closure)
TRY
{
- gdb_print_insn (target_gdbarch (), insn->pc, &strfile, NULL);
+ length = gdb_print_insn (target_gdbarch (), insn->pc, &strfile, NULL);
}
CATCH (except, RETURN_MASK_ALL)
{
gdbpy_convert_exception (except);
- return NULL;
}
END_CATCH
+ if (length == 0)
+ return NULL;
return PyBytes_FromString (strfile.string ().c_str ());
}
@@ -871,6 +877,7 @@ recpy_bt_goto (PyObject *self, PyObject *args)
{
struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
const btpy_object *obj;
+ PyObject *ret = NULL;
if (tinfo == NULL || btrace_is_empty (tinfo))
return PyErr_Format (gdbpy_gdb_error, _("Empty branch trace."));
@@ -891,14 +898,17 @@ recpy_bt_goto (PyObject *self, PyObject *args)
target_goto_record_end ();
else
target_goto_record (obj->number);
+
+ Py_INCREF (Py_None);
+ ret = Py_None;
}
CATCH (except, RETURN_MASK_ALL)
{
- GDB_PY_HANDLE_EXCEPTION (except);
+ gdbpy_convert_exception (except);
}
END_CATCH
- Py_RETURN_NONE;
+ return ret;
}
/* BtraceInstruction members. */
--
2.7.4
next prev parent reply other threads:[~2017-04-21 10:50 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-21 10:50 [PATCH v2 0/8] Python bindings for GDB record Tim Wiederhake
2017-04-21 10:50 ` [PATCH v2 1/8] Python: Fix indentation in py-record-btrace.c Tim Wiederhake
2017-04-21 10:50 ` [PATCH v2 8/8] Python: Introduce gdb.Instruction class Tim Wiederhake
2017-04-21 12:19 ` Eli Zaretskii
2017-04-24 5:34 ` Wiederhake, Tim
2017-04-21 18:10 ` Yao Qi
2017-04-21 10:50 ` [PATCH v2 4/8] Python: Remove ptid from gdb.Record interface Tim Wiederhake
2017-04-21 12:20 ` Eli Zaretskii
2017-04-21 10:50 ` [PATCH v2 7/8] Python: Move and rename gdb.BtraceFunction Tim Wiederhake
2017-04-21 12:22 ` Eli Zaretskii
2017-04-21 16:41 ` Yao Qi
2017-04-21 10:50 ` Tim Wiederhake [this message]
2017-04-21 18:08 ` [PATCH v2 2/8] Python: Fix exception handling in py-record-btrace.c Yao Qi
2017-04-27 16:35 ` Pedro Alves
2017-04-21 10:50 ` [PATCH v2 5/8] Python: Introduce gdb.RecordGap class Tim Wiederhake
2017-04-21 12:25 ` Eli Zaretskii
2017-04-21 14:50 ` Yao Qi
2017-04-21 10:50 ` [PATCH v2 6/8] Python: Move and rename gdb.BtraceInstruction Tim Wiederhake
2017-04-21 12:23 ` Eli Zaretskii
2017-04-21 15:21 ` Yao Qi
2017-04-21 10:50 ` [PATCH v2 3/8] Python: Use correct ptid in btrace recording Tim Wiederhake
2017-04-21 14:49 ` Yao Qi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1492771786-26372-3-git-send-email-tim.wiederhake@intel.com \
--to=tim.wiederhake@intel.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=markus.t.metzger@intel.com \
--cc=qiyaoltc@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox