Commit Graph

15 Commits (e120f536ecb63745a4e003a689923084ff8a9168)

Author SHA1 Message Date
Alexander Gavrilov 896cd11fe9 Track readable names of vmethod hooks for diagnostic messages.
Note that this changes the ABI of all plugins that use hooks.
2013-08-22 12:14:45 +04:00
Alexander Gavrilov f90737e274 Add more comments to the vmethod interpose implementation. 2013-02-10 15:26:48 +04:00
Alexander Gavrilov 92a3277777 Add a MemoryPatcher class as an optimization of scattered patchMemory.
This class can cache the set of memory regions during its lifetime,
and make them writable only once. This avoids e.g. re-reading
/proc/*/maps once for every modified vtable in interpose code.
2012-10-27 21:58:40 +04:00
Alexander Gavrilov 5206236b01 Look through missing intermediate bases when interposing subclasses. 2012-10-11 15:10:19 +04:00
Petr Mrázek 8812238bf6 Update license, add contributors file, bump release number 2012-09-30 04:03:37 +02:00
Alexander Gavrilov 038d62367e Implement explicit hook priority in vmethod interpose.
This resolves a getName order conflict between power-meter and rename.
2012-09-22 13:14:06 +04:00
Alexander Gavrilov be928a9dc5 Fix a data structure integrity bug in VMethodInterposeLinkBase.
This causes assertion failure and abort later on.
2012-09-18 10:40:14 +04:00
Alexander Gavrilov e0097d8d43 Fix access to unnamed bits in bitfields, and allow hook.apply(false) 2012-09-01 11:25:24 +04:00
Alexander Gavrilov 750eefe48a Follow unconditional JMP chains in MSVC vmethod ptr detection. 2012-08-30 19:28:53 +04:00
Alexander Gavrilov b2bdc199cb Fix NULL pointer access in ~virtual_identity. 2012-08-26 22:43:18 +04:00
Alexander Gavrilov 7f1e4b46bc Implement inheritance-aware vmethod interposing.
I.e. overwriting the vmethod in all vtables that use it, not only one.
2012-08-26 14:43:14 +04:00
Alexander Gavrilov f0fc3acf87 Turn an assert in vmethod interpose code into a mandatory check and abort. 2012-08-22 18:22:59 +04:00
Quietust 985d96c596 Allow interposing the 1st vmethod 2012-08-21 15:27:29 -05:00
Alexander Gavrilov 01ba2a31fc Tweak the interpose API, and fix a couple of bugs. 2012-08-18 11:48:07 +04:00
Alexander Gavrilov 236ffd578b Add experimental support for interposing vmethods of known classes.
The hairiest bit is the abuse of compiler-specific pointer-to-member
internals in order to provide more or less transparent API.
2012-08-17 22:40:53 +04:00