Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andy Wingo <wingo@igalia.com>
To: Alexander Smundak <asmundak@google.com>
Cc: Doug Evans <dje@google.com>,  gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [RFC] [PATCH] Provide the ability to write the frame unwinder in Python
Date: Wed, 18 Mar 2015 08:54:00 -0000	[thread overview]
Message-ID: <87r3smado6.fsf@igalia.com> (raw)
In-Reply-To: <CAHQ51u4ybxem1X89G7frW-N_gZK6q3rKLunxgf+7UPzpswCfNg@mail.gmail.com>	(Alexander Smundak's message of "Tue, 17 Mar 2015 14:37:24 -0700")

On Tue 17 Mar 2015 22:37, Alexander Smundak <asmundak@google.com> writes:

> +/* The implementation of
> +   gdb.UnwindInfo.set_previous_frame_register (REG, VALUE) -> None.  */
> +
> +static PyObject *
> +unwind_infopy_set_previous_frame_register (PyObject *self, PyObject *args)
> +{
> +  unwind_info_object *unwind_info = (unwind_info_object *) self;
> +  sniffer_info_object *sniffer_info
> +      = (sniffer_info_object *) (unwind_info->sniffer_info);
> +  PyObject *pyo_reg_id;
> +  PyObject *pyo_reg_value;
> +  int regnum;
> +
> +  if (sniffer_info->frame_info == NULL)
> +    {
> +      PyErr_SetString (PyExc_ValueError,
> +                       "Attempting to read register from stale SnifferInfo");
> +      return NULL;
> +    }

Nit: we are setting the register here.

> +int
> +gdbpy_initialize_unwind (void)
> +{
> +  int rc;
> +  add_setshow_zuinteger_cmd
> +      ("py-unwind", class_maintenance, &pyuw_debug,
> +        _("Set Python unwinder debugging."),
> +        _("Show Python unwinder debugging."),
> +        _("When non-zero, Pythin unwinder debugging is enabled."),

"Python"

> +static PyMethodDef sniffer_info_object_methods[] =
> +{
> +  { "read_register", sniffer_infopy_read_register, METH_VARARGS,
> +    "read_register (REGNUM) -> gdb.Value\n"
> +    "Return the value of the REGNUM in the frame." },
> +  { "unwind_info_with_id",
> +    sniffer_infopy_unwind_info_with_id, METH_VARARGS,
> +    "unwind_info_with_id (SP, PC) -> gdb.UnwindInfo\n"
> +    "Construct UnwindInfo for this FrameData, using given SP and PC registers \n"
> +    "to identify the frame." },
> +  { "unwind_info_with_id_special",
> +    sniffer_infopy_unwind_info_with_id_special, METH_VARARGS,
> +    "unwind_info_with_id_special (SP, PC, SPECIAL) -> gdb.UnwindInfo\n"
> +    "Construct UnwindInfo for this FrameData, using given SP, PC, and SPECIAL "
> +    "registers to identify the frame." },
> +  { "unwind_info_with_id_wild",
> +    sniffer_infopy_unwind_info_with_id_wild, METH_VARARGS,
> +    "unwind_info_with_id_wild (SP) ->gdb.UnwindInfo\n"
> +    "Construct UnwindInfo for this FrameData, using given SP register to \n"
> +    "identify the frame." },
> +  {NULL}  /* Sentinel */
> +};

Still no support for register names.

> +import gdb
> +from gdb.sniffer import Sniffer
> +
> +class TestSniffer(Sniffer):

I still think it's much better to call these "unwinders".  You say that
it's the terminology that GDB uses but that's not really the case --
"sniffer" names part of the unwinder interface, which Python and Guile
implement the whole of.  You chose "unwinder" as the documentation
heading and the file name; why introduce a new term to the user?

Andy


  reply	other threads:[~2015-03-18  8:54 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-15 18:14 Alexander Smundak
2014-12-22 19:24 ` Alexander Smundak
2014-12-29 18:02   ` Alexander Smundak
2015-01-05 17:53     ` Alexander Smundak
2015-01-12 20:03       ` Alexander Smundak
2015-01-22  3:31         ` Alexander Smundak
2015-01-29  1:36           ` Alexander Smundak
2015-01-12 21:00 ` Simon Marchi
2015-01-12 21:22   ` Doug Evans
2015-02-04 22:36 ` Doug Evans
2015-02-12 17:58   ` Alexander Smundak
2015-02-19  2:32     ` Alexander Smundak
2015-02-20 11:12     ` Phil Muldoon
2015-02-26  3:09       ` Alexander Smundak
2015-03-02 22:56         ` Alexander Smundak
2015-03-03  8:46           ` Andy Wingo
2015-03-04  2:36             ` Alexander Smundak
2015-03-04  7:49               ` Andy Wingo
2015-03-09 11:02                 ` Phil Muldoon
2015-03-11  2:22                   ` Alexander Smundak
2015-03-11  8:49                     ` Andy Wingo
2015-03-11 17:34                       ` Doug Evans
2015-03-11 18:48                       ` Alexander Smundak
2015-03-16 11:29                         ` Andy Wingo
2015-03-16 12:01                           ` Andy Wingo
2015-03-16 17:25                           ` Alexander Smundak
2015-03-17  8:57                             ` Andy Wingo
2015-03-17 19:48                               ` Alexander Smundak
2015-03-17 21:37                                 ` Alexander Smundak
2015-03-18  8:54                                   ` Andy Wingo [this message]
2015-03-18 22:57                                     ` Alexander Smundak
2015-03-23 19:58                                       ` Doug Evans
2015-03-24  9:06                                         ` Andy Wingo
2015-03-26  3:31                                         ` Alexander Smundak
2015-03-26 18:53                                           ` Eli Zaretskii
2015-03-27 22:29                                           ` Doug Evans
2015-03-28  1:10                                             ` Alexander Smundak
2015-03-30 17:45                                               ` Doug Evans
2015-03-30 19:49                                                 ` Alexander Smundak
2015-03-31 22:36                                                   ` Doug Evans
2015-04-01  0:09                                                     ` Alexander Smundak
2015-04-01  0:28                                                       ` Doug Evans
2015-03-18 23:25                                 ` Doug Evans
2015-03-19  0:36                                   ` Alexander Smundak
2015-03-19  8:12                                     ` Andy Wingo
2015-03-20  0:15                                       ` Doug Evans
2015-03-20  2:27                                         ` Alexander Smundak
2015-03-20 17:48                                           ` Doug Evans
2015-03-20  8:26                                         ` Andy Wingo
2015-03-20 18:32                                           ` Doug Evans
2015-03-17 22:21                               ` Doug Evans
2015-03-18  8:57                                 ` Andy Wingo
2015-03-18 16:48                                   ` Doug Evans
2015-03-19  8:04                                     ` Andy Wingo
2015-03-09  9:42           ` Andy Wingo
2015-03-03  0:49         ` Alexander Smundak
2015-03-03 14:38           ` Andy Wingo
2015-03-04  2:52             ` Alexander Smundak
2015-02-20  9:42 ` Phil Muldoon
2015-02-20  9:59   ` Phil Muldoon

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=87r3smado6.fsf@igalia.com \
    --to=wingo@igalia.com \
    --cc=asmundak@google.com \
    --cc=dje@google.com \
    --cc=gdb-patches@sourceware.org \
    /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