view gcc/testsuite/c-c++-common/asan/pointer-compare-3.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

/* { dg-do run } */
/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */
/* { dg-options "-fsanitize=address,pointer-compare" } */

int foo(char *p, char *q) {
  return p <= q;
}

char global[8192] = {};
char small_global[7] = {};

int main() {
  // Heap allocated memory.
  char *p = (char *)__builtin_malloc(42);
  int r = foo(p, 0);
  __builtin_free(p);

  p = (char *)__builtin_malloc(1024);
  foo(0, p);
  __builtin_free(p);

  p = (char *)__builtin_malloc(4096);
  foo(p, 0);
  __builtin_free(p);

  // Global variable.
  foo(&global[0], 0);
  foo(&global[1000], 0);

  p = &small_global[0];
  foo(p, 0);

  // Stack variable.
  char stack[10000];
  foo(&stack[0], 0);
  foo(0, &stack[9000]);

  return 0;
}