Re: [PATCH][gdb/symtab] Fix check-psymtab failure for inline function

Tom Tromey
2020-03-11T00:08:57Z

>>>>> "Tom" == Tom de Vries <tdevries@suse.de> writes:

Tom> When loading the executable in gdb, we create a partial symbol for foo, but
Tom> after expansion into a full symbol table no actual symbol is created,
Tom> resulting in a maint check-psymtab failure:
Tom> ...
Tom> (gdb) maint check-psymtab
Tom> Static symbol `foo' only found in inline.c psymtab
Tom> ...

Tom> Fix this by preventing the creation of this type of partial symbol.

With this patch, if there is a function which is only inlined (there is
no "out-line" copy), will "break function" still work?

It seems to me that it wouldn't always, because there wouldn't be a
partial symbol to match. Maybe it might work accidentally if the inline
function appears in a CU that is already expanded, like main's. So the
test would have to be an always-inline function that isn't used in
main's CU.

If it does work, then I wonder how, since my mental model is that all
the paths to expansion require a matching partial symbol.

If it doesn't work, then I think a different fix is needed.

thanks,
Tom