diff options
author | James Bottomley <James dot Bottomley at HansenPartnership dot com> | 2008-07-14 16:49:00 -0500 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-07-15 18:56:30 -0400 |
commit | 3e961ba66a8250310a1ea67cddb52d92469a6d4b (patch) | |
tree | c4dea79555646192405f84ac7a4306861f148014 /runtime/sym.h | |
parent | cf74051352b34ad1242b4eeee5dacb0caa92b3a8 (diff) | |
download | systemtap-steved-3e961ba66a8250310a1ea67cddb52d92469a6d4b.tar.gz systemtap-steved-3e961ba66a8250310a1ea67cddb52d92469a6d4b.tar.xz systemtap-steved-3e961ba66a8250310a1ea67cddb52d92469a6d4b.zip |
fix missing functions in caches
Both the inline and non inline filtered function caches can lose
functions. This happens because both of these caches are indexed by the
entrypc. However, the vagaries of optimisation can actually cause us to
end up with two functions with apparently the same entrypc (mainly
because for inline functions, the entrypc has to be deduced from the
range of addresses, which is nastily heuristic).
A nice example of this is bsg_io_schedule. In my build of 2.6.26 it's a
static function transformed to an inline by the compiler. The range
deduction of its entrypc ends up being identical to that of bsg_release,
so when I try to place a probe inside it, none of the function
references actually refers to it.
Since nothing ever actually makes use of this index, the fix is simple:
don't use a map indexed on the entrypc, use a simple vector.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'runtime/sym.h')
0 files changed, 0 insertions, 0 deletions