* 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.
This commit is contained in:
Fernando Nasser 2002-09-22 22:18:41 +00:00
parent c214a6fd4d
commit 53cb0458d6
6 changed files with 61 additions and 39 deletions

View 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

View 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. */

View 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;

View 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;

View 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);
/* Return the current source file for listing and next line to list.
If a file is not set, try and get a default.
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);
/* 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.
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

View 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);
}