// RUN: %clangxx_asan -O0 %s -o %t -mllvm -asan-detect-invalid-pointer-pair // RUN: %env_asan_opts=detect_invalid_pointer_pairs=1 %run %t #include #include int foo(char *p, char *q) { return p <= q; } char global[8192] = {}; char small_global[7] = {}; int main() { // Heap allocated memory. char *p = (char *)malloc(42); int r = foo(p, NULL); free(p); p = (char *)malloc(1024); foo(NULL, p); free(p); p = (char *)malloc(4096); foo(p, NULL); free(p); // Global variable. foo(&global[0], NULL); foo(&global[1000], NULL); p = &small_global[0]; foo(p, NULL); // Stack variable. char stack[10000]; foo(&stack[0], NULL); foo(NULL, &stack[9000]); return 0; }