Вызов функции main из исполняемого файла
У меня есть 2 программы на С: loader.c и test.c (содержит просто printf) Loader должен посредством mmap вызвать функцию main из исполняемого файла test, однако в ходе запуска программы я получаю ошибку сегментации. Никак не могу понять в чем проблема, через objdump узнал оффсет функции main.
Код loader’a
#define OFFSET 1282
int main(int argc, char** argv)
{
int fd;
int pageoffset;
int (*func)(void);
pageoffset = OFFSET % getpagesize();
fd = open("main", O_RDONLY, 0);
void* map = mmap(NULL, pageoffset, PROT_READ | PROT_EXEC, MAP_PRIVATE, fd, OFFSET);
func = map;
func();
OFFSET OBJDUMP
localhost:~/learn# objdump -D -F main | grep main
main: file format elf32-i386
00001060 <__libc_start_main@plt> (File Offset: 0x1060):
10d8: e8 83 ff ff ff call 1060 <__libc_start_main@plt> (File Offset: 0x1060)
00001282 <main> (File Offset: 0x1282):
12cf: eb f1 jmp 12c2 <main+0x40> (File Offset: 0x12c2)