From 00df30ae1ea6db8f3693cad8a499f55f1d66e913 Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Fri, 14 Jun 2019 22:16:52 +0100 Subject: gdb: New function to open source file and compute line charpos data Every place that a symtab's line_charpos data is loaded always follows the same pattern, so create a new function to contain this logic and make use of it throughout GDB. There should be no user visible changes after this commit. gdb/ChangeLog: * source-cache.c (source_cache::get_plain_source_lines): Use open_source_file_with_line_charpos instead of just open_source_file, remove call to find_source_lines. (source_cache::get_source_lines): Likewise. * source.c (find_source_lines): Make static. (get_filename_and_charpos): Renamed into... (open_source_file_with_line_charpos): ..this along with changes to return a scoped_fd, and some other minor clean ups. (identify_source_line): Use open_source_file_with_line_charpos. (search_command_helper): Use open_source_file_with_line_charpos instead of just open_source_file, remove call to find_source_lines. * source.h (open_source_file_with_line_charpos): Declare new function. (find_source_lines): Delete declaration. --- gdb/source-cache.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'gdb/source-cache.c') diff --git a/gdb/source-cache.c b/gdb/source-cache.c index d2fb4b8..2d5b549 100644 --- a/gdb/source-cache.c +++ b/gdb/source-cache.c @@ -49,13 +49,10 @@ bool source_cache::get_plain_source_lines (struct symtab *s, int first_line, int last_line, std::string *lines) { - scoped_fd desc (open_source_file (s)); + scoped_fd desc (open_source_file_with_line_charpos (s)); if (desc.get () < 0) return false; - if (s->line_charpos == 0) - find_source_lines (s, desc.get ()); - if (first_line < 1 || first_line > s->nlines || last_line < 1) return false; @@ -202,10 +199,9 @@ source_cache::get_source_lines (struct symtab *s, int first_line, { if (s->line_charpos == 0) { - scoped_fd desc = open_source_file (s); + scoped_fd desc (open_source_file_with_line_charpos (s)); if (desc.get () < 0) return false; - find_source_lines (s, desc.get ()); /* FULLNAME points to a value owned by the symtab (symtab::fullname). Calling open_source_file reallocates -- cgit v1.1