我在mmap(PROT_READ | PROT_WRITE | PROT_EXEC)ed内存区域加载ELF可执行文件(使用clang编译的准系统C hello世界),从ELF标头读取其入口地址,然后在以下位置调用代码:这样的地址:
void* bin = ...; //address of the executable in memory: bin[0:1] = 0x7f45
void* entry = bin + read_elf(bin)->entry; //casts/junk omitted, I get the correct sum of address and offset
((void (*)(void))entry)();
但是,它会出现错误14(GNU / Linux x86_64 3.13)。
应将内存页面标记为可执行文件。出了什么问题?