Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af7a14a7 authored by Changbin Du's avatar Changbin Du Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Add doc about how to build perf with Asan and UBSan



AddressSanitizer (or ASan) and UndefinedBehaviorSanitizer (or UBSan) are
very useful tools to detect program bugs:

 - AddressSanitizer (or ASan) is a GCC feature that detects memory
   corruption bugs such as buffer overflows and memory leaks.

 - UndefinedBehaviorSanitizer (or UBSan) is a fast undefined behavior
   detector supported by GCC. UBSan detects undefined behaviors of programs
   at runtime.

This patch adds a document about how to use them on perf. Later patches will fix
some of the issues disclosed by them.

Signed-off-by: default avatarChangbin Du <changbin.du@gmail.com>
Reviewed-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/20190316080556.3075-2-changbin.du@gmail.com


[ Make some changes based on comments made by Jiri Olsa ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent c3b4d5c4
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -47,3 +47,27 @@ Those objects are then used in final linking:

NOTE this description is omitting other libraries involved, only
     focusing on build framework outcomes

3) Build with ASan or UBSan
==========================
  $ cd tools/perf
  $ make DESTDIR=/usr
  $ make DESTDIR=/usr install

AddressSanitizer (or ASan) is a GCC feature that detects memory corruption bugs
such as buffer overflows and memory leaks.

  $ cd tools/perf
  $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame-pointer -fsanitize=address'
  $ ASAN_OPTIONS=log_path=asan.log ./perf record -a

ASan outputs all detected issues into a log file named 'asan.log.<pid>'.

UndefinedBehaviorSanitizer (or UBSan) is a fast undefined behavior detector
supported by GCC. UBSan detects undefined behaviors of programs at runtime.

  $ cd tools/perf
  $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame-pointer -fsanitize=undefined'
  $ UBSAN_OPTIONS=print_stacktrace=1 ./perf record -a

If UBSan detects any problem at runtime, it outputs a “runtime error:” message.