llvm-project

Форк
0
/
sanitizer_syscall_generic.inc 
39 строк · 1.1 Кб
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_APPLE || 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_APPLE)) || \
23
    (defined(__aarch64__) && SANITIZER_FREEBSD)
24
# define internal_syscall __syscall
25
# else
26
# define internal_syscall syscall
27
#endif
28

29
#endif
30

31
bool internal_iserror(uptr retval, int *rverrno) {
32
  if (retval == (uptr)-1) {
33
    if (rverrno)
34
      *rverrno = errno;
35
    return true;
36
  } else {
37
    return false;
38
  }
39
}
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.