From: Simon Marchi <simon.marchi@polymtl.ca>
To: Kevin Buettner <kevinb@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v2 2/7] Add `thread_from_thread_handle' function to (Python) gdb module
Date: Fri, 05 May 2017 03:54:00 -0000 [thread overview]
Message-ID: <68dac34e4303112e6c57a00ddaeaba9f@polymtl.ca> (raw)
In-Reply-To: <20170408230657.556b99e4@pinnacle.lan>
On 2017-04-09 02:06, Kevin Buettner wrote:
> gdb/ChangeLog:
> * python/py-infthread.c (gdbpy_thread_from_thread_handle): New
> function.
> * python/python-internal.h (thread_object_type): Declare.
> (gdbpy_thread_from_thread_handle): Declare.
> * python/python.c (thread_from_thread_handle): Register.
> ---
> gdb/python/py-infthread.c | 41
> +++++++++++++++++++++++++++++++++++++++++
> gdb/python/python-internal.h | 3 +++
> gdb/python/python.c | 4 ++++
> 3 files changed, 48 insertions(+)
>
> diff --git a/gdb/python/py-infthread.c b/gdb/python/py-infthread.c
> index 5482bf9..5739984 100644
> --- a/gdb/python/py-infthread.c
> +++ b/gdb/python/py-infthread.c
> @@ -294,6 +294,47 @@ gdbpy_selected_thread (PyObject *self, PyObject
> *args)
> Py_RETURN_NONE;
> }
>
> +/* Implementation of gdb.thread_from_thread_handle (handle)
> + -> gdb.InferiorThread. */
> +
> +PyObject *
> +gdbpy_thread_from_thread_handle (PyObject *self, PyObject *args,
> PyObject *kw)
> +{
> + PyObject *handle_obj, *result;
> + static char *keywords[] = { "thread_handle", NULL };
> +
> + if (! PyArg_ParseTupleAndKeywords (args, kw, "O", keywords,
> &handle_obj))
> + return NULL;
To adapt the patch to the current GDB master, you'll need to make
keyword a const char * [], and use gdb_PyArg_ParseTupleAndKeywords.
> +
> + result = Py_None;
> +
> + if (gdbpy_is_value_object (handle_obj))
> + {
> + TRY
> + {
> + struct thread_info *thread_info;
> + struct value *val = value_object_to_value (handle_obj);
> +
> + thread_info = find_thread_by_handle (val);
> + if (thread_info != NULL)
> + {
> + result = (PyObject *) find_thread_object (thread_info->ptid);
> + if (result)
if (result != NULL)
> + Py_INCREF (result);
> + }
> + }
> + CATCH (except, RETURN_MASK_ALL)
> + {
> + if (except.reason < 0)
> + gdbpy_convert_exception (except);
> + return NULL;
Should you use GDB_PY_HANDLE_EXCEPTION? The behavior is a little bit
different than your code, in that it will only return if an exception
was set. The Python doc says: "If the return value is NULL, an
exception shall have been set.". Here, it's possible that we return
NULL without having set an exception.
Thanks,
Simon
next prev parent reply other threads:[~2017-05-05 3:54 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-09 5:50 [PATCH v2 0/7] Thread handle to thread info mapping Kevin Buettner
2017-04-09 6:06 ` [PATCH v2 1/7] Add target method for converting thread handle to thread_info struct pointer Kevin Buettner
2017-05-05 3:26 ` Simon Marchi
2017-07-19 0:01 ` Kevin Buettner
2017-04-09 6:07 ` [PATCH v2 6/7] Add thread_handle_to_thread_info support for remote targets Kevin Buettner
2017-05-06 2:28 ` Simon Marchi
2017-04-09 6:07 ` [PATCH v2 5/7] Add thread_db_notice_clone to gdbserver Kevin Buettner
2017-05-06 1:46 ` Simon Marchi
2017-04-09 6:07 ` [PATCH v2 3/7] Documentation for gdb.thread_from_thread_handle Kevin Buettner
2017-05-05 4:01 ` Simon Marchi
2017-05-05 6:25 ` Eli Zaretskii
2017-07-19 0:13 ` Kevin Buettner
2017-04-09 6:07 ` [PATCH v2 2/7] Add `thread_from_thread_handle' function to (Python) gdb module Kevin Buettner
2017-04-13 16:11 ` Phil Muldoon
2017-05-05 3:54 ` Simon Marchi [this message]
2017-04-09 6:07 ` [PATCH v2 7/7] Documentation for qXfer:threads:read handle attribute Kevin Buettner
2017-04-09 8:09 ` Eli Zaretskii
2017-04-09 6:07 ` [PATCH v2 4/7] Test case for gdb.thread_from_thread_handle Kevin Buettner
2017-05-05 5:19 ` Simon Marchi
2017-04-20 0:19 ` [PATCH v2 0/7] Thread handle to thread info mapping Kevin Buettner
2017-04-26 17:46 ` Kevin Buettner
2017-05-03 18:32 ` Kevin Buettner
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=68dac34e4303112e6c57a00ddaeaba9f@polymtl.ca \
--to=simon.marchi@polymtl.ca \
--cc=gdb-patches@sourceware.org \
--cc=kevinb@redhat.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