[Pdbg] [PATCH v4 09/30] libpdbg: Add a function to map real target to virtual

Alistair Popple alistair at popple.id.au
Wed Oct 9 15:04:12 AEDT 2019


> > > 
> > > Similar argument as above.  Some virtual nodes may not have any
> > > linked
> > > real nodes.  In that case, target_to_real() will return the same
> > > virtual target. (For example, "/proc0" is a virtual target without
> > > any
> > > real target linked to it.)
> > > 
> > 
> > So in these cases are we asserting that if we fail to map a node to
> > a 
> > [virtual|real] node that it is still correct to continue on treating
> > the 
> > original node as if it were of the requested type?
> 
> 
> Well the motivation behind target_to_real() and target_to_virtual() is
> adding convinience functions that help improve the readability of the
> traverse code where they are used.  As I described they are not
> strictly converting to real/virtual targets, but if possible map it to
> the right target.
> 
> I can add some comments for these functions if that would help. 

Yeah, I think some comments pointing this out would be helpful as in six 
months time at least I will have forgotten this when it comes time to use them 
:-)

> > 
> > > > Do you think it be would be worthwhile adding some asserts to
> > > > check
> > > > this or 
> > > > does the probing code (which I'm yet to read) somehow guarantee
> > > > those 
> > > > assertions are always correct?
> > > 
> > > I think the tests which focus on the traverse will ensure the
> > > correctness of map functions.  We don't specifically need testing
> > > for
> > > the lower level functions.  Also, these functions are internal to
> > > libpdbg and I would have to jump through hoops to test them. :-
> > > )  But
> > > not impossible to add tests if you strongly feel about it.
> > 
> > It wasn't so much for testing but rather to ensure we crash and burn
> > as early 
> > as possible if something unexpected (ie. buggy) is observed. However
> > it seems 
> > my original assertions were wrong anyway.
> 
> I have added assertions where we expect a virtual target.
> > 
> > - Alistair
> > 
> > > > - Alistair
> > > > 
> > > > On Thursday, 3 October 2019 2:18:48 PM AEDT Amitay Isaacs wrote:
> > > > > Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> > > > > ---
> > > > >  libpdbg/target.c | 8 ++++++++
> > > > >  libpdbg/target.h | 1 +
> > > > >  2 files changed, 9 insertions(+)
> > > > > 
> > > > > diff --git a/libpdbg/target.c b/libpdbg/target.c
> > > > > index 20f292f..f3d4db8 100644
> > > > > --- a/libpdbg/target.c
> > > > > +++ b/libpdbg/target.c
> > > > > @@ -481,3 +481,11 @@ struct pdbg_target *target_to_real(struct
> > > > > pdbg_target 
> > > > *target)
> > > > >  
> > > > >  	return target;
> > > > >  }
> > > > > +
> > > > > +struct pdbg_target *target_to_virtual(struct pdbg_target
> > > > > *target)
> > > > > +{
> > > > > +	if (target->compatible && target->vnode)
> > > > > +		return target->vnode;
> > > > > +
> > > > > +	return target;
> > > > > +}
> > > > > diff --git a/libpdbg/target.h b/libpdbg/target.h
> > > > > index 5d04117..8148f83 100644
> > > > > --- a/libpdbg/target.h
> > > > > +++ b/libpdbg/target.h
> > > > > @@ -66,5 +66,6 @@ const char *pdbg_get_backend_option(void);
> > > > >  struct sbefifo *pib_to_sbefifo(struct pdbg_target *target);
> > > > >  bool target_is_virtual(struct pdbg_target *target);
> > > > >  struct pdbg_target *target_to_real(struct pdbg_target
> > > > > *target);
> > > > > +struct pdbg_target *target_to_virtual(struct pdbg_target
> > > > > *target);
> > > > >  
> > > > >  #endif
> > > > > 
> > > > 
> > > > 
> > > 
> > > Amitay.
> > > 
> > 
> > 
> > 
> 
> Amitay.
> 






More information about the Pdbg mailing list