[LLVMdev] Copy function pointer contents (original) (raw)

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