On 04/26/2012 02:51 PM, Josh Stone wrote:
> FWIW, I suspect that this issue has nothing to do with SDT at all, but
> just how weird these functions are. Dyninst would probably also fail to
> instrument the entry of __longjmp, but I haven't tried that yet. I'll
> whip up a test and let you know.
Indeed, I get:
--SERIOUS-- #100: Image: Unable to find function: __longjmp
However, it does find longjmp and _longjmp, which are two aliases to the
entry point __libc_longjmp, and that's the one that calls __longjmp.
Instrumentation on that outer function does work too.
Similar story for the checked versions (via FORTIFY_SOURCE) -- dyninst
can find __longjmp_chk, but not the underlying ____longjmp_chk.
The fun part is that my SDT points found by createPointsAtAddr(), when
asked ->getFunction()->getName(), correctly answer "__longjmp" and
"____longjmp_chk". So it seems like dyninst is somewhat confused about
whether those functions exist...
Josh
|