~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/Documentation/Build.txt

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/Documentation/Build.txt (Version linux-6.12-rc7) and /tools/perf/Documentation/Build.txt (Version linux-6.1.116)


  1                                                     1 
  2 1) perf build                                       2 1) perf build
  3 =============                                       3 =============
  4 The perf build process consists of several sep      4 The perf build process consists of several separated building blocks,
  5 which are linked together to form the perf bin      5 which are linked together to form the perf binary:
  6   - libperf library (static)                        6   - libperf library (static)
  7   - perf builtin commands                           7   - perf builtin commands
  8   - traceevent library (static)                     8   - traceevent library (static)
  9   - GTK ui library                                  9   - GTK ui library
 10                                                    10 
 11 Several makefiles govern the perf build:           11 Several makefiles govern the perf build:
 12                                                    12 
 13   - Makefile                                       13   - Makefile
 14     top level Makefile working as a wrapper th     14     top level Makefile working as a wrapper that calls the main
 15     Makefile.perf with a -j option to do paral     15     Makefile.perf with a -j option to do parallel builds.
 16                                                    16 
 17   - Makefile.perf                                  17   - Makefile.perf
 18     main makefile that triggers build of all p     18     main makefile that triggers build of all perf objects including
 19     installation and documentation processing.     19     installation and documentation processing.
 20                                                    20 
 21   - tools/build/Makefile.build                     21   - tools/build/Makefile.build
 22     main makefile of the build framework           22     main makefile of the build framework
 23                                                    23 
 24   - tools/build/Build.include                      24   - tools/build/Build.include
 25     build framework generic definitions            25     build framework generic definitions
 26                                                    26 
 27   - Build makefiles                                27   - Build makefiles
 28     makefiles that defines build objects           28     makefiles that defines build objects
 29                                                    29 
 30 Please refer to tools/build/Documentation/Buil     30 Please refer to tools/build/Documentation/Build.txt for more
 31 information about build framework.                 31 information about build framework.
 32                                                    32 
 33                                                    33 
 34 2) perf build                                      34 2) perf build
 35 =============                                      35 =============
 36 The Makefile.perf triggers the build framework     36 The Makefile.perf triggers the build framework for build objects:
 37    perf, libperf, gtk                              37    perf, libperf, gtk
 38                                                    38 
 39 resulting in following objects:                    39 resulting in following objects:
 40   $ ls  *-in.o                                     40   $ ls  *-in.o
 41   gtk-in.o  libperf-in.o  perf-in.o                41   gtk-in.o  libperf-in.o  perf-in.o
 42                                                    42 
 43 Those objects are then used in final linking:      43 Those objects are then used in final linking:
 44   libperf-gtk.so <- gtk-in.o  libperf-in.o         44   libperf-gtk.so <- gtk-in.o  libperf-in.o
 45   perf           <- perf-in.o libperf-in.o         45   perf           <- perf-in.o libperf-in.o
 46                                                    46 
 47                                                    47 
 48 NOTE this description is omitting other librar     48 NOTE this description is omitting other libraries involved, only
 49      focusing on build framework outcomes          49      focusing on build framework outcomes
 50                                                    50 
 51 3) Build with ASan or UBSan                        51 3) Build with ASan or UBSan
 52 ==========================                         52 ==========================
 53   $ cd tools/perf                                  53   $ cd tools/perf
 54   $ make DESTDIR=/usr                              54   $ make DESTDIR=/usr
 55   $ make DESTDIR=/usr install                      55   $ make DESTDIR=/usr install
 56                                                    56 
 57 AddressSanitizer (or ASan) is a GCC feature th     57 AddressSanitizer (or ASan) is a GCC feature that detects memory corruption bugs
 58 such as buffer overflows and memory leaks.         58 such as buffer overflows and memory leaks.
 59                                                    59 
 60   $ cd tools/perf                                  60   $ cd tools/perf
 61   $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame     61   $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame-pointer -fsanitize=address'
 62   $ ASAN_OPTIONS=log_path=asan.log ./perf reco     62   $ ASAN_OPTIONS=log_path=asan.log ./perf record -a
 63                                                    63 
 64 ASan outputs all detected issues into a log fi     64 ASan outputs all detected issues into a log file named 'asan.log.<pid>'.
 65                                                    65 
 66 UndefinedBehaviorSanitizer (or UBSan) is a fas     66 UndefinedBehaviorSanitizer (or UBSan) is a fast undefined behavior detector
 67 supported by GCC. UBSan detects undefined beha     67 supported by GCC. UBSan detects undefined behaviors of programs at runtime.
 68                                                    68 
 69   $ cd tools/perf                                  69   $ cd tools/perf
 70   $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame     70   $ make DEBUG=1 EXTRA_CFLAGS='-fno-omit-frame-pointer -fsanitize=undefined'
 71   $ UBSAN_OPTIONS=print_stacktrace=1 ./perf re     71   $ UBSAN_OPTIONS=print_stacktrace=1 ./perf record -a
 72                                                    72 
 73 If UBSan detects any problem at runtime, it ou     73 If UBSan detects any problem at runtime, it outputs a “runtime error:” message.
 74                                                << 
 75 4) Cross compilation                           << 
 76 ====================                           << 
 77 As Multiarch is commonly supported in Linux di << 
 78 libraries for multiple architectures on the sa << 
 79 Linux perf. For example, Aarch64 libraries and << 
 80 an x86_64 machine, allowing us to compile perf << 
 81                                                << 
 82 Below is the command for building the perf wit << 
 83                                                << 
 84   $ cd /path/to/Linux                          << 
 85   $ make ARCH=arm64 CROSS_COMPILE=aarch64-linu << 
 86                                                << 
 87 For static linking, the option `LDFLAGS="-stat << 
 88                                                << 
 89   $ make ARCH=arm64 CROSS_COMPILE=aarch64-linu << 
 90     LDFLAGS="-static" -C tools/perf            << 
 91                                                << 
 92 In the embedded system world, a use case is to << 
 93 configuration paths for cross building:        << 
 94                                                << 
 95   $ PKG_CONFIG_SYSROOT_DIR="/path/to/cross/bui << 
 96     PKG_CONFIG_LIBDIR="/usr/lib/:/usr/local/li << 
 97     make ARCH=arm64 CROSS_COMPILE=aarch64-linu << 
 98                                                << 
 99 In this case, the variable PKG_CONFIG_SYSROOT_ << 
100 variable PKG_CONFIG_LIBDIR or PKG_CONFIG_PATH  << 
101 the library paths for cross compilation.       << 
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php