This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils 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: Make dwfl_addrsegment and friends set error


Hmm.  In the various lookup calls (some dwarf_* calls too), I don't think
"nothing found" is really an error.  Since the error codes are not defined
in the API, 0 is the only code specifically known to callers.  So I think
the status quo might be better, because it's the only way for a caller to
distinguish "just not found" vs "some unusual error". i.e.:

	int error = dwfl_errno (); // clears thread variable
	if (error)
		... dwfl_errmsg (error) ...
	else
		no error, just no match

IMHO in dwfl_addrmodule I expect "just no match" to be a "normal"
situation, because you'd pass some random address to it to find out if it's
a code address vs a heap/stack/etc address.  If there is some error in the
DWARF, you want to barf with whatever dwfl_errmsg says.  If it is just a
heap/stack/etc address, you want to just know that there was no match.

I agree that this interface style is somewhat awkward, but it's what we've
got already in libdw.  In the long run, I think you'll instead be using
proper C++ interfaces that will only return values for match/no-match and
will instead throw exceptions for real errors.


Thanks,
Roland


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