* 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:
parent
c214a6fd4d
commit
53cb0458d6
6 changed files with 61 additions and 39 deletions
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
31
gdb/source.c
31
gdb/source.c
|
@ -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;
|
||||
|
||||
|
|
26
gdb/source.h
26
gdb/source.h
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue