Adding to my earlier email, this issue seems to exist with other entries on the table as well. For example, i386 requires error code/ retval to be placed in ebx, and not eax. Thanks Naveen On Sun, Jun 23, 2019 at 9:03 AM Naveen Iyer <iyernaveenr@xxxxxxxxx> wrote: > > Hi, > > As suggested by > https://www.kernel.org/doc/man-pages/reporting_bugs.html , I looked up > the online man page as well: > http://man7.org/linux/man-pages/man2/syscall.2.html > > In the table in "Architecture calling conventions" section: > arch/ABI instruction syscall # retval error Notes > ──────────────────────────────────── > x86-64 syscall rax rax - [5] > > Retval must be placed in rdi as per the following link: > https://w3challs.com/syscalls/?arch=x86_64 > > I ran the test to verify that the retval is indeed supposed to be > placed in rdi, and not rax as the man page incorrectly suggests. > My man page version: > $ man --version > man 2.8.3 > > Steps to replicate this issue: > Step 1) > Write test code 'startup.c': > void _start() > { > /* > Source: $: man syscall > arch/ABI instruction syscall # retval error Notes > ──────────────────────────────────────────────────────────────────── > i386 int $0x80 eax eax - > ia64 break 0x100000 r15 r8 r10 [1] > x86-64 syscall rax rax - [5] > */ > > // Specify the return value/error code in ebx for x86 and rdi for x86_64 > asm volatile ( > "movq $97, %rdi" > ); > > // Specify the type of system call (1 is the exit syscall) in > eax register. > asm volatile ( > "movq $0x3c, %rax" > ); > > // Transition to kernel mode. > asm volatile ( > "syscall" > ); > } > > Step 2) Compile and execute: > $ gcc -nostdlib -c startup.c > $ ld startup.o -o startup > $ ./startup > $ echo $? > 97 > > My system details: > $ lsb_release -a > No LSB modules are available. > Distributor ID: Ubuntu > Description: Ubuntu 18.04.1 LTS > Release: 18.04 > Codename: bionic > > $ uname -a > Linux user 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC > 2019 x86_64 x86_64 x86_64 GNU/Linux > > Please let me know if there's anything else you need to rectify this issue. > > Thanks > Naveen > > > On Sun, Jun 23, 2019 at 8:57 AM Naveen Iyer <iyernaveenr@xxxxxxxxx> wrote: > > > > Hi, > > > > As sugegsted by https://www.kernel.org/doc/man-pages/reporting_bugs.html , I looked up the online man page as well: > > http://man7.org/linux/man-pages/man2/syscall.2.html > > > > In the table in "Architecture calling conventions" section: > > > > arch/ABI instruction syscall # retval error Notes > > ──────────────────────────────────────────────────────────────────── > > x86-64 syscall rax rax - [5] > > > > Retval must be placed in rdi as per the following link: > > https://w3challs.com/syscalls/?arch=x86_64 > > > > I personally ran the test to verify that the retval is indeed supposed to be placed in rdi, not rax. > > My man page version: > > $ man --version > > man 2.8.3 > > > > Steps to replicate this issue: > > Step 1) > > Write test code 'startup.c': > > void _start() > > { > > /* > > Source: $: man syscall > > arch/ABI instruction syscall # retval error Notes > > ──────────────────────────────────────────────────────────────────── > > i386 int $0x80 eax eax - > > ia64 break 0x100000 r15 r8 r10 [1] > > x86-64 syscall rax rax - [5] > > */ > > > > // Specify the return value/error code in ebx for x86 and rdi for x86_64 > > asm volatile ( > > "movq $97, %rdi" > > ); > > > > // Specify the type of system call (1 is the exit syscall) in eax register. > > asm volatile ( > > "movq $0x3c, %rax" > > ); > > > > // Transition to kernel mode. > > asm volatile ( > > "syscall" > > ); > > } > > > > Step 2) Compile and execute: > > $ gcc -nostdlib -c startup.c > > $ ld startup.o -o startup > > $ ./startup > > $ echo $? > > 97 > > > > My system details: > > $ lsb_release -a > > No LSB modules are available. > > Distributor ID: Ubuntu > > Description: Ubuntu 18.04.1 LTS > > Release: 18.04 > > Codename: bionic > > > > $ uname -a > > Linux user 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux > > > > Please let me know if there's anything else you need to rectify this issue. > > > > Thanks > > Naveen