From: Pedro Alves <pedro@codesourcery.com>
To: gdb-patches@sourceware.org
Cc: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
Subject: Re: [PING] [RFC-v3] Add windows Thread Information Block
Date: Thu, 11 Mar 2010 00:00:00 -0000 [thread overview]
Message-ID: <201003110000.31184.pedro@codesourcery.com> (raw)
In-Reply-To: <000c01cac0a0$3935fbe0$aba1f3a0$@muller@ics-cnrs.unistra.fr>
On Wednesday 10 March 2010 22:22:51, Pierre Muller wrote:
> > Sorry, I already explained long ago that TARGET_OBJECT_OSDATA
> > is being misused here.
> OK, I start to remember now,
> you said that TARGET_OBJECT_DATA should use xml syntax for
> all data transmission, what that it?
Basically repeating from
<http://sourceware.org/ml/gdb-patches/2009-07/msg00011.html>:
TARGET_OBJECT_OSDATA is meant be used through the
get_osdata interface, which assumes the target returns
xml encoded tabular form data. See gdb/osdata.c, and
the "info os" command (use and implementation). You
can try "info os processes" against linux native or
gdbserver to see it in action. The basic idea of this
object, is to be able to fetch tables of operating system
related data, like the list of running processes, or the
list of running threads, which are the present uses.
> > Why the resistence to change that?
> It's not resistance, its just that I have no xml knowledge,
> and I still don't really understand why
> xml should be required for all TARGET_OBJECT_DATA.
See above.
> > There's another bit you haven't addressed yet:
> >
> > > + if (len == 8)
> > > + {
> > > + uint64_t tlb = th->thread_local_base;
> > > + memcpy ((void *)readbuf, (void *) &tlb, len);
> > > + return len;
> > > + }
> > > + else if (len == 4)
> >
> > As I explained before, for partial xfers you should not
> > design the protocol relying on `len' being exactly 4 or 8.
> > Also, this is just transfering a number, why make that
> > target-endian dependant (see memcpy above) ?
>
> My code does assume that there is a unique call that
> will fetch either 4 bytes (for windows 32 bit inferior)
> or 8 bytes for (windows 64 bit inferior) in a unique call,
> which avoids the static struct used in the linux counter part...
> (I could have added a check that offset is zero).
>
> Anyhow, if you insist on using xml, you will need to
> help me on how to handle and extract the relevant data from
> the generated xml.
I never insisted you used xml... I do insist however,
that everything that goes through TARGET_OBJECT_OSDATA
respects the get_osdata interface, and that, is
tabular/xml based transfer of data.
Basically repeating from:
<http://sourceware.org/ml/gdb-patches/2009-07/msg00015.html>:
So, if you want to use the qxfer interface, please
add a new target object. One note: I think target object's spirit is
to transfer the whole data block, which is what would make
sense to me when requesting a TLB _object_. The reason that
makes me consider transfering the whole blob instead of an address
and then relying on plain memory reads issued from GDB,
is that on other targets that may want to reuse the
interface, the TLB-like object may not be mapped or
accessible on the address space accessible with plain memory
reads. This is exactly the rationale behind objects like
TARGET_OBJECT_AUXV, TARGET_OBJECT_WCOOKIE or
TARGET_OBJECT_SIGNAL_INFO: each of these objects can
be seen as a blob of data in its own address space.
If just transfering the address of the data is the way
to go, as you're doing presently, then I'm not certain
the xfer_partial interface is a good fit for this --- for
example, a simple packet like we use to fetch the tls data
pointer seems like a better fit. For example, a new
target_get_thread_local_block target method, and a
new "qGetTLBAddr:XXX" packet: see the "qGetTLSAddr:" packet
for inspiration.
I don't have a strong preference which of the directions
above should be followed, but, mind you, but, as I said
before, TARGET_OBJECT_OSDATA isn't the right interface for
this.
--
Pedro Alves
next prev parent reply other threads:[~2010-03-11 0:00 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-25 23:47 [RFC] " Pierre Muller
2009-06-26 7:04 ` Eli Zaretskii
2009-06-26 15:45 ` Christopher Faylor
2009-06-26 16:08 ` Pierre Muller
2009-06-26 16:11 ` Christopher Faylor
2009-06-27 16:07 ` Doug Evans
2009-06-27 17:15 ` Eli Zaretskii
2009-06-29 1:58 ` Christopher Faylor
2009-06-26 15:53 ` Daniel Jacobowitz
2009-06-26 16:11 ` Pierre Muller
2009-06-26 16:18 ` 'Daniel Jacobowitz'
2009-06-26 16:14 ` Christopher Faylor
2009-07-01 14:41 ` [RFC-v2] " Pierre Muller
2009-07-01 15:42 ` Pedro Alves
2009-07-01 16:05 ` Pedro Alves
2009-07-01 16:18 ` Pierre Muller
2009-07-01 16:26 ` Pedro Alves
2009-07-01 16:09 ` Pierre Muller
2009-07-01 16:33 ` Pedro Alves
2009-07-01 16:39 ` Pedro Alves
2009-07-01 17:18 ` Pedro Alves
2009-07-01 17:43 ` Eli Zaretskii
2009-07-01 18:04 ` Christopher Faylor
2009-07-03 16:11 ` [RFC-v3] " Pierre Muller
2009-07-03 19:43 ` Christopher Faylor
2010-03-10 17:14 ` [PING] " Pierre Muller
2010-03-10 17:26 ` Pedro Alves
2010-03-10 22:23 ` Pierre Muller
2010-03-10 23:30 ` Daniel Jacobowitz
2010-03-11 0:11 ` Pedro Alves
2010-03-11 0:00 ` Pedro Alves [this message]
2010-03-11 8:13 ` Pierre Muller
2010-03-15 21:40 ` [RFC-v4] Add windows OS " Pierre Muller
2010-03-16 0:10 ` Christopher Faylor
2010-04-01 9:41 ` [PING][RFC-v4] " Pierre Muller
2010-04-01 11:21 ` Pedro Alves
2010-04-01 12:57 ` [RFC-v5] " Pierre Muller
2010-04-01 13:21 ` Pedro Alves
2010-04-01 13:31 ` Pierre Muller
2010-04-01 13:43 ` Pedro Alves
2010-04-11 15:10 ` Pedro Alves
2010-04-12 13:52 ` [RFC-v6] " Pierre Muller
2010-04-12 16:43 ` Pedro Alves
2010-04-13 8:38 ` [RFA-v7] " Pierre Muller
2010-04-13 11:14 ` Pedro Alves
2010-04-13 13:21 ` [RFA-v8] " Pierre Muller
2010-04-13 15:06 ` Pedro Alves
2010-04-13 17:42 ` Eli Zaretskii
2010-04-15 22:54 ` [RFA-v9] Add Windows " Pierre Muller
[not found] ` <000c01cadcee$7ffcedd0$7ff6c970$%muller@ics-cnrs.unistra.fr>
2010-04-16 6:29 ` Eli Zaretskii
2010-04-16 7:53 ` Pierre Muller
2010-04-16 20:30 ` Christopher Faylor
[not found] ` <002101cac0f2$a2298890$e67c99b0$%muller@ics-cnrs.unistra.fr>
[not found] ` <000e01cac488$27dcf970$7796ec50$%muller@ics-cnrs.unistra.fr>
[not found] ` <001201cad17f$6a058980$3e109c80$%muller@ics-cnrs.unistra.fr>
2010-04-01 13:30 ` [PING][RFC-v4] Add windows " Eli Zaretskii
2010-04-01 16:17 ` Pierre Muller
[not found] ` <003c01cad1b6$d69e44b0$83dace10$%muller@ics-cnrs.unistra.fr>
2010-04-01 16:58 ` Eli Zaretskii
2010-03-10 18:48 ` [PING] [RFC-v3] Add windows " Mark Kettenis
2010-03-10 22:25 ` Pierre Muller
2010-03-11 0:24 ` Pedro Alves
2010-03-11 8:01 ` Pierre Muller
2009-09-02 15:35 ` [PING][RFC-v3] " Pierre Muller
2009-07-01 18:10 ` [RFC-v2] " Christopher Faylor
2009-07-01 18:20 ` Pedro Alves
2009-07-01 19:10 ` Christopher Faylor
2009-07-01 19:18 ` Pedro Alves
2009-07-01 21:13 ` Christopher Faylor
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=201003110000.31184.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=pierre.muller@ics-cnrs.unistra.fr \
/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