Re: gdb 8.x - g++ 7.x compatibility

Tom Tromey
2018-02-07T20:29:41Z

>>>>> "Dan" == Daniel Berlin <dberlin@dberlin.org> writes:

Dan> If there are multiple types named Foo<2u>, DWARF needs to be extended to
Dan> allow a pointer from the vtable debug info to the class type debug info
Dan> (unless they already added one).

This is what we did for Rust.

Rust doesn't have a stable ABI yet, so using gdb's current approach --
having the debugger use details of the ABI in addition to the debug info
-- wasn't an option.

So, instead, the Rust compiler emits DWARF for the vtable and associates
the vtable with the concrete type for which it was emitted. This
required a minor DWARF extension.

I think C++ could probably do something along these lines as well.

The current gdb approach hasn't been really solid since function-local
classes were added to C++. IIRC there are bugs in gdb bugzilla about
this. These kinds of problems are, I think, completely avoided by a
DWARF-based approach.

Tom