//===-- sanitizer_syscall_generic.inc ---------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Generic implementations of internal_syscall* and internal_iserror.
//
//===----------------------------------------------------------------------===//

#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_NETBSD || \
  SANITIZER_OPENBSD || SANITIZER_SOLARIS
# define SYSCALL(name) SYS_ ## name
#else
# define SYSCALL(name) __NR_ ## name
#endif

#if SANITIZER_NETBSD
// We use 3 kinds of internal_syscall's for different types of retval in order
// to address differences in calling conventions (e.g. registers to place the
// return value in).
//   - internal_syscall     for 32-bit length (int, pid_t)
//   - internal_syscall64   for 64-bit length (off_t)
//   - internal_syscall_ptr for pointer and (s)size_t
# define  internal_syscall      syscall
# define  internal_syscall64    __syscall
// Handle syscall renames manually
# define SYS_stat SYS___stat50
# define SYS_lstat SYS___lstat50
# define SYS_fstat SYS___fstat50
# define SYS_gettimeofday SYS___gettimeofday50
# define SYS_wait4 SYS___wait450
# define SYS_getdents SYS___getdents30
# define SYS_sigaltstack SYS___sigaltstack14
# define SYS_sigprocmask SYS___sigprocmask14
# define SYS_nanosleep SYS___nanosleep50
# define SYS_clock_gettime SYS___clock_gettime50
# if SANITIZER_WORDSIZE == 64
#  define internal_syscall_ptr  __syscall
# else
#  define internal_syscall_ptr  syscall
# endif
#elif defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC)
# define internal_syscall __syscall
# define internal_syscall64 __syscall
# define internal_syscall_ptr __syscall
# else
# define internal_syscall syscall
# define internal_syscall64 syscall
# define internal_syscall_ptr syscall
#endif

bool internal_iserror(uptr retval, int *rverrno) {
  if (retval == (uptr)-1) {
    if (rverrno)
      *rverrno = errno;
    return true;
  } else {
    return false;
  }
}
