static int foo(void)
{
extern int _start();
return _start();
}
.text
.globl _start
_start:
movq $60, %rax
xor %rdi, %rdi
syscall
as --64 -o asm.o asm.s && gcc -c -fpic my.c -o my.o && gcc -shared -o lib.so my.o asm.o
и нужно ли это делать в чистом Си?
foo
хмм.. её не кто не вызывает, удалю её нафиг из кода. Программа запускается, но ничего не происходит.
Код результата выполнения получить.
movq $60, %rax
xor %rdi, %rdi
movq $231, %rax
movq $1, %rdi
это sys_epoll_wait?
strace ls
Как запустить?
strace -if -o log <команда для запуска твоего приложения>
нет такого вызова.
movq $231, %rax
movq $1, %rdi
Что тут ещё можно посоветовать.
Unable to find an entry point named 'foo' in shared library 'lib.so'.
static int foo(void)
.код C, использующий код на ассемблере без инлайна?