* source.c (get_current_or_default_source_symtab_and_line): Remove
authorFernando Nasser <fnasser@redhat.com>
Sun, 22 Sep 2002 22:18:41 +0000 (22:18 +0000)
committerFernando Nasser <fnasser@redhat.com>
Sun, 22 Sep 2002 22:18:41 +0000 (22:18 +0000)
function.
(set_default_source_symtab_and_line): New function. Attempts to
determine a source file to list lines from if one is not currently
defined.
(get_current_source_symtab_and_line): Initialize sal.pc and
        sal.end fields.
(set_current_source_symtab_and_line): Mark argument as const.
* source.h: Update declarations and comments.
* linespec.c (decode_line_1): Replace call to removed routine above.
* stack.c (print_frame_info_base): Ditto.
* cli/cli-cmds.c (edit_command): Ditto.
(list_command): Ditto.

gdb/ChangeLog
gdb/cli/cli-cmds.c
gdb/linespec.c
gdb/source.c
gdb/source.h
gdb/stack.c

index e1866d1..8180ac7 100644 (file)
@@ -1,7 +1,23 @@
 2002-09-22  Fernando Nasser  <fnasser@redhat.com>
 
-       * source.c (get_current_source_symtab_and_line): Initialize sal.pc and
-       sal.end fields.
+       * source.c (get_current_or_default_source_symtab_and_line): Remove
+       function.
+       (set_default_source_symtab_and_line): New function. Attempts to
+       determine a source file to list lines from if one is not currently
+       defined.
+       (get_current_source_symtab_and_line): Initialize sal.pc and
+        sal.end fields.
+       (set_current_source_symtab_and_line): Mark argument as const.
+       * source.h: Update declarations and comments.
+       * linespec.c (decode_line_1): Replace call to removed routine above.
+       * stack.c (print_frame_info_base): Ditto.
+       * cli/cli-cmds.c (edit_command): Ditto.
+       (list_command): Ditto.
+
+2002-09-22  Fernando Nasser  <fnasser@redhat.com>
+
+       * source.c (get_current__or_default_source_symtab_and_line): Initialize
+       sal.pc and sal.end fields.
        (get_current_or_default_source_symtab_and_line): Ditto.
        * breakpoint.c (parse_breakpoint_sals): Use correct accessor function
        so we do not cause a new source symtab to be searched for (reverting an
index 0b5b857..c44975a 100644 (file)
@@ -552,7 +552,10 @@ edit_command (char *arg, int from_tty)
 
   /* Pull in the current default source line if necessary */
   if (arg == 0)
-    sal = get_current_or_default_source_symtab_and_line ();
+    {
+      set_default_source_symtab_and_line ();
+      sal = get_current_source_symtab_and_line ();
+    }
 
   /* bare "edit" edits file with present line.  */
 
@@ -655,7 +658,10 @@ list_command (char *arg, int from_tty)
 
   /* Pull in the current default source line if necessary */
   if (arg == 0 || arg[0] == '+' || arg[0] == '-')
-    cursal = get_current_or_default_source_symtab_and_line ();
+    {
+      set_default_source_symtab_and_line ();
+      cursal = get_current_source_symtab_and_line ();
+    }
 
   /* "l" or "l +" lists next ten lines.  */
 
index d1bb4e3..5631fd3 100644 (file)
@@ -1027,13 +1027,16 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
       /* This is where we need to make sure that we have good defaults.
          We must guarantee that this section of code is never executed
          when we are called with just a function name, since
-        get_current_or_default_source_symtab_and_line uses
+        set_default_source_symtab_and_line uses
          select_source_symtab that calls us with such an argument  */
 
       if (s == 0 && default_symtab == 0)
        {
-          struct symtab_and_line cursal =
-                 get_current_or_default_source_symtab_and_line ();
+          struct symtab_and_line cursal;
+
+         /* Make sure we have at least a default source file. */
+         set_default_source_symtab_and_line ();
+          cursal = get_current_source_symtab_and_line ();
       
           default_symtab = cursal.symtab;
           default_line = cursal.line;
index d2e47fe..5c88a55 100644 (file)
@@ -152,21 +152,22 @@ get_current_source_symtab_and_line (void)
 
   cursal.symtab = current_source_symtab;
   cursal.line = current_source_line;
+  cursal.pc = 0;
+  cursal.end = 0;
   
   return cursal;
 }
 
-/* Return the current source file for listing and next line to list.
-   If a file is not set, try and get a default.
+/* If the current source file for listing is not set, try and get a default.
+   Usually called before get_current_source_symtab_and_line() is called.
    It may err out if a default cannot be determined.
-   Depending on where it is called, it can recurse as the process of
-   determining a new default may call the caler!
-   Use get_current_source_symtab_and_line instead to get whatever
-   we have without erroring out or trying to get a default.
-   NOTE: The returned sal pc and end fields are not valid. */
+   We must be cautious about where it is called, as it can recurse as the
+   process of determining a new default may call the caller!
+   Use get_current_source_symtab_and_line only to get whatever
+   we have without erroring out or trying to get a default. */
    
-struct symtab_and_line
-get_current_or_default_source_symtab_and_line (void)
+void
+set_default_source_symtab_and_line (void)
 {
   struct symtab_and_line cursal;
 
@@ -176,21 +177,15 @@ get_current_or_default_source_symtab_and_line (void)
   /* Pull in a current source symtab if necessary */
   if (current_source_symtab == 0)
     select_source_symtab (0);
-  
-  cursal.symtab = current_source_symtab;
-  cursal.line = current_source_line;
-  cursal.pc = 0;
-  cursal.end = 0;
-  
-  return cursal;
 }
 
 /* Return the current default file for listing and next line to list
    (the returned sal pc and end fields are not valid.)
-   and set the surrent default to whatever is in SAL */
+   and set the current default to whatever is in SAL.
+   NOTE: The returned sal pc and end fields are not valid. */
    
 struct symtab_and_line
-set_current_source_symtab_and_line (struct symtab_and_line *sal)
+set_current_source_symtab_and_line (const struct symtab_and_line *sal)
 {
   struct symtab_and_line cursal;
   
index 84cd0ff..ba7d45f 100644 (file)
@@ -44,23 +44,23 @@ extern int get_lines_to_list (void);
 
 /* Return the current source file for listing and next line to list.
    NOTE: The returned sal pc and end fields are not valid. */
-extern void clear_current_source_symtab_and_line (void);
+extern struct symtab_and_line get_current_source_symtab_and_line (void);
 
-/* Return the current source file for listing and next line to list.
-   If a file is not set, try and get a default.
+/* If the current source file for listing is not set, try and get a default.
+   Usually called before get_current_source_symtab_and_line() is called.
    It may err out if a default cannot be determined.
-   Depending on where it is called, it can recurse as the process of
-   determining a new default may call the caler!
-   Use get_current_source_symtab_and_line instead to get whatever
-   we have without erroring out or trying to get a default.
-   NOTE: The returned sal pc and end fields are not valid. */
-extern struct symtab_and_line get_current_source_symtab_and_line (void);
+   We must be cautious about where it is called, as it can recurse as the
+   process of determining a new default may call the caller!
+   Use get_current_source_symtab_and_line only to get whatever
+   we have without erroring out or trying to get a default. */
+extern void set_default_source_symtab_and_line (void);
 
 /* Return the current default file for listing and next line to list
    (the returned sal pc and end fields are not valid.)
-   and set the surrent default to whatever is in SAL */
-extern struct symtab_and_line get_current_or_default_source_symtab_and_line (void);
+   and set the current default to whatever is in SAL.
+   NOTE: The returned sal pc and end fields are not valid. */
+extern struct symtab_and_line set_current_source_symtab_and_line (const struct symtab_and_line *);
 
 /* Reset any information stored about a default file and line to print. */
-extern struct symtab_and_line set_current_source_symtab_and_line (struct symtab_and_line *);
+extern void clear_current_source_symtab_and_line (void);
 #endif
index 4f41531..83fd26e 100644 (file)
@@ -434,7 +434,9 @@ print_frame_info_base (struct frame_info *fi, int level, int source, int args)
              print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
            }
        }
-      cursal = get_current_or_default_source_symtab_and_line ();
+      /* Make sure we have at least a default source file */
+      set_default_source_symtab_and_line ();
+      cursal = get_current_source_symtab_and_line ();
       cursal.line = max (sal.line - get_lines_to_list () / 2, 1);
       set_current_source_symtab_and_line (&cursal);
     }