global ft_read extern __errno_location section .text ft_read: mov rax, 0 ;syscall number for read, args are already set at the right place syscall cmp rax, 0 ; if return is < 0, it's an error in negative jge .success neg rax ; inv errno, and set errno mov edi, eax sub rsp, 8 call __errno_location wrt ..plt add rsp, 8 mov [rax], edi mov rax, -1 .success: ret