1//===-- sanitizer_syscall_generic.inc ---------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// Generic implementations of internal_syscall* and internal_iserror. 10// 11//===----------------------------------------------------------------------===// 12 13// NetBSD uses libc calls directly 14#if !SANITIZER_NETBSD 15 16#if SANITIZER_FREEBSD || SANITIZER_MAC || SANITIZER_OPENBSD || SANITIZER_SOLARIS 17# define SYSCALL(name) SYS_ ## name 18#else 19# define SYSCALL(name) __NR_ ## name 20#endif 21 22#if defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_MAC) 23# define internal_syscall __syscall 24# else 25# define internal_syscall syscall 26#endif 27 28#endif 29 30bool internal_iserror(uptr retval, int *rverrno) { 31 if (retval == (uptr)-1) { 32 if (rverrno) 33 *rverrno = errno; 34 return true; 35 } else { 36 return false; 37 } 38} 39