Вызов функции 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)

Ответы (0 шт):