FreeBSD LLDB port

Background

LLDB, part of the LLVM family of projects, is a modern, high-performance source-level debugger. This page describes the ongoing work to port LLDB to FreeBSD.

Installation

FreeBSD HEAD (in-tree LLDB snapshot)

FreeBSD-HEAD contains a snapshot of LLDB at upstream revision 202189 (git 32871eb0) (as of the last update of this wiki page). An update to r216948 (git 50f7fe44) is in progress in the Clang 3.5 import branch. It is not yet built by default and may be enabled 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

196322

git 49c127a

FreeBSD HEAD or 10 (upstream LLDB tree)

Install the following ports / packages:

This can be accomplished by running:

pkg install git python cmake ninja swig13

FreeBSD 9 (upstream LLDB tree)

Install the ports / packages listed above for FreeBSD 10, and also install:

and build and install libc++:

cd /usr/src/lib/libcxxrt
CXX=clang++ make all install clean
cd /usr/src/lib/libc++
CXX=clang++ make all install clean

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.1 Release

Most recent release

FreeBSD 11.0-CURRENT

Subversion HEAD development snapshot

Quick start instructions:

  1. Log in as root on the console
  2. Run "ifconfig -l" to list network interfaces The virtual nic will likely be em0 or vtnet0 depending on the VM software.
  3. Add to /etc/rc.conf (assuming vtnet0 interface here):
    ifconfig_vtnet0="DHCP"                                                       
    sshd_enable="YES"                                                            
  4. Run pkg and answer Y to install the package management tool

  5. Run pkg install git python27 cmake ninja swig13 zsh

  6. Run adduser to create a user account

  7. Run shutdown -r now to reboot

  8. 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

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

aarch64

Unstarted

Unstarted

amd64

Works

Works

arm

Unknown

Unknown

i386

In progress

In progress

mips

Unknown

In progress

mips64

Unknown

In progress

powerpc

In progress

In progress

powerpc64

In progress

In progress

Tasks

  1. Investigate and fix open PRs. To find annotated failing or skipped tests, try:

    find test -name '*.py' -print0 | xargs -r0 egrep 'skipIfFreeBSD|expectedFailureFreeBSD'

lldb (last edited 2014-11-26 20:17:31 by EdMaste)