This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: question about target.to_stratum


What is the meaning and use of to_stratum? What is it used to represent?

The idea was that the target was made up of a number of layers and the user could move between them. For instance:


- threads
- core file
- the executable file

If gdb needed to read the target's memory, it was able to work its way down the stratum until it found one that could furnish the request. A read of the text segment, in the above, would end up being handled by the executable/file stratum.

The benefit was that the user could change stratum layers (e.g., replace "core file" with "live process") and consequently switch between conceptual targets (did that make sense?).

It turned out though, that things are more complicated than this. Instead of a few simple layers a directed graph is involved vis:

    .-< core file <- thread layer
   /
exe
   \
    `-< live process <- thread layer

Unfortunatly, the current target infrastructure isn't up to this. GDB needs to instead allow multiple active targets. Allowing multiple active threads, targets, and address spaces are all on the "things to do today list" ... On a bright note, frames, register cache and architecture were also all once on that list.

I noticed that the push_target function in target.c closes existing targets
of the same stratum.  If my user types
target <bla> after starting up, this always causes it to close the target
that I am trying to push because they both have the same stratum.



I looked at the way exec does it, and I can tell that it changes the stratum
to dummy before calling push again, but I don't see where.  How does this
work?

That I don't know.


Andrew




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]