4 ms·
https://john-millikin.com/unix-syscalls#darwin https://john-millikin.com/unix-syscalls#darwin is a small, "hello world" example.
by jmillikin 6y ago
https://john-millikin.com/unix-syscalls#darwin https://john-millikin.com/unix-syscalls#darwin is a small, "hello world" example.
- saagarjha 6y ago> Note that I have left out the instructions to statically link binaries because they are documented as unsupported That's a bit annoying, especially since you're already using raw syscall numbers anyways. Here's how to make it static: .intel_syntax noprefix #include <sys/syscall.h> #define UNIX_SYSCALL 0x2000000 .globl start start: mov rax, UNIX_SYSCALL | SYS_write mov rdi, 1 lea rsi, text[rip] lea rdx, length syscall mov rax, UNIX_SYSCALL | SYS_exit xor rdi, rdi syscall text: .asciz "Hello, world!\n" .equ length, . - text Compile that with clang -static -nostdlib.
- jmillikin 6y agoYou don't have to change the source or compile with `clang` -- switching the LD command to: ld -arch x86_64 -o hello hello.o -macosx_version_min 10.8 -static -e _main is sufficient if you're determined to violate the OS vendor's compatibility requirements.
- saagarjha 6y agoThat works too, but I'm lazy :P