Hello, On Wed, May 7, 2025 at 2:49 PM Todd Allen via Dwarf-discuss <dwarf-discuss@lists.dwarfstd.org> wrote: > In 250506.2, the use of a rnglist is throwing me. I would expect the > lifetime of a vtable to be the whole program. Or did you envision the > rnglist to be the range of data/rodata addresses of the vtable object? 2.17 > clarifies that they're code addresses (i.e. text), though. > > We did have a discussion sometime in the last year about describing > data/rodata address ranges, but that was in .debug_aranges (RIP). And, IIRC, > no actual compiler was generating data/rodata address there either.
If it helps the design: there are languages where vtables are not necessarily statically allocated. Here is a small Ada example, involving a tagged type (equivalent to a C++ class) nested in a procedure, and with a primitive (C++ method) that actually has up-level references to the procedure locals (so the vtable is actually tied to the current stack frame): 1 with Ada.Text_IO; use Ada.Text_IO; 2 3 procedure Main is 4 Msg : constant String := "Hello world"; 5 6 package Pkg is 7 type T is tagged null record; 8 procedure Print (Self : T); 9 end Pkg; 10 11 package body Pkg is 12 procedure Print (Self : T) is 13 begin 14 Put_Line (Msg); 15 end Print; 16 end Pkg; 17 18 Object : Pkg.T; 19 begin 20 Object.Print; 21 end Main; GDB allows us to observe where the vtable for T is stored (tested on a x86_64-linux machine): $ gdb ./main (gdb) b main.adb:20 Breakpoint 1 at 0x6ae9: file main.adb, line 20. (gdb) r […] Breakpoint 1, main () at main.adb:20 20 Object.Print; (gdb) set lang c Warning: the current language does not match this frame. (gdb) print object $1 = {_tag = 0x7fffffffda30} (gdb) p $rsp $2 = (void *) 0x7fffffffd7d0 (gdb) p $rbp $3 = (void *) 0x7fffffffda70 “_tag” is an artificial component for the record T that GCC (currently) generates in the debug info to materialize the vtable: it points to a structure that is in the current stack frame (between $rsp and $rbp). -- Pierre-Marie de Rodat <dero...@adacore.com> -- Dwarf-discuss mailing list Dwarf-discuss@lists.dwarfstd.org https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss