110d565efSmrg//===-- sanitizer_syscall_generic.inc ---------------------------*- C++ -*-===// 210d565efSmrg// 310d565efSmrg// This file is distributed under the University of Illinois Open Source 410d565efSmrg// License. See LICENSE.TXT for details. 510d565efSmrg// 610d565efSmrg//===----------------------------------------------------------------------===// 710d565efSmrg// 8c7a68eb7Smrg// Generic implementations of internal_syscall* and internal_iserror. 910d565efSmrg// 1010d565efSmrg//===----------------------------------------------------------------------===// 1110d565efSmrg 12*0fc04c29Smrg// NetBSD uses libc calls directly 13*0fc04c29Smrg#if SANITIZER_NETBSD 1410d565efSmrg# define SYS_stat SYS___stat50 1510d565efSmrg# define SYS_lstat SYS___lstat50 1610d565efSmrg# define SYS_fstat SYS___fstat50 1710d565efSmrg# define SYS_gettimeofday SYS___gettimeofday50 1810d565efSmrg# define SYS_wait4 SYS___wait450 1910d565efSmrg# define SYS_getdents SYS___getdents30 2010d565efSmrg# define SYS_sigaltstack SYS___sigaltstack14 2110d565efSmrg# define SYS_sigprocmask SYS___sigprocmask14 2210d565efSmrg# define SYS_nanosleep SYS___nanosleep50 23*0fc04c29Smrg#else 24*0fc04c29Smrg 25*0fc04c29Smrg#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_OPENBSD || SANITIZER_SOLARIS 2610d565efSmrg# define SYSCALL(name) SYS_ ## name 2710d565efSmrg#else 2810d565efSmrg# define SYSCALL(name) __NR_ ## name 2910d565efSmrg#endif 3010d565efSmrg 31*0fc04c29Smrg#if defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC) 3210d565efSmrg# define internal_syscall __syscall 3310d565efSmrg# else 3410d565efSmrg# define internal_syscall syscall 3510d565efSmrg#endif 3610d565efSmrg 37*0fc04c29Smrg#endif 38*0fc04c29Smrg 3910d565efSmrgbool internal_iserror(uptr retval, int *rverrno) { 4010d565efSmrg if (retval == (uptr)-1) { 4110d565efSmrg if (rverrno) 4210d565efSmrg *rverrno = errno; 4310d565efSmrg return true; 4410d565efSmrg } else { 4510d565efSmrg return false; 4610d565efSmrg } 4710d565efSmrg} 48