mirror of
https://github.com/lifting-bits/mcsema
synced 2026-06-08 15:31:09 +00:00
69cb35cc16
* More broadly applies lazy xref initialization to all initializations where the xref size is less than teh value size of the xref itself (pointer size, usually). Moves initialization of lazy xrefs into a new function, __mcsema_early_init, which guards itself against multiple executions. Makes sure that __mcsema_constructor calls __mcsema_early_init first. Finally, makes sure that all native-to-lifted entrypoints call __mcsema_early_init as well, as we have observed cases where the lifted binary contains weak implementations of c++ standard library functions, and these functions are called by native libraries initialized before the call to __mcsema_constructor, thereby resulting in re-entrancy issues. * Update Function.cpp * Make sure the __mcsema_early_init guard is in the module. * Make sure the __mcsema_early_init guard is in the module. * Fixes for __gmon_start__ and stuff. * Minor fix * Adds some symbols * Minor fix for ida7 * Try to resolve things like calls through PLT thunks via xref entry lookups when a flow cross-reference is missing.