Re: debuginfod vs libthread_db.so
Florian Weimer via Gdb <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
* 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: [email protected], > 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