Valgrind-3.27.1

#### Beyond Linux® From Scratch (System V Edition) - Version r13.0-1374

### Chapter 13. Programming

- Prev

  Vala-0.56.19

- Next

  yasm-1.3.0

- Up
- Home

# Valgrind-3.27.1

## Introduction to Valgrind

Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile programs in detail. Valgrind can also be used to build new tools.

### Note

This version of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable version of the System V books.

### Package Information

- Download (HTTP): https://sourceware.org/pub/valgrind/valgrind-3.27.1.tar.bz2

- Download MD5 sum: 9b819b1aa88fc5936373fc624aa75723

- Download size: 17 MB

- Estimated disk space required: 421 MB (add 107 MB for tests)

- Estimated build time: 0.5 SBU (add 7.6 SBU for tests; both using parallelism=4)

### Valgrind Dependencies

#### Optional

docbook-xml-4.5 (for tests), GDB-17.2 (for tests), libaio-0.3.113, LLVM-22.1.8 (with Clang), and Which-2.25 (for tests)

## Installation of Valgrind

Install Valgrind by running the following commands:

    sed -i 's|/doc/valgrind||' docs/Makefile.in &&

    ./configure --prefix=/usr \
                --datadir=/usr/share/doc/valgrind-3.27.1 &&
    make

To test the results, issue: make regtest. The tests may hang forever if GDB-17.2 is not installed. Some tests are known to hang also, depending on the version of glibc. A few tests can fail in various suites. Problematic tests can be disabled by changing the `prereq:` line in the corresponding `.vgtest` file to `prereq: false`. For example:

    sed -e 's@prereq:.*@prereq: false@' \
        -i {helgrind,drd}/tests/pth_cond_destroy_busy.vgtest

An additional test suite is now available that tests Valgrind with every system call provided by the kernel. The test suite is designed to test not only glibc and the kernel's conformance to standards, but also Valgrind's ability to handle different system calls. The test suite does require an internet connection to download the tests, and it takes a long time to run (an additional 20 SBUs and 1.3GB of disk space.) If you wish to run this test suite, issue the following command: make ltpchecks. Note that the output will show several failures where Valgrind does not currently support certain system calls, but the logs for the test suite can be found in the `auxprogs/auxchecks/ltp-full-20250930/ltp/tests` directory. These tests are currently broken with Linux 6.18 and glibc-2.43.

### Note

The OpenMP tests are skipped if libgomp has been compiled with `--enable-linux-futex` (the default). If needed, just recompile the libgomp library from the gcc build tree, passing `--disable-linux-futex` to configure, storing the library to some place and changing the link from `/usr/lib/libgomp.so.1` to point to the new library.

Now, as the `root` user:

    make install

## Command Explanations

sed -i ... docs/Makefile.in : This sed provides for installing the documentation in a versioned directory.

`--enable-lto=yes`: This option allows building Valgrind with LTO (link time optimization). This produces a smaller/faster Valgrind (up to 10%), but build time increases to about 5.5 SBU.

## Contents

Installed Programs: callgrind_annotate, callgrind_control, cg_annotate, cg_diff, cg_merge, ms_print, valgrind, valgrind-di-server, valgrind-listener, and vgdb
Installed Libraries: None
Installed Directories: /usr/lib/valgrind, /usr/libexec/valgrind, /usr/include/valgrind, and /usr/share/doc/valgrind-3.27.1

### Short Descriptions

valgrind | is a program for debugging and profiling Linux executables
callgrind_annotate | takes an output file produced by the Valgrind tool Callgrind and prints the information in an easy-to-read form
callgrind_control | controls programs being run by the Valgrind tool Callgrind
cg_annotate | is a post-processing tool for the Valgrind tool Cachegrind
cg_diff | compares two Cachegrind output files
cg_merge | merges multiple Cachegrind output files into one
ms_print | takes an output file produced by the Valgrind tool Massif and prints the information in an easy-to-read form
valgrind-di-server | is a server that reads debuginfo from objects stored on a different machine
valgrind-listener | listens on a socket for Valgrind commentary
vgdb | is an intermediary between Valgrind and GDB or a shell

- Prev

  Vala-0.56.19

- Next

  yasm-1.3.0

- Up
- Home