jwasm pthread_create

Тема в разделе "WASM.BEGINNERS", создана пользователем goluzov, 13 июл 2018.

  1. goluzov

    goluzov New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2011
    Сообщения:
    20
    в коде вызываю pthread_create

    call pthread_create

    компилирую так

    JWasm.exe -elf64 -Fo=my.o my.asm
    gcc my.o -lpthread

    gcc компилирует его как shared library. получаю ошибку что надо сделать -fPIC. но такой опции нет в
    JWasm

    если удаляю pthread_create из кода то компилируется.

    extern pthread_create:near вот так обьявляю функцию в исходнике

    как я понял он реагирует на эту строку и на выходе shared library. нужен исполняемый формат не lib
     
  2. goluzov

    goluzov New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2011
    Сообщения:
    20
    вообщем я не знаю как определить фнукцию

    extern pthread_create:near так получается не правильно
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    2.748
    goluzov,
    я конечно извиняюсь, но разве в -NIX системные функции вызываются не через int 0x80 ?
     
  4. goluzov

    goluzov New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2011
    Сообщения:
    20
    да. вызываю через syscall. просто не все функции есть в ядре
     
  5. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    310
    16.04.1-Ubuntu x86 64
    cd /usr/include/asm-generic
    cat unistd.h |grep pthread # а в ответ тишина

    cat unistd.h |grep pread
    #define __NR_pread64 67
    __SC_COMP(__NR_pread64, sys_pread64, compat_sys_pread64)
    #define __NR_preadv 69
    __SC_COMP(__NR_preadv, sys_preadv, compat_sys_preadv)

    cat unistd.h |grep create
    #define __NR_epoll_create1 20
    __SYSCALL(__NR_epoll_create1, sys_epoll_create1)
    #define __NR_timerfd_create 85
    __SYSCALL(__NR_timerfd_create, sys_timerfd_create)
    #define __NR_timer_create 107
    __SC_COMP(__NR_timer_create, sys_timer_create, compat_sys_timer_create)
    #define __NR_memfd_create 279
    __SYSCALL(__NR_memfd_create, sys_memfd_create)
    #define __NR_epoll_create 1042
    __SYSCALL(__NR_epoll_create, sys_epoll_create)

    а у вас что за ось, и pthread_create какой номер соответсвтует?
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.111
    зачем юзать jwasm на линуксе в принципе? почему не устраивает ассемблер из состава GCC?
    --- Сообщение объединено, 13 апр 2019 в 00:49 ---
    и опять же, если используешь jwasm, зачем нужно использовать линкер из GCC, почему не jwlink?