On 12/08/2015 12:47 PM, Barton Miller wrote:
How often are these indirect vs. direct? Does it ever happen that the
indirect points to static tables of addresses, so is statically
resolvable?
Mostly they're direct; indirect ones exist in a few places in newer
glibc (and/or libstdc++) versions from what we've seen, but not at all
on a test run on RHEL6.
It's possible that the indirect ones would point to static tables of
addresses, but highly unlikely--there's no reason to encode as indirect
unless you're actually changing the potential catch block at runtime.
Haven't got data about the existence of static tables, but previously we
were recording "catch blocks" that were the addresses of the pointers,
which is IMO actively harmful. Furthermore, we know that in the cases
where there aren't static tables, we're often getting pointers in .bss,
which we obviously can't even try to follow statically (this was
producing crashes).
--bart
On 12/8/2015 11:14 AM, Bill Williams wrote:
* Exception block parsing now ignores indirect catch blocks; these
contain pointers to catch blocks and should be assumed not to be
statically resolvable.
_______________________________________________
Dyninst-api mailing list
Dyninst-api@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
|