debuginfod vs libthread_db.so

Florian Weimer fweimer@redhat.com
Wed Nov 30 18:46:14 GMT 2022


* Mark Wielaard:

> Hi Avi,
>
> On Thu, 2022-11-24 at 14:02 +0200, Avi Kivity via Gdb wrote:
>> (tangent: is it possible to express libthread_db.so code as DWARF
>> expressions? if so it will be possible to get rid of libthread_db.so,
>> by having libc encode accessors to thread information as some DWARF
>> expressions, and teaching gdb to use those expressions instead of
>> calling libthread_db.so)
>
> There used to be an effort to define a kind of extended DWARF
> expressions, infinity notes, to describe things like the
> libthread_db.so code. Although the website can only be found in
> archive.org now, the code is still out there:
> https://web.archive.org/web/20190126111943/https://infinitynotes.org/wiki/Infinity
>
> Mailing list: infinity@sourceware.org, 
> https://sourceware.org/ml/infinity/
> Source code: https://gitlab.com/gbenson/i8c/, 
> https://gitlab.com/gbenson/libi8x/

These days, I would recommend to teach GDB to poke at the internal ld.so
data structures to glean the necessary data.  The offsets vary a lot and
would have to come from DWARF, but the structures themselves are fairly
stable (relative to other changes in GDB that glibc updates impose—sorry
about that).

To enable experimentation with this approach, we have stopped removing
debuginfo from ld.so in our distributions.

I kind of want to ship a header-only library in glibc which provides
this capability across multiple glibc versions, while outsourcing the
DWARF parsing etc. to GDB.

libthread_db also had code to compensate for limitations in the original
Linux ptrace interface, but that isn't needed anymore.

Thanks,
Florian



More information about the Gdb mailing list