gdb: Remove an update of current_source_line and current_source_symtab
[deliverable/binutils-gdb.git] / gdb / source.c
index 5fa55e2c16023fb4cc6fcba4511f9e660ff621c4..dec5a2f84bab5490c19a66b11f1e8bc0d1867457 100644 (file)
@@ -1129,7 +1129,7 @@ symtab_to_filename_for_display (struct symtab *symtab)
    to be open on descriptor DESC.
    All set S->nlines to the number of such lines.  */
 
-void
+static void
 find_source_lines (struct symtab *s, int desc)
 {
   struct stat st;
@@ -1196,41 +1196,20 @@ find_source_lines (struct symtab *s, int desc)
 
 \f
 
-/* Get full pathname and line number positions for a symtab.
-   Set *FULLNAME to actual name of the file as found by `openp',
-   or to 0 if the file is not found.  */
-
-static void
-get_filename_and_charpos (struct symtab *s)
-{
-  scoped_fd desc = open_source_file (s);
-  if (desc.get () < 0)
-    return;
-  if (s->line_charpos == 0)
-    find_source_lines (s, desc.get ());
-}
-
 /* See source.h.  */
 
-int
-identify_source_line (struct symtab *s, int line, int mid_statement,
-                     CORE_ADDR pc)
+scoped_fd
+open_source_file_with_line_charpos (struct symtab *s)
 {
-  if (s->line_charpos == 0)
-    get_filename_and_charpos (s);
-  if (s->fullname == 0)
-    return 0;
-  if (line > s->nlines)
-    /* Don't index off the end of the line_charpos array.  */
-    return 0;
-  annotate_source (s->fullname, line, s->line_charpos[line - 1],
-                  mid_statement, get_objfile_arch (SYMTAB_OBJFILE (s)), pc);
+  scoped_fd fd (open_source_file (s));
+  if (fd.get () < 0)
+    return fd;
 
-  current_source_line = line;
-  current_source_symtab = s;
-  clear_lines_listed_range ();
-  return 1;
+  if (s->line_charpos == nullptr)
+    find_source_lines (s, fd.get ());
+  return fd;
 }
+
 \f
 
 /* Print source lines from the file of symtab S,
@@ -1517,8 +1496,8 @@ info_line_command (const char *arg, int from_tty)
 
          /* If this is the only line, show the source code.  If it could
             not find the file, don't do anything special.  */
-         if (annotation_level && sals.size () == 1)
-           identify_source_line (sal.symtab, sal.line, 0, start_pc);
+         if (sals.size () == 1)
+           annotate_source_line (sal.symtab, sal.line, 0, start_pc);
        }
       else
        /* Is there any case in which we get here, and have an address
@@ -1545,13 +1524,10 @@ search_command_helper (const char *regex, int from_tty, bool forward)
   if (current_source_symtab == 0)
     select_source_symtab (0);
 
-  scoped_fd desc = open_source_file (current_source_symtab);
+  scoped_fd desc (open_source_file_with_line_charpos (current_source_symtab));
   if (desc.get () < 0)
     perror_with_name (symtab_to_filename_for_display (current_source_symtab));
 
-  if (current_source_symtab->line_charpos == 0)
-    find_source_lines (current_source_symtab, desc.get ());
-
   int line = (forward
              ? last_line_listed + 1
              : last_line_listed - 1);
This page took 0.028188 seconds and 4 git commands to generate.