• Zhangjin Wu's avatar
    tools/nolibc: fix up undeclared syscall macros with #ifdef and -ENOSYS · 2f98aca8
    Zhangjin Wu authored
    Compiling nolibc for rv32 got such errors:
    
        nolibc/sysroot/riscv/include/sys.h: In function ‘sys_gettimeofday’:
        nolibc/sysroot/riscv/include/sys.h:557:21: error: ‘__NR_gettimeofday’ undeclared (first use in this function); did you mean ‘sys_gettimeofday’?
          557 |  return my_syscall2(__NR_gettimeofday, tv, tz);
              |                     ^~~~~~~~~~~~~~~~~
        nolibc/sysroot/riscv/include/sys.h: In function ‘sys_lseek’:
        nolibc/sysroot/riscv/include/sys.h:675:21: error: ‘__NR_lseek’ undeclared (first use in this function)
          675 |  return my_syscall3(__NR_lseek, fd, offset, whence);
              |                     ^~~~~~~~~~
        nolibc/sysroot/riscv/include/sys.h: In function ‘sys_wait4’:
        nolibc/sysroot/riscv/include/sys.h:1341:21: error: ‘__NR_wait4’ undeclared (first use in this function)
         1341 |  return my_syscall4(__NR_wait4, pid, status, options, rusage);
    
    If a syscall macro is not supported by a target platform, wrap it with
    '#ifdef' and 'return -ENOSYS' for the '#else' branch, which lets the
    other syscalls work as-is and allows developers to fix up the test
    failures reported by nolibc-test one by one later.
    
    This wraps all of the failed syscall macros with '#ifdef' and 'return
    -ENOSYS' for the '#else' branch, so, all of the undeclared failures are
    fixed.
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/linux-riscv/5e7d2adf-e96f-41ca-a4c6-5c87a25d4c9c@app.fastmail.com/Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarZhangjin Wu <falcon@tinylab.org>
    Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
    2f98aca8
sys.h 25.6 KB