1// RUN: %clangxx_lsan %s -o %t
2// The globs below do not work in the lit shell.
3
4// Regular run.
5// RUN: %env_lsan_opts="use_stacks=0" not %run %t > %t.out 2>&1
6// RUN: FileCheck %s --check-prefix=CHECK-ERROR < %t.out
7
8// Good log_path.
9// RUN: rm -f %t.log.* %t.log
10// RUN: %adb_shell 'rm -f %t.log.*'
11// RUN: %env_lsan_opts="use_stacks=0:log_path='"%device_rundir/%t.log"'" not %run %t > %t.out 2>&1
12// adb-pull doesn't support wild cards so we need to rename the log file.
13// RUN: cat %device_rundir/%t.log.* >> %t.log
14// RUN: %adb_shell 'cat %device_rundir/%t.log.*' >> %t.log
15// RUN: FileCheck %s --check-prefix=CHECK-ERROR < %t.log.*
16
17#include <stdio.h>
18#include <stdlib.h>
19#include "sanitizer_common/print_address.h"
20
21int main() {
22 void *stack_var = malloc(size: 1337);
23 print_address("Test alloc: ", 1, stack_var);
24 // Do not return from main to prevent the pointer from going out of scope.
25 exit(status: 0);
26}
27
28// CHECK-ERROR: LeakSanitizer: detected memory leaks
29// CHECK-ERROR: Direct leak of 1337 byte(s) in 1 object(s) allocated from
30// CHECK-ERROR: SUMMARY: {{.*}}Sanitizer:
31

source code of compiler-rt/test/lsan/TestCases/Linux/log-path_test.cpp