head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC4:1.1.1.7
	netbsd-11-0-RC3:1.1.1.7
	netbsd-11-0-RC2:1.1.1.7
	netbsd-11-0-RC1:1.1.1.7
	perseant-exfatfs-base-20250801:1.1.1.7
	netbsd-11:1.1.1.7.0.10
	netbsd-11-base:1.1.1.7
	netbsd-10-1-RELEASE:1.1.1.7
	perseant-exfatfs-base-20240630:1.1.1.7
	perseant-exfatfs:1.1.1.7.0.8
	perseant-exfatfs-base:1.1.1.7
	netbsd-8-3-RELEASE:1.1.1.5
	netbsd-9-4-RELEASE:1.1.1.6
	netbsd-10-0-RELEASE:1.1.1.7
	netbsd-10-0-RC6:1.1.1.7
	netbsd-10-0-RC5:1.1.1.7
	netbsd-10-0-RC4:1.1.1.7
	netbsd-10-0-RC3:1.1.1.7
	netbsd-10-0-RC2:1.1.1.7
	netbsd-10-0-RC1:1.1.1.7
	netbsd-10:1.1.1.7.0.6
	netbsd-10-base:1.1.1.7
	netbsd-9-3-RELEASE:1.1.1.6
	cjep_sun2x:1.1.1.7.0.4
	cjep_sun2x-base:1.1.1.7
	cjep_staticlib_x-base1:1.1.1.7
	netbsd-9-2-RELEASE:1.1.1.6
	cjep_staticlib_x:1.1.1.7.0.2
	cjep_staticlib_x-base:1.1.1.7
	netbsd-9-1-RELEASE:1.1.1.6
	phil-wifi-20200421:1.1.1.7
	phil-wifi-20200411:1.1.1.7
	phil-wifi-20200406:1.1.1.7
	netbsd-8-2-RELEASE:1.1.1.5
	netbsd-9-0-RELEASE:1.1.1.6
	netbsd-9-0-RC2:1.1.1.6
	netbsd-9-0-RC1:1.1.1.6
	netbsd-9:1.1.1.6.0.2
	netbsd-9-base:1.1.1.6
	phil-wifi-20190609:1.1.1.6
	netbsd-8-1-RELEASE:1.1.1.5
	netbsd-8-1-RC1:1.1.1.5
	pgoyette-compat-merge-20190127:1.1.1.5.12.1
	pgoyette-compat-20190127:1.1.1.6
	pgoyette-compat-20190118:1.1.1.6
	pgoyette-compat-1226:1.1.1.6
	pgoyette-compat-1126:1.1.1.6
	pgoyette-compat-1020:1.1.1.6
	pgoyette-compat-0930:1.1.1.6
	pgoyette-compat-0906:1.1.1.6
	netbsd-7-2-RELEASE:1.1.1.3
	pgoyette-compat-0728:1.1.1.6
	clang-337282:1.1.1.6
	netbsd-8-0-RELEASE:1.1.1.5
	phil-wifi:1.1.1.5.0.14
	phil-wifi-base:1.1.1.5
	pgoyette-compat-0625:1.1.1.5
	netbsd-8-0-RC2:1.1.1.5
	pgoyette-compat-0521:1.1.1.5
	pgoyette-compat-0502:1.1.1.5
	pgoyette-compat-0422:1.1.1.5
	netbsd-8-0-RC1:1.1.1.5
	pgoyette-compat-0415:1.1.1.5
	pgoyette-compat-0407:1.1.1.5
	pgoyette-compat-0330:1.1.1.5
	pgoyette-compat-0322:1.1.1.5
	pgoyette-compat-0315:1.1.1.5
	netbsd-7-1-2-RELEASE:1.1.1.3
	pgoyette-compat:1.1.1.5.0.12
	pgoyette-compat-base:1.1.1.5
	netbsd-7-1-1-RELEASE:1.1.1.3
	clang-319952:1.1.1.5
	matt-nb8-mediatek:1.1.1.5.0.10
	matt-nb8-mediatek-base:1.1.1.5
	clang-309604:1.1.1.5
	perseant-stdc-iso10646:1.1.1.5.0.8
	perseant-stdc-iso10646-base:1.1.1.5
	netbsd-8:1.1.1.5.0.6
	netbsd-8-base:1.1.1.5
	prg-localcount2-base3:1.1.1.5
	prg-localcount2-base2:1.1.1.5
	prg-localcount2-base1:1.1.1.5
	prg-localcount2:1.1.1.5.0.4
	prg-localcount2-base:1.1.1.5
	pgoyette-localcount-20170426:1.1.1.5
	bouyer-socketcan-base1:1.1.1.5
	pgoyette-localcount-20170320:1.1.1.5
	netbsd-7-1:1.1.1.3.0.14
	netbsd-7-1-RELEASE:1.1.1.3
	netbsd-7-1-RC2:1.1.1.3
	clang-294123:1.1.1.5
	netbsd-7-nhusb-base-20170116:1.1.1.3
	bouyer-socketcan:1.1.1.5.0.2
	bouyer-socketcan-base:1.1.1.5
	clang-291444:1.1.1.5
	pgoyette-localcount-20170107:1.1.1.4
	netbsd-7-1-RC1:1.1.1.3
	pgoyette-localcount-20161104:1.1.1.4
	netbsd-7-0-2-RELEASE:1.1.1.3
	localcount-20160914:1.1.1.4
	netbsd-7-nhusb:1.1.1.3.0.12
	netbsd-7-nhusb-base:1.1.1.3
	clang-280599:1.1.1.4
	pgoyette-localcount-20160806:1.1.1.4
	pgoyette-localcount-20160726:1.1.1.4
	pgoyette-localcount:1.1.1.4.0.2
	pgoyette-localcount-base:1.1.1.4
	netbsd-7-0-1-RELEASE:1.1.1.3
	clang-261930:1.1.1.4
	netbsd-7-0:1.1.1.3.0.10
	netbsd-7-0-RELEASE:1.1.1.3
	netbsd-7-0-RC3:1.1.1.3
	netbsd-7-0-RC2:1.1.1.3
	netbsd-7-0-RC1:1.1.1.3
	clang-237755:1.1.1.3
	clang-232565:1.1.1.3
	clang-227398:1.1.1.3
	tls-maxphys-base:1.1.1.3
	tls-maxphys:1.1.1.3.0.8
	netbsd-7:1.1.1.3.0.6
	netbsd-7-base:1.1.1.3
	clang-215315:1.1.1.3
	clang-209886:1.1.1.3
	yamt-pagecache:1.1.1.3.0.4
	yamt-pagecache-base9:1.1.1.3
	tls-earlyentropy:1.1.1.3.0.2
	tls-earlyentropy-base:1.1.1.3
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.3
	riastradh-drm2-base3:1.1.1.3
	clang-202566:1.1.1.3
	clang-201163:1.1.1.3
	clang-199312:1.1.1.3
	clang-198450:1.1.1.3
	clang-196603:1.1.1.2
	clang-195771:1.1.1.1
	LLVM:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2013.11.28.14.14.47;	author joerg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	ow8OybrawrB1f3fx;

1.1.1.1
date	2013.11.28.14.14.47;	author joerg;	state Exp;
branches;
next	1.1.1.2;
commitid	ow8OybrawrB1f3fx;

1.1.1.2
date	2013.12.06.23.16.55;	author joerg;	state Exp;
branches;
next	1.1.1.3;
commitid	oIJdta8D25nvY7gx;

1.1.1.3
date	2014.01.05.15.37.41;	author joerg;	state Exp;
branches
	1.1.1.3.4.1
	1.1.1.3.8.1;
next	1.1.1.4;
commitid	wh3aCSIWykURqWjx;

1.1.1.4
date	2016.02.27.22.10.53;	author joerg;	state Exp;
branches
	1.1.1.4.2.1;
next	1.1.1.5;
commitid	tIimz3oDlh1NpBWy;

1.1.1.5
date	2017.01.11.10.40.45;	author joerg;	state Exp;
branches
	1.1.1.5.12.1
	1.1.1.5.14.1;
next	1.1.1.6;
commitid	CNnUNfII1jgNmxBz;

1.1.1.6
date	2018.07.17.18.32.10;	author joerg;	state Exp;
branches;
next	1.1.1.7;
commitid	wDzL46ALjrCZgwKA;

1.1.1.7
date	2019.11.13.22.19.10;	author joerg;	state dead;
branches;
next	;
commitid	QD8YATxuNG34YJKB;

1.1.1.3.4.1
date	2014.01.05.15.37.41;	author yamt;	state dead;
branches;
next	1.1.1.3.4.2;
commitid	WSrDtL5nYAUyiyBx;

1.1.1.3.4.2
date	2014.05.22.16.18.19;	author yamt;	state Exp;
branches;
next	;
commitid	WSrDtL5nYAUyiyBx;

1.1.1.3.8.1
date	2014.01.05.15.37.41;	author tls;	state dead;
branches;
next	1.1.1.3.8.2;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.3.8.2
date	2014.08.19.23.47.19;	author tls;	state Exp;
branches;
next	;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.4.2.1
date	2017.03.20.06.52.30;	author pgoyette;	state Exp;
branches;
next	;
commitid	jjw7cAwgyKq7RfKz;

1.1.1.5.12.1
date	2018.07.28.04.33.07;	author pgoyette;	state Exp;
branches;
next	;
commitid	1UP1xAIUxv1ZgRLA;

1.1.1.5.14.1
date	2019.06.10.21.45.09;	author christos;	state Exp;
branches;
next	1.1.1.5.14.2;
commitid	jtc8rnCzWiEEHGqB;

1.1.1.5.14.2
date	2020.04.13.07.46.20;	author martin;	state dead;
branches;
next	;
commitid	X01YhRUPVUDaec4C;


desc
@@


1.1
log
@Initial revision
@
text
@================
LeakSanitizer
================

.. contents::
   :local:

Introduction
============

LeakSanitizer is a heap leak detector which is designed to be used on top of
:doc:`AddressSanitizer` / :doc:`MemorySanitizer`, or as a standalone library.
LeakSanitizer is a run-time tool which doesn't require compiler
instrumentation.

Current status
==============

LeakSanitizer is a work in progress, currently under development for
x86\_64 Linux.

More Information
================

Design wiki:
`https://code.google.com/p/address-sanitizer/wiki/LeakSanitizerDesignDocument
<https://code.google.com/p/address-sanitizer/wiki/LeakSanitizerDesignDocument>`_

@


1.1.1.1
log
@Import Clang 3.4rc1 r195771.
@
text
@@


1.1.1.2
log
@Import clang 3.4rc2 r196603.
Many bug fixes and improvements for the driver NetBSD/ARM EABI.
@
text
@d25 3
a27 2
`https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer
<https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer>`_
@


1.1.1.3
log
@Import clang 3.5svn r198450.
@
text
@d11 4
a14 5
LeakSanitizer is a run-time memory leak detector. It can be combined with
:doc:`AddressSanitizer` to get both memory error and leak detection.
LeakSanitizer does not introduce any additional slowdown when used in this mode.
The LeakSanitizer runtime can also be linked in separately to get leak detection
only, at a minimal performance cost.
d19 2
a20 6
LeakSanitizer is experimental and supported only on x86\_64 Linux.

The combined mode has been tested on fairly large software projects. The
stand-alone mode has received much less testing.

There are plans to support LeakSanitizer in :doc:`MemorySanitizer` builds.
@


1.1.1.4
log
@Import Clang 3.8.0rc3 r261930.
@
text
@d20 1
a20 2
LeakSanitizer is turned on by default, but it is only supported on x86\_64
Linux.
d30 3
a32 1
`<https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer>`_
@


1.1.1.4.2.1
log
@Sync with HEAD
@
text
@d12 15
a26 33
:doc:`AddressSanitizer` to get both memory error and leak detection, or
used in a stand-alone mode. LSan adds almost no performance overhead
until the very end of the process, at which point there is an extra leak
detection phase.

Usage
=====

LeakSanitizer is only supported on x86\_64 Linux. In order to use it,
simply build your program with :doc:`AddressSanitizer`:

.. code-block:: console

    $ cat memory-leak.c
    #include <stdlib.h>
    void *p;
    int main() {
      p = malloc(7);
      p = 0; // The memory is leaked here.
      return 0;
    }
    % clang -fsanitize=address -g memory-leak.c ; ./a.out
    ==23646==ERROR: LeakSanitizer: detected memory leaks
    Direct leak of 7 byte(s) in 1 object(s) allocated from:
        #0 0x4af01b in __interceptor_malloc /projects/compiler-rt/lib/asan/asan_malloc_linux.cc:52:3
        #1 0x4da26a in main memory-leak.c:4:7
        #2 0x7f076fd9cec4 in __libc_start_main libc-start.c:287
    SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s).

To use LeakSanitizer in stand-alone mode, link your program with
``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the
link step, so that it would link in proper LeakSanitizer run-time library
into the final executable.
@


1.1.1.5
log
@Import Clang pre-4.0.0 r291444.
@
text
@d12 15
a26 33
:doc:`AddressSanitizer` to get both memory error and leak detection, or
used in a stand-alone mode. LSan adds almost no performance overhead
until the very end of the process, at which point there is an extra leak
detection phase.

Usage
=====

LeakSanitizer is only supported on x86\_64 Linux. In order to use it,
simply build your program with :doc:`AddressSanitizer`:

.. code-block:: console

    $ cat memory-leak.c
    #include <stdlib.h>
    void *p;
    int main() {
      p = malloc(7);
      p = 0; // The memory is leaked here.
      return 0;
    }
    % clang -fsanitize=address -g memory-leak.c ; ./a.out
    ==23646==ERROR: LeakSanitizer: detected memory leaks
    Direct leak of 7 byte(s) in 1 object(s) allocated from:
        #0 0x4af01b in __interceptor_malloc /projects/compiler-rt/lib/asan/asan_malloc_linux.cc:52:3
        #1 0x4da26a in main memory-leak.c:4:7
        #2 0x7f076fd9cec4 in __libc_start_main libc-start.c:287
    SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s).

To use LeakSanitizer in stand-alone mode, link your program with
``-fsanitize=leak`` flag. Make sure to use ``clang`` (not ``ld``) for the
link step, so that it would link in proper LeakSanitizer run-time library
into the final executable.
@


1.1.1.5.14.1
log
@Sync with HEAD
@
text
@d20 1
a20 1
LeakSanitizer is supported on x86\_64 Linux and OS X. In order to use it,
d33 1
a33 1
    % clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out
@


1.1.1.5.14.2
log
@Mostly merge changes from HEAD upto 20200411
@
text
@@


1.1.1.5.12.1
log
@Sync with HEAD
@
text
@d20 1
a20 1
LeakSanitizer is supported on x86\_64 Linux and OS X. In order to use it,
d33 1
a33 1
    % clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out
@


1.1.1.6
log
@Import clang r337282 from trunk
@
text
@d20 1
a20 1
LeakSanitizer is supported on x86\_64 Linux and OS X. In order to use it,
d33 1
a33 1
    % clang -fsanitize=address -g memory-leak.c ; ASAN_OPTIONS=detect_leaks=1 ./a.out
@


1.1.1.7
log
@Mark old LLVM instance as dead.
@
text
@@


1.1.1.3.8.1
log
@file LeakSanitizer.rst was added on branch tls-maxphys on 2014-08-19 23:47:19 +0000
@
text
@d1 32
@


1.1.1.3.8.2
log
@Rebase to HEAD as of a few days ago.
@
text
@a0 32
================
LeakSanitizer
================

.. contents::
   :local:

Introduction
============

LeakSanitizer is a run-time memory leak detector. It can be combined with
:doc:`AddressSanitizer` to get both memory error and leak detection.
LeakSanitizer does not introduce any additional slowdown when used in this mode.
The LeakSanitizer runtime can also be linked in separately to get leak detection
only, at a minimal performance cost.

Current status
==============

LeakSanitizer is experimental and supported only on x86\_64 Linux.

The combined mode has been tested on fairly large software projects. The
stand-alone mode has received much less testing.

There are plans to support LeakSanitizer in :doc:`MemorySanitizer` builds.

More Information
================

`https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer
<https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer>`_

@


1.1.1.3.4.1
log
@file LeakSanitizer.rst was added on branch yamt-pagecache on 2014-05-22 16:18:19 +0000
@
text
@d1 32
@


1.1.1.3.4.2
log
@sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")
@
text
@a0 32
================
LeakSanitizer
================

.. contents::
   :local:

Introduction
============

LeakSanitizer is a run-time memory leak detector. It can be combined with
:doc:`AddressSanitizer` to get both memory error and leak detection.
LeakSanitizer does not introduce any additional slowdown when used in this mode.
The LeakSanitizer runtime can also be linked in separately to get leak detection
only, at a minimal performance cost.

Current status
==============

LeakSanitizer is experimental and supported only on x86\_64 Linux.

The combined mode has been tested on fairly large software projects. The
stand-alone mode has received much less testing.

There are plans to support LeakSanitizer in :doc:`MemorySanitizer` builds.

More Information
================

`https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer
<https://code.google.com/p/address-sanitizer/wiki/LeakSanitizer>`_

@


