// stub with:
// ldr pc, [pc,#-4]
// <addr>
// stub with:
// ldr pc, [pc,#-4]
// <addr>
bool ok = sys::Memory::setRangeWritable ((void*)StubAddr, 8);
if (!ok)
{
cerr << "ERROR: Unable to mark stub writable\n";
abort();
}
bool ok = sys::Memory::setRangeWritable ((void*)StubAddr, 8);
if (!ok)
{
cerr << "ERROR: Unable to mark stub writable\n";
abort();
}
*(intptr_t *)StubAddr = 0xe51ff004;
*(intptr_t *)(StubAddr+4) = NewVal;
*(intptr_t *)StubAddr = 0xe51ff004;
*(intptr_t *)(StubAddr+4) = NewVal;
ok = sys::Memory::setRangeExecutable ((void*)StubAddr, 8);
if (!ok)
{
cerr << "ERROR: Unable to mark stub executable\n";
abort();
}
ok = sys::Memory::setRangeExecutable ((void*)StubAddr, 8);
if (!ok)
{
cerr << "ERROR: Unable to mark stub executable\n";
abort();
}
}
TargetJITInfo::LazyResolverFn
}
TargetJITInfo::LazyResolverFn