This is an old revision of the document!
FreeBSD LLDB port
Background
LLDB, part of the LLVM family of projects, is a modern, high-performance source-level debugger. It supports (at some level) OS X, Linux, FreeBSD, NetBSD, and Windows. This page describes the ongoing work to bring the FreeBSD LLDB port to completion.
Links
- FreeBSD-hosted FreeBSD amd64 buildbot (last 200 builds) (2014-11-26: currently offline)
Installation
FreeBSD HEAD (in-tree LLDB snapshot)
FreeBSD-HEAD contains a snapshot of LLDB version 3.7 (as of the last update of this wiki page). It is enabled by default on amd64 and arm64 and may be enabled elsewhere by adding WITH_LLDB=YES to /etc/src.conf, and then following a standard buildworld and installworld, or building directly in lib/clang and then usr.bin/clang/lldb.
Previous snapshot versions in FreeBSD:
| SVN | git | Version |
|---|---|---|
| 196322 | 49c127a | |
| 202189 | 32871eb0 | |
| 216948 | 50f7fe44 | 3.5 |
| 225923 | 3.6 |
FreeBSD HEAD or 10 (upstream LLDB tree)
Install the following ports / packages:
- python
- swig (I used swig 1.3)
- cmake
- ninja
- git
This can be accomplished by running:
pkg install git python cmake ninja swig13
Virtual Machine
LLDB developers working on other platforms who wish to test their changes on FreeBSD can start with a virtual machine image from the table below.
| Image Link | Description |
|---|---|
| FreeBSD 10.2 Release | Most recent release |
| FreeBSD 11.0-CURRENT | Subversion HEAD development snapshot |
Quick start instructions:
- Log in as root on the console
- Run “ifconfig -l” to list network interfaces The virtual nic will likely be em0 or vtnet0 depending on the VM software.
- Add to /etc/rc.conf (assuming vtnet0 interface here):
ifconfig_vtnet0="DHCP" sshd_enable="YES"
- Run
pkgand answer Y to install the package management tool - Run
pkg install git python27 cmake ninja swig13 zsh - Run
adduserto create a user account - Run
shutdown -r nowto reboot - ssh to the VM as your user account and follow the steps below under “Checkout and Build”.
Checkout and Build
I build LLDB with the in-tree Clang and libc++. It should also be possible to build with a recent GCC port installed (and dropping CC=, CXX=, and -stdlib= from the cmake line below), but I encountered a number of issues.
Checkout and build LLDB (assuming a Bourne shell):
git clone http://llvm.org/git/llvm.git cd llvm/tools git clone http://llvm.org/git/clang.git git clone http://llvm.org/git/lldb.git cd .. mkdir build cd build CC=clang CXX=clang++ cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++ -I/usr/local/include/python2.7 -g" ninja lldb ninja check-lldb # if you want to run tests
- For details on the need for -std=c++11 see http://lists.cs.uiuc.edu/pipermail/lldb-dev/2013-November/002755.html
CC=andCXX=are required for 9.x builds only; clang is the default compiler on 10.0 and later.
Status
| Feature | Status |
|---|---|
| process launch | Works |
| process attach (pid) | Works |
| process attach (name) | Works |
| userland core files | Works |
| Breakpoints | Works |
| Watchpoints | Works |
| Threads | Works |
| Testsuite | All non-passing tests have PRs |
| Remote debugging (gdbserver / debugserver) | In Progress |
| Kernel debugging | In progress (GSoC 2014) |
| Cross debugging | Untested |
| Architecture | Host Status | Target Status |
|---|---|---|
| amd64 | Works | Works |
| arm | Unknown | Unknown |
| arm64 (aarch64) | Works | Works |
| i386 | In progress | In progress |
| mips | Unknown | In progress |
| mips64 | Unknown | In progress |
| powerpc | In progress | In progress |
| powerpc64 | In progress | In progress |
Tasks
- Investigate and fix open PRs. To find annotated failing or skipped tests, try:
find packages/Python/lldbsuite/test -name '*.py' -print0 | xargs -r0 egrep 'skipIfFreeBSD|expectedFailureFreeBSD'