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