[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / clang / docs / LeakSanitizer.rst
blob6858f32957ebed6596e8600ecf68c1f3201ca859
1 ================
2 LeakSanitizer
3 ================
5 .. contents::
6    :local:
8 Introduction
9 ============
11 LeakSanitizer is a run-time memory leak detector. It can be combined with
12 :doc:`AddressSanitizer` to get both memory error and leak detection, or
13 used in a stand-alone mode. LSan adds almost no performance overhead
14 until the very end of the process, at which point there is an extra leak
15 detection phase.
17 Usage
18 =====
20 :doc:`AddressSanitizer`: integrates LeakSanitizer and enables it by default on
21 supported platforms.
23 .. code-block:: console
25     $ cat memory-leak.c
26     #include <stdlib.h>
27     void *p;
28     int main() {
29       p = malloc(7);
30       p = 0; // The memory is leaked here.
31       return 0;
32     }
33     % clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out
34     ==23646==ERROR: LeakSanitizer: detected memory leaks
35     Direct leak of 7 byte(s) in 1 object(s) allocated from:
36         #0 0x4af01b in __interceptor_malloc /projects/compiler-rt/lib/asan/asan_malloc_linux.cc:52:3
37         #1 0x4da26a in main memory-leak.c:4:7
38         #2 0x7f076fd9cec4 in __libc_start_main libc-start.c:287
39     SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s).
41 To use LeakSanitizer in stand-alone mode, link your program with
42 ``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the
43 link step, so that it would link in proper LeakSanitizer run-time library
44 into the final executable.
46 Supported Platforms
47 ===================
49 * Android aarch64/i386/x86_64
50 * Fuchsia aarch64/x86_64
51 * Linux arm/aarch64/mips64/ppc64/ppc64le/riscv64/s390x/i386/x86\_64
52 * macOS aarch64/i386/x86\_64
53 * NetBSD i386/x86_64
55 More Information
56 ================
58 `<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>`_