public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: "Willgerodt, Felix" <felix.willgerodt@intel.com>
To: "Metzger, Markus T" <markus.t.metzger@intel.com>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	"simark@simark.ca" <simark@simark.ca>
Subject: RE: [PATCH v10 05/10] python: Introduce gdb.RecordAuxiliary class.
Date: Mon, 7 Aug 2023 09:08:09 +0000	[thread overview]
Message-ID: <MN2PR11MB456638A6DAFB15D39F0D39478E0CA@MN2PR11MB4566.namprd11.prod.outlook.com> (raw)
In-Reply-To: <DM8PR11MB574916297F01761814958EDFDE03A@DM8PR11MB5749.namprd11.prod.outlook.com>

> -----Original Message-----
> From: Metzger, Markus T <markus.t.metzger@intel.com>
> Sent: Dienstag, 25. Juli 2023 15:30
> To: Willgerodt, Felix <felix.willgerodt@intel.com>; gdb-patches@sourceware.org;
> simark@simark.ca
> Subject: RE: [PATCH v10 05/10] python: Introduce gdb.RecordAuxiliary class.
> 
> Hello Felix,
> 
> >-  btrace_find_insn_by_number (&iter, &tinfo->btrace, number);
> >+  if (btrace_find_insn_by_number (&iter, &tinfo->btrace, number) == 0)
> 
> Nit: how about storing the result in a local variable to avoid side-effects
> in the if expression?

What side effects do you have in mind? I checked the function and couldn't find
any. And I just copied this from the existing btrace_insn_from_recpy_insn.

> >+  if (Py_TYPE (self) != &recpy_aux_type)
> >+    {
> >+      PyErr_Format (gdbpy_gdb_error, _("Must be a gdb.Auxiliary."));
> >+      return NULL;
> >+    }
> >+
> >+  obj = (const recpy_element_object *) self;
> >+  tinfo = obj->thread;
> >+
> >+  if (tinfo == NULL || btrace_is_empty (tinfo))
> >+    {
> >+      PyErr_Format (gdbpy_gdb_error, _("No such auxiliary object."));
> >+      return NULL;
> >+    }
> >+
> >+  if (btrace_find_insn_by_number (&iter, &tinfo->btrace, obj->number) == 0)
> >+    {
> >+      PyErr_Format (gdbpy_gdb_error, _("No such auxiliary object."));
> >+      return NULL;
> >+    }
> >+
> >+  insn = btrace_insn_get (&iter);
> >+  if (insn == NULL)
> >+    {
> >+      PyErr_Format (gdbpy_gdb_error, _("Not a valid auxiliary object."));
> >+      return NULL;
> >+    }
> >+
> >+  return PyUnicode_FromString
> >+    (iter.btinfo->aux_data.at (insn->aux_data_index).c_str ());
> 
> Shouldn't we check the insn class, too?

We checked the python object type above already.
So this would only catch cases in which something went horribly wrong
and the python trace doesn't match the internal trace.
I think right now that can never be the case, but it might be a good
sanity check, so I will add it.

> 
> >@@ -455,10 +511,10 @@ btpy_list_item (PyObject *self, Py_ssize_t index)
> >
> >   number = obj->first + (obj->step * index);
> >
> >-  if (obj->element_type == &recpy_insn_type)
> >-    return recpy_insn_new (obj->thread, RECORD_METHOD_BTRACE, number);
> >-  else
> >+  if (obj->element_type == &recpy_func_type)
> >     return recpy_func_new (obj->thread, RECORD_METHOD_BTRACE, number);
> >+  else
> >+    return btpy_item_new (obj->thread, number);
> > }
> 
> Why do we need to change the order?

Because we no longer call recpy_insn_new only for recpy_insn_type but also for
recpy_aux_type.

Regards,
Felix

 


Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2023-08-07  9:08 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-18 11:56 [PATCH v10 00/10] Extensions for PTWRITE Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 01/10] btrace: Introduce auxiliary instructions Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 02/10] btrace: Enable auxiliary instructions in record instruction-history Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 03/10] btrace: Enable auxiliary instructions in record function-call-history Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 04/10] btrace: Handle stepping and goto for auxiliary instructions Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 05/10] python: Introduce gdb.RecordAuxiliary class Felix Willgerodt
2023-07-25 13:30   ` Metzger, Markus T
2023-08-07  9:08     ` Willgerodt, Felix [this message]
2023-08-08  9:37       ` Metzger, Markus T
2023-08-09  9:32         ` Willgerodt, Felix
2023-08-09 10:00           ` Metzger, Markus T
2023-08-30  8:39             ` Willgerodt, Felix
2023-07-18 11:56 ` [PATCH v10 06/10] python: Add clear() to gdb.Record Felix Willgerodt
2023-07-18 13:00   ` Eli Zaretskii
2023-07-18 11:56 ` [PATCH v10 07/10] btrace, gdbserver: Add ptwrite to btrace_config_pt Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 08/10] btrace, linux: Enable ptwrite packets Felix Willgerodt
2023-07-25 13:30   ` Metzger, Markus T
2023-08-07  9:10     ` Willgerodt, Felix
2023-08-08 10:13       ` Metzger, Markus T
2023-08-09  9:31         ` Willgerodt, Felix
2023-08-09  9:48           ` Metzger, Markus T
2023-08-30  8:42             ` Willgerodt, Felix
2023-09-06 14:07               ` Metzger, Markus T
2023-07-18 11:56 ` [PATCH v10 09/10] btrace, python: Enable ptwrite filter registration Felix Willgerodt
2023-07-18 11:56 ` [PATCH v10 10/10] btrace: Extend ptwrite event decoding Felix Willgerodt
2023-07-18 13:01   ` Eli Zaretskii

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=MN2PR11MB456638A6DAFB15D39F0D39478E0CA@MN2PR11MB4566.namprd11.prod.outlook.com \
    --to=felix.willgerodt@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=markus.t.metzger@intel.com \
    --cc=simark@simark.ca \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).