Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Metzger, Markus T" <markus.t.metzger@intel.com>
To: Yao Qi <qiyaoltc@gmail.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	"Wiederhake, Tim" <tim.wiederhake@intel.com>,
	"xdje42@gmail.com" <xdje42@gmail.com>,
	"Joel Brobecker" <brobecker@adacore.com>
Subject: RE: GDB 8.0 release/branching 2017-03-20 update
Date: Mon, 27 Mar 2017 12:46:00 -0000	[thread overview]
Message-ID: <A78C989F6D9628469189715575E55B2340072D17@IRSMSX104.ger.corp.intel.com> (raw)
In-Reply-To: <86wpbbnf1f.fsf@gmail.com>

Hello Yao,

> > Instruction would have to be an abstract class.  Then we could have two
> > derived classes DisassembleInstruction for the disassemble command
> > that likely wants to store the pc and maybe the inferior id - or even the
> > disassembled string.
> > And we have Record(Btrace)Instruction that wants to store the ptid
> > and the number in the recorded instruction-history.
> 
> Instruction doesn't have to be an abstract class, instead, it can be a
> base class which has attribute pc, data, and disassembled string.  All
> of them can be used in Record(Btrace)Instruction too, but "data" and
> "disassembled string" can be got lazily.  Record(Btrace)Instruction
> extends Instruction, and add its own stuff.  In the future, we can add
> new RecordFooInstruction, extends Instruction, and add its own stuff too.

RecordInstruction wants to store ptid and insn# and compute pc, data, and
disassembled string from those.  It may need to read memory from binaries
that have already been unmapped.  But we only want to read memory if we
really have to, so we can't just store the memory in the Instruction object.

DisassembleInstruction can't use ptid and insn# since insn# doesn't mean
anything outside of record targets.  It will need to store different information
from which it can compute pc, data, and the disassembled string.

While they provide the same interface (i.e. member functions) to the user, they
store different information internally and they use different algorithms.  In C++
I would model this with an abstract base class.  How would one model this in Python?


> > What won't work is that we simply extend an Instruction base class by
> > adding new functions and data members.  We need to overwrite every
> > function in the base class and each derived class will provide its own set
> > of data members to work on.
> 
> I don't expect the change like that.

I didn't understand your comment.  Would you please rephrase it?

Thanks,
Markus.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928

  reply	other threads:[~2017-03-27 12:46 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-20 20:16 Joel Brobecker
2017-03-20 20:21 ` Keith Seitz
2017-03-20 22:39 ` Yao Qi
2017-03-20 22:47   ` Yao Qi
2017-03-20 22:52   ` Joel Brobecker
2017-03-20 23:03     ` Yao Qi
2017-03-21 13:28       ` Joel Brobecker
2017-03-21  7:35     ` Wiederhake, Tim
2017-03-21 13:28       ` Joel Brobecker
2017-03-21 13:07   ` Yao Qi
2017-03-21 13:31     ` Joel Brobecker
2017-03-22 13:58     ` Metzger, Markus T
2017-03-22 17:09       ` Yao Qi
2017-03-23 16:01         ` Metzger, Markus T
2017-03-23 17:25           ` Yao Qi
2017-03-23 18:17             ` Metzger, Markus T
2017-03-24 14:41               ` Yao Qi
2017-03-27 10:51                 ` Metzger, Markus T
2017-03-27 11:19                   ` Yao Qi
2017-03-27 12:46                     ` Metzger, Markus T [this message]
2017-03-27 16:03                       ` Yao Qi
2017-03-28  7:16                         ` Metzger, Markus T
2017-03-28 13:25                           ` Yao Qi
2017-03-28 15:08                             ` Metzger, Markus T
2017-03-28 15:49                               ` Yao Qi
2017-03-29  6:08                                 ` Metzger, Markus T
     [not found]                                   ` <861stgo072.fsf@gmail.com>
2017-03-29 14:38                                     ` Metzger, Markus T
2017-03-30 10:50                                       ` Yao Qi
2017-03-30 11:58                                         ` Metzger, Markus T
     [not found]                                           ` <86h92a4w86.fsf@gmail.com>
2017-03-30 15:55                                             ` Metzger, Markus T
2017-03-31 13:55                                               ` Yao Qi
2017-03-31 15:21                                                 ` Metzger, Markus T
2017-03-31 16:02                                                   ` Joel Brobecker
2017-04-06 14:40                                                     ` Wiederhake, Tim
2017-04-07  8:10                                                       ` Yao Qi
2017-04-07 11:53                                                         ` Wiederhake, Tim
2017-04-07 15:19                                                           ` Yao Qi
2017-03-21 14:00 ` Yao Qi
2017-03-21 14:03   ` Pedro Alves
2017-03-27 13:35 ` Antoine Tremblay

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=A78C989F6D9628469189715575E55B2340072D17@IRSMSX104.ger.corp.intel.com \
    --to=markus.t.metzger@intel.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=qiyaoltc@gmail.com \
    --cc=tim.wiederhake@intel.com \
    --cc=xdje42@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