* 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>
|
2002-09-22 Fernando Nasser <fnasser@redhat.com>
|
||||||
|
|
||||||
* source.c (get_current_source_symtab_and_line): Initialize sal.pc and
|
* 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.
|
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.
|
(get_current_or_default_source_symtab_and_line): Ditto.
|
||||||
* breakpoint.c (parse_breakpoint_sals): Use correct accessor function
|
* breakpoint.c (parse_breakpoint_sals): Use correct accessor function
|
||||||
so we do not cause a new source symtab to be searched for (reverting an
|
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 */
|
/* Pull in the current default source line if necessary */
|
||||||
if (arg == 0)
|
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. */
|
/* 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 */
|
/* Pull in the current default source line if necessary */
|
||||||
if (arg == 0 || arg[0] == '+' || arg[0] == '-')
|
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. */
|
/* "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.
|
/* This is where we need to make sure that we have good defaults.
|
||||||
We must guarantee that this section of code is never executed
|
We must guarantee that this section of code is never executed
|
||||||
when we are called with just a function name, since
|
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 */
|
select_source_symtab that calls us with such an argument */
|
||||||
|
|
||||||
if (s == 0 && default_symtab == 0)
|
if (s == 0 && default_symtab == 0)
|
||||||
{
|
{
|
||||||
struct symtab_and_line cursal =
|
struct symtab_and_line 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 ();
|
||||||
|
|
||||||
default_symtab = cursal.symtab;
|
default_symtab = cursal.symtab;
|
||||||
default_line = cursal.line;
|
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.symtab = current_source_symtab;
|
||||||
cursal.line = current_source_line;
|
cursal.line = current_source_line;
|
||||||
|
cursal.pc = 0;
|
||||||
|
cursal.end = 0;
|
||||||
|
|
||||||
return cursal;
|
return cursal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the current source file for listing and next line to list.
|
/* If the current source file for listing is not set, try and get a default.
|
||||||
If a file 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.
|
It may err out if a default cannot be determined.
|
||||||
Depending on where it is called, it can recurse as the process of
|
We must be cautious about where it is called, as it can recurse as the
|
||||||
determining a new default may call the caler!
|
process of determining a new default may call the caller!
|
||||||
Use get_current_source_symtab_and_line instead to get whatever
|
Use get_current_source_symtab_and_line only to get whatever
|
||||||
we have without erroring out or trying to get a default.
|
we have without erroring out or trying to get a default. */
|
||||||
NOTE: The returned sal pc and end fields are not valid. */
|
|
||||||
|
|
||||||
struct symtab_and_line
|
void
|
||||||
get_current_or_default_source_symtab_and_line (void)
|
set_default_source_symtab_and_line (void)
|
||||||
{
|
{
|
||||||
struct symtab_and_line cursal;
|
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 */
|
/* Pull in a current source symtab if necessary */
|
||||||
if (current_source_symtab == 0)
|
if (current_source_symtab == 0)
|
||||||
select_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
|
/* Return the current default file for listing and next line to list
|
||||||
(the returned sal pc and end fields are not valid.)
|
(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
|
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;
|
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.
|
/* Return the current source file for listing and next line to list.
|
||||||
NOTE: The returned sal pc and end fields are not valid. */
|
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);
|
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
|
/* Return the current default file for listing and next line to list
|
||||||
(the returned sal pc and end fields are not valid.)
|
(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.
|
||||||
extern struct symtab_and_line get_current_or_default_source_symtab_and_line (void);
|
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. */
|
/* 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
|
#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);
|
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);
|
cursal.line = max (sal.line - get_lines_to_list () / 2, 1);
|
||||||
set_current_source_symtab_and_line (&cursal);
|
set_current_source_symtab_and_line (&cursal);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue