On Wed, 14 Apr 2021, Jonas Maebe via fpc-devel wrote:
On 14/04/2021 17:49, Alfred via fpc-devel wrote:
The mORMot[1] sources could give you some info.
During runtime, it patches the exe-memory to redirect function calls.
Hard part was to get around the W^X memory protection on some BSD's.
Look at:
procedure PatchCode(Old,New: pointer; Size: integer; Backup: pointer;
inside SynCommons.pas
function TInterfaceFactory.GetMethodsVirtualTable: pointer;
inside mORMot.pas
Please don't use that kind of hacks. It also breaks in case WPO is used
and some calls get devirtualised at compile time.
This is mORMot. It consists solely of hacks :)
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel