On 05/13/14 02:38, Ilya Enkovich wrote:
propagate constant bounds value and remove checks in called function).

So from a linking standpoint, presumably you have to mangle the instrumented
caller/callee in some manner.  Right?  Or are you dynamically dispatching
somehow?

Originally the idea was o have instrumented clone to have the same
assembler name as the original function. Since instrumented code is
fully compatible with not instrumented code, we always emit only one
version. Usage of the same assembler name allows instrumented and not
instrumented calls to look similar in assembler. It worked fine until
I tried it with LTO where assembler name is used as a unique
identifier. With linker resolutions files it became even more harder
to use such approach. To resolve these issues I started to use new
assembler name with postfix, but linked with the original name using
IDENTIFIER_TRANSPARENT_ALIAS. It gives different assembler names for
clones and originals during compilation, but both clone and original
functions have similar name in output assembler.
OK. So if I read that correctly, it implies that the existence of bounds information does not change the signature of the callee. This is obviously important for C++.

Sounds like I need to sit down with the branch and see how this works in the new scheme.

jeff

Reply via email to