fncall.c revision 7c9150579ed0278492f51cc8434b1d63a44b9bd1
1// RUN: %clang_dfsan %s -o %t && %run %t 2// RUN: %clang_dfsan -mllvm -dfsan-args-abi %s -o %t && %run %t 3 4// Tests that labels are propagated through function calls. 5 6#include <sanitizer/dfsan_interface.h> 7#include <assert.h> 8 9int f(int x) { 10 int j = 2; 11 dfsan_label j_label = dfsan_create_label("j", 0); 12 dfsan_set_label(j_label, &j, sizeof(j)); 13 return x + j; 14} 15 16int main(void) { 17 int i = 1; 18 dfsan_label i_label = dfsan_create_label("i", 0); 19 dfsan_set_label(i_label, &i, sizeof(i)); 20 21 dfsan_label ij_label = dfsan_get_label(f(i)); 22 assert(dfsan_has_label(ij_label, i_label)); 23 assert(dfsan_has_label_with_desc(ij_label, "j")); 24 25 return 0; 26} 27