llvm-project

Форк
0
30 строк · 662.0 Байт
1
// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -DFORCE_ZERO_LABELS -o %t && %run %t
2
// RUN: %clang_dfsan %s -o %t && %run %t
3

4
#include <sanitizer/dfsan_interface.h>
5

6
#include <assert.h>
7

8
int function_to_force_zero(int i, int* out) {
9
  *out = i;
10
  return i;
11
}
12

13
int main(void) {
14
  int i = 1;
15
  dfsan_label i_label = 2;
16
  dfsan_set_label(i_label, &i, sizeof(i));
17

18
  int out = 0;
19
  int ret = function_to_force_zero(i, &out);
20

21
#ifdef FORCE_ZERO_LABELS
22
  assert(dfsan_get_label(out) == 0);
23
  assert(dfsan_get_label(ret) == 0);
24
#else
25
  assert(dfsan_get_label(out) == i_label);
26
  assert(dfsan_get_label(ret) == i_label);
27
#endif
28

29
  return 0;
30
}
31

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

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

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

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