logoalt Hacker News

zidelyesterday at 10:49 PM1 replyview on HN

One interesting thing about the dwarf format is that it is executable and Turing complete, running small programs on a virtual machine to figure out file names, line numbers and exception handling.


Replies

lambda_fooyesterday at 10:55 PM

It's really fascinating the different little evaluators that exist in DWARF. I started writing one for the DWARF expression format (https://github.com/tmcgilchrist/durin/pull/7) that I'm integrating with a debugger and free-monad/effect handler style code to lookup the missing data to provide for the Requires* callbacks.

Then there is the line number evaluation, which I haven't started on.

Building a Debugger by Sy Brand (https://nostarch.com/building-a-debugger) is an awesome book if you want to learn more about this. It covers DWARF 4 and you build a full debugger in C++17 for Linux/x86_64. Can't recommend that book highly enough!

show 1 reply