libelfin

C++11 ELF/DWARF parser

  • Owner: aclements/libelfin
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

Libelfin is a from-scratch
C++11 library for reading ELF binaries and DWARFv4 debug information.

Quick start

make, and optionally make install. You'll need GCC 4.7 or later.

Features

  • Native C++11 code and interface, designed from scratch to interact
    well with C++11 features, from range-based for loops to move
    semantics to enum classes.

  • Libelfin fully implements parsing for Debugging Information Entries
    (DIEs), the core data structure used by the DWARF format, as well as
    most DWARFv4 tables.

  • Supports all DWARFv4 DIE value types except location lists and
    macros.

  • Nearly complete evaluator for DWARFv4 expressions and location
    descriptions.

  • Complete interpreter for DWARFv4 line tables.

  • Iterators for easily and naturally traversing compilation units,
    type units, DIE trees, and DIE attribute lists.

  • Every enum value can be pretty-printed.

  • Large collection of type-safe DIE attribute fetchers.

Non-features

Libelfin implements a syntactic layer for DWARF and ELF, but not a
semantic layer. Interpreting the information stored in DWARF DIE
trees still requires a great deal of understanding of DWARF, but
libelfin will make sense of the bytes for you.

Using libelfin

To build against libdwarf++, use, for example

g++ -std=c++11 a.cc $(pkg-config --cflags --libs libdwarf++)

To use a local build of libelfin, set PKG_CONFIG_PATH. For example,

export PKG_CONFIG_PATH=$PWD/elf:$PWD/dwarf

There are various example programs in examples/.

Status

Libelfin is a good start. It's not production-ready and there are
many parts of the DWARF specification it does not yet implement, but
it's complete enough to be useful for many things and is a good deal
more pleasant to use than every other debug info library I've tried.

Main metrics

Overview
Name With Owneraclements/libelfin
Primary LanguageC++
Program languageEmacs Lisp (Language Count: 6)
Platform
License:MIT License
所有者活动
Created At2013-09-28 03:21:30
Pushed At2024-06-18 05:37:46
Last Commit At2024-03-10 18:56:59
Release Count3
Last Release Namev0.3 (Posted on )
First Release Namev0.1 (Posted on 2013-09-27 23:30:17)
用户参与
Stargazers Count330
Watchers Count19
Fork Count105
Commits Count152
Has Issues Enabled
Issues Count49
Issue Open Count35
Pull Requests Count15
Pull Requests Open Count9
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private