Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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


  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