diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:13:31 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:13:31 +0000 |
commit | 05cba821addfe83535ad36f7487d1d2bbac48ba2 (patch) | |
tree | 01f05878995058932e67caa78def1d1df1e572d5 /gdb/skip.c | |
parent | 1b56eb55405f0222188073473e1ab563899424ca (diff) | |
download | gdb-05cba821addfe83535ad36f7487d1d2bbac48ba2.zip gdb-05cba821addfe83535ad36f7487d1d2bbac48ba2.tar.gz gdb-05cba821addfe83535ad36f7487d1d2bbac48ba2.tar.bz2 |
gdb/
* ada-lang.c (user_select_syms): Replace symtab->filename refererences
by symtab_to_filename_for_display calls.
* breakpoint.c (print_breakpoint_location, resolve_sal_pc): Likewise.
(clear_command): New variable sal_fullname, initialize it. Replace
compare_filenames_for_search by filename_cmp with sal_fullname.
(say_where, update_static_tracepoint): Replace symtab->filename
refererences by symtab_to_filename_for_display calls.
* cli/cli-cmds.c (edit_command, list_command, ambiguous_line_spec):
Likewise.
* dwarf2read.c: Include source.h.
(fixup_go_packaging): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
* linespec.c (add_sal_to_sals): Rename variable filename to fullname.
Replace symtab->filename refererences by symtab_to_filename_for_display
calls.
(create_sals_line_offset, convert_linespec_to_sals): New variable
fullname, initialize it, replace symtab->filename reference by the
variable.
* linux-fork.c: Include source.h.
(info_checkpoints_command): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
* macroscope.c (sal_macro_scope): Replace symtab->filename refererences
by symtab_to_filename_for_display calls.
* mdebugread.c: Include source.h.
(psymtab_to_symtab_1): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
(mi_cmd_file_list_exec_source_files): Likewise.
* printcmd.c: Include source.h.
(build_address_symbolic): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
* psymtab.c (partial_map_symtabs_matching_filename)
(read_psymtabs_with_fullname): Call compare_filenames_for_search also
with psymtab_to_fullname.
* python/py-symtab.c (stpy_str): Replace symtab->filename refererences
by symtab_to_filename_for_display calls.
(stpy_get_filename): New variable filename, initialize it, use instead
of symtab->filename refererences.
(salpy_str): Make variable filename const char *. Replace
symtab->filename refererences by symtab_to_filename_for_display calls.
* skip.c: Include source.h and filenames.h.
(skip_file_command): Remove const from the symtab variable. Replace
symtab->filename refererences by symtab_to_fullname call.
(function_name_is_marked_for_skip): New variables searched_for_fullname
and fullname. Use them to search also with symtab's fullname.
* source.c (find_source_lines): Replace symtab->filename refererences
by symtab_to_filename_for_display calls.
(print_source_lines_base): New variable filename, use it instead of
symtab->filename. Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
(line_info, forward_search_command): Replace symtab->filename
refererences by symtab_to_filename_for_display calls.
(reverse_search_command): Replace symtab->filename refererences by
symtab_to_filename_for_display calls. New variable filename for it.
* stack.c (frame_info): Likewise.
* symmisc.c: Include source.h.
(dump_objfile, dump_symtab_1, maintenance_print_symbols)
(maintenance_info_symtabs): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
* symtab.c (iterate_over_some_symtabs): Call
compare_filenames_for_search also with symtab_to_fullname.
(lookup_symbol_aux_quick, basic_lookup_transparent_type_quick): Replace
symtab->filename refererences by symtab_to_filename_for_display calls.
(find_line_symtab): Replace symtab->filename refererences by
symtab_to_filename_for_display calls.
(file_matches): Replace filename_cmp by compare_filenames_for_search.
(print_symbol_info): Make the last parameter const char *. New
variable s_filename. Use it in the function.
(symtab_symbol_info): Make the last_filename variable const char *.
Replace symtab->filename refererences by symtab_to_filename_for_display
calls.
(rbreak_command): New variable fullname. Use it. Replace
symtab->filename refererence by symtab_to_filename_for_display call.
* tracepoint.c (set_traceframe_context, trace_find_line_command)
(print_one_static_tracepoint_marker): Replace symtab->filename
refererences by symtab_to_filename_for_display calls.
* tui/tui-source.c (tui_set_source_content): New variables filename and
s_filename. Replace symtab->filename refererences by this variable.
Replace other symtab->filename refererences by
symtab_to_filename_for_display calls.
Diffstat (limited to 'gdb/skip.c')
-rw-r--r-- | gdb/skip.c | 49 |
1 files changed, 40 insertions, 9 deletions
@@ -32,6 +32,8 @@ #include "objfiles.h" #include "exceptions.h" #include "breakpoint.h" /* for get_sal_arch () */ +#include "source.h" +#include "filenames.h" struct skiplist_entry { @@ -69,7 +71,7 @@ static void skip_file_command (char *arg, int from_tty) { struct skiplist_entry *e; - const struct symtab *symtab; + struct symtab *symtab; const char *filename = NULL; /* If no argument was given, try to default to the last @@ -79,8 +81,10 @@ skip_file_command (char *arg, int from_tty) symtab = get_last_displayed_symtab (); if (symtab == NULL) error (_("No default file now.")); - else - filename = symtab->filename; + + /* It is not a typo, symtab_to_filename_for_display woule be needlessly + ambiguous. */ + filename = symtab_to_fullname (symtab); } else { @@ -91,8 +95,9 @@ skip_file_command (char *arg, int from_tty) if (!nquery (_("\ Ignore file pending future shared library load? "))) return; - } + /* Do not use SYMTAB's filename, later loaded shared libraries may match + given ARG but not SYMTAB's filename. */ filename = arg; } @@ -330,6 +335,8 @@ int function_name_is_marked_for_skip (const char *function_name, const struct symtab_and_line *function_sal) { + int searched_for_fullname = 0; + const char *fullname = NULL; struct skiplist_entry *e; if (function_name == NULL) @@ -345,11 +352,35 @@ function_name_is_marked_for_skip (const char *function_name, && strcmp_iw (function_name, e->function_name) == 0) return 1; - if (e->filename != NULL && function_sal->symtab != NULL - && function_sal->symtab->filename != NULL - && compare_filenames_for_search (function_sal->symtab->filename, - e->filename)) - return 1; + if (e->filename != NULL) + { + /* Check first sole SYMTAB->FILENAME. It does not need to be + a substring of symtab_to_fullname as it may contain "./" etc. */ + if (function_sal->symtab != NULL + && compare_filenames_for_search (function_sal->symtab->filename, + e->filename)) + return 1; + + /* Before we invoke realpath, which can get expensive when many + files are involved, do a quick comparison of the basenames. */ + if (!basenames_may_differ + && (function_sal->symtab == NULL + || filename_cmp (lbasename (function_sal->symtab->filename), + lbasename (e->filename)) != 0)) + continue; + + /* Get the filename corresponding to this FUNCTION_SAL, if we haven't + yet. */ + if (!searched_for_fullname) + { + if (function_sal->symtab != NULL) + fullname = symtab_to_fullname (function_sal->symtab); + searched_for_fullname = 1; + } + if (fullname != NULL + && compare_filenames_for_search (fullname, e->filename)) + return 1; + } } return 0; |