ignore_object.cc revision 2d1fdb26e458c4ddc04155c1d421bced3ba90cd0
167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// Test for __lsan_ignore_object().
267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// RUN: LSAN_BASE="report_objects=1:use_registers=0:use_stacks=0:use_globals=0:use_tls=0:verbosity=2"
367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// RUN: %clangxx_lsan %s -o %t
467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// RUN: LSAN_OPTIONS=$LSAN_BASE ASAN_OPTIONS=$ASAN_OPTIONS:"verbosity=2" not %run %t 2>&1 | FileCheck %s
567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#include <stdio.h>
767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#include <stdlib.h>
867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe#include "sanitizer/lsan_interface.h"
1067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe
1167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboeint main() {
1267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  // Explicitly ignored object.
1367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  void **p = new void *;
1467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  // Transitively ignored object.
1567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  *p = malloc(666);
1667bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  // Non-ignored object.
1767bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  volatile void *q = malloc(1337);
1867bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  fprintf(stderr, "Test alloc: %p.\n", p);
1967bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  __lsan_ignore_object(p);
2067bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe  return 0;
2167bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe}
2267bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: Test alloc: [[ADDR:.*]].
2367bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: ignoring heap object at [[ADDR]]
2467bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe// CHECK: SUMMARY: {{(Leak|Address)}}Sanitizer: 1337 byte(s) leaked in 1 allocation(s)
2567bf982340d95ca98098ea050b54b4c7adb116c0Jens Axboe