Make the linespec/location completer ignore data symbols
authorPedro Alves <palves@redhat.com>
Wed, 8 Nov 2017 14:22:34 +0000 (14:22 +0000)
committerPedro Alves <palves@redhat.com>
Wed, 8 Nov 2017 16:06:25 +0000 (16:06 +0000)
commitf9d67a22392f8f52c779f68a2561eb35c2f86b81
tree789551df32e000d6bdbaa1b73e58c59f310da04a
parent56d87ef769e6adab27af77fa86ea294ee7c6ee72
Make the linespec/location completer ignore data symbols

Currently "b foo[TAB]" offers data symbols as completion candidates.
This doesn't make sense, since you can't set a breakpoint on data
symbols, only on code symbols.

 (gdb) b globa[TAB]
 (gdb) b global [ENTER]
 Function "global" not defined.
 Make breakpoint pending on future shared library load? (y or [n]) n
 (gdb) info symbol global
 global in section .rodata

So this patch makes linespec completion ignore data symbols.

gdb/ChangeLog:
2017-11-08  Pedro Alves  <palves@redhat.com>

* ada-lang.c (ada_make_symbol_completion_list): Use
completion_skip_symbol.
* symtab.c (symbol_is_function_or_method(minimal_symbol*)): New.
(symbol_is_function_or_method(symbol*)): New.
(add_symtab_completions): Add complete_symbol_mode parameter.  Use
completion_skip_symbol.
(default_collect_symbol_completion_matches_break_on): Use
completion_skip_symbol.  Pass down mode.
(collect_file_symbol_completion_matches): Pass down mode.
* symtab.h (symbol_is_function_or_method): New declarations.
(completion_skip_symbol): New template function.
gdb/ChangeLog
gdb/ada-lang.c
gdb/symtab.c
gdb/symtab.h