[LLVMdev] Copy function pointer contents

Calixte Denizet calixte.denizet at scilab-enterprises.com
Tue Oct 21 08:04:35 PDT 2014


Folks,

Is it safe to copy a function pointer contents from an ObjectImage ?
I made something like:

void (*fptr)() = nullptr;
llvm::object::symbol_iterator i = obj.begin_symbols();
if (!i->getType(type) && type == llvm::object::SymbolRef::ST_Function)
{
   llvm::StringRef name;
   uint64_t addr, size;
   if (!i->getName(name) && !i->getAddress(addr) && !i->getSize(size))
   {
      llvm::sys::MemoryBlock mem = llvm::sys::Memory::AllocateRWX(size, 
nullptr);
      memcpy(mem.base(), (void *)addr, size);
      fptr = reinterpret_cast<void(*)()>(mem.base());
   }
}
...

My first experiments shew that it works but I'd like to know it could 
have any side effects?
My goal is to delete a finalized module and just keep the copyed 
function (to decrease the memory use)

Best regards,

Calixte

-- 
Calixte Denizet
Software Development Engineer
-----------------------------------------------------------
Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
http://www.scilab-enterprises.com




More information about the llvm-dev mailing list