Valgrind
Contents
The recommended installation method is FreeBSD Ports & Packages.
Valgrind aarch64
Valgrind has been ported to aarch64. The code has been pushed upstream. Updating the devel/valgrind-devel port is underway. The port is close to fully functional - there are occasional errors related to static variables and thread creation.
To use this you will have to build it from source.
git clone https://github.com/paulfloyd/freebsdarm64_valgrind.git cd freebsdarm64_valgrind
Then follow the instructions in the 'Building' section below.
Installation
Note: There may be some differences or delays between binary package versions and port versions, depending on whether you use Quarterly or Latest package branch.
Stable Version
The devel/valgrind port follows the official Valgrind release cycle, which is roughly aligned with the RedHat Fedora release cycle, with bi-annual releases targeted for April and October.
Install using either:
Ports: cd /usr/ports/devel/valgrind && make install OR
Packages: pkg install valgrind
Development Version
The devel/valgrind-devel port will install a version of Valgrind that is tracking the upstream git repository, and is updated if/when there are sufficient fixes between official Valgrind releases.
Install using either:
Ports: cd /usr/ports/devel/valgrind-devel && make install OR
Packages: pkg install valgrind-devel
Building from Source
Pre-Requisites
Building valgrind requires the following ports to be installed:
- devel/gmake
- devel/autoconf
- devel/automake
Obtaining the Valgrind Source
Starting with Valgrind 3.18.1 FreeBSD support has been integrated into the main Valgrind codebase. Prior to 3.18.1 (though still maintained) the source was hosted on on GitHub
To check out pre-3.18.1 versions of the source:
git clone https://github.com/paulfloyd/freebsd_valgrind.git
The mercurial bitbucket repo that was the basis of the FreeBSD Valgrind port up to 3.17 is no longer accessible.
Building
sh autogen.sh ./configure gmake gmake install
TODO
- Improve ioctl checking. At present there is very little checking of ioctl memory accesses. This will also require a significant improvement in the test coverage.
1, Implement a FreeBSD fair scheduler. Linux has a futex based scheduler. It uses come GCC __sync builtins (also available with clang). And a couple of syscalls for futex. Shouldn't be too hard to port to use _umtx_op.
- Implement rfork.
- Improve vgdb-invoker.
- Implement some form of lldb-server.
- Improve core dumps. Currently they are just Linux style core dumps with a FreeBSD tag.
Add freeres support to libc FreeBSD Bugzilla Issue #259294
- Much needs to be done for Clang OMP.
- Fix handling of thread TLS allocation for Helgrind.