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.

Installation

FreeBSD HEAD (in-tree LLDB snapshot)

FreeBSD-HEAD contains LLDB release version 3.8 (as of the last update of this wiki page) and is typically updated along with Clang/LLVM. 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.

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

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.3 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 dhclient vtnet0 to fetch an IP address for the current session.

  5. Run pkg and answer Y to install the package management tool

  6. Run pkg install git python27 cmake ninja swig13 zsh

  7. Run adduser to create a user account

  8. Run shutdown -r now to reboot

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

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

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

lldb (last edited 2016-05-11 03:32:18 by LiWenHsu)