* linespec.c: #include "stack.h".
(decode_line_with_current_source): Moved here from symtab.c and renamed from decode_line_spec. All callers updated. (decode_line_with_last_displayed): Moved here from breakpoint.c and renamed from decode_line_spec_1. All callers updated. * linespec.h (decode_line_with_current_source): Move declaration here from symtab.h and renamed from decode_line_spec. (decode_line_with_last_displayed): Move declaration here from symtab.h and renamed from decode_line_spec_1. * macrocmd.c: #include "linespec.h". * symtab.c: Remove #include "linespec.h".
This commit is contained in:
parent
a040981f62
commit
39cf75f7e0
12 changed files with 89 additions and 59 deletions
|
@ -1,3 +1,17 @@
|
|||
2012-06-29 Doug Evans <dje@google.com>
|
||||
|
||||
* linespec.c: #include "stack.h".
|
||||
(decode_line_with_current_source): Moved here from symtab.c and
|
||||
renamed from decode_line_spec. All callers updated.
|
||||
(decode_line_with_last_displayed): Moved here from breakpoint.c and
|
||||
renamed from decode_line_spec_1. All callers updated.
|
||||
* linespec.h (decode_line_with_current_source): Move declaration here
|
||||
from symtab.h and renamed from decode_line_spec.
|
||||
(decode_line_with_last_displayed): Move declaration here from symtab.h
|
||||
and renamed from decode_line_spec_1.
|
||||
* macrocmd.c: #include "linespec.h".
|
||||
* symtab.c: Remove #include "linespec.h".
|
||||
|
||||
2012-06-28 Doug Evans <dje@google.com>
|
||||
|
||||
* dwarf2read.c (get_cu_length): New function.
|
||||
|
|
|
@ -11532,7 +11532,8 @@ clear_command (char *arg, int from_tty)
|
|||
|
||||
if (arg)
|
||||
{
|
||||
sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
|
||||
sals = decode_line_with_current_source (arg,
|
||||
(DECODE_LINE_FUNFIRSTLINE
|
||||
| DECODE_LINE_LIST_MODE));
|
||||
default_match = 0;
|
||||
}
|
||||
|
@ -14494,27 +14495,6 @@ invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
|
|||
}
|
||||
}
|
||||
|
||||
/* Use the last displayed codepoint's values, or nothing
|
||||
if they aren't valid. */
|
||||
|
||||
struct symtabs_and_lines
|
||||
decode_line_spec_1 (char *string, int flags)
|
||||
{
|
||||
struct symtabs_and_lines sals;
|
||||
|
||||
if (string == 0)
|
||||
error (_("Empty line specification."));
|
||||
if (last_displayed_sal_is_valid ())
|
||||
sals = decode_line_1 (&string, flags,
|
||||
get_last_displayed_symtab (),
|
||||
get_last_displayed_line ());
|
||||
else
|
||||
sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
|
||||
if (*string)
|
||||
error (_("Junk at end of line specification: %s"), string);
|
||||
return sals;
|
||||
}
|
||||
|
||||
/* Create and insert a raw software breakpoint at PC. Return an
|
||||
identifier, which should be used to remove the breakpoint later.
|
||||
In general, places which call this should be using something on the
|
||||
|
|
|
@ -1140,7 +1140,7 @@ jump_command (char *arg, int from_tty)
|
|||
if (!arg)
|
||||
error_no_arg (_("starting address"));
|
||||
|
||||
sals = decode_line_spec_1 (arg, DECODE_LINE_FUNFIRSTLINE);
|
||||
sals = decode_line_with_last_displayed (arg, DECODE_LINE_FUNFIRSTLINE);
|
||||
if (sals.nelts != 1)
|
||||
{
|
||||
error (_("Unreasonable jump request"));
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "cli/cli-utils.h"
|
||||
#include "filenames.h"
|
||||
#include "ada-lang.h"
|
||||
#include "stack.h"
|
||||
|
||||
typedef struct symtab *symtab_p;
|
||||
DEF_VEC_P (symtab_p);
|
||||
|
@ -2325,6 +2326,8 @@ decode_line_full (char **argptr, int flags,
|
|||
do_cleanups (cleanups);
|
||||
}
|
||||
|
||||
/* See linespec.h. */
|
||||
|
||||
struct symtabs_and_lines
|
||||
decode_line_1 (char **argptr, int flags,
|
||||
struct symtab *default_symtab,
|
||||
|
@ -2345,6 +2348,51 @@ decode_line_1 (char **argptr, int flags,
|
|||
return result;
|
||||
}
|
||||
|
||||
/* See linespec.h. */
|
||||
|
||||
struct symtabs_and_lines
|
||||
decode_line_with_current_source (char *string, int flags)
|
||||
{
|
||||
struct symtabs_and_lines sals;
|
||||
struct symtab_and_line cursal;
|
||||
|
||||
if (string == 0)
|
||||
error (_("Empty line specification."));
|
||||
|
||||
/* We use whatever is set as the current source line. We do not try
|
||||
and get a default source symtab+line or it will recursively call us! */
|
||||
cursal = get_current_source_symtab_and_line ();
|
||||
|
||||
sals = decode_line_1 (&string, flags,
|
||||
cursal.symtab, cursal.line);
|
||||
|
||||
if (*string)
|
||||
error (_("Junk at end of line specification: %s"), string);
|
||||
return sals;
|
||||
}
|
||||
|
||||
/* See linespec.h. */
|
||||
|
||||
struct symtabs_and_lines
|
||||
decode_line_with_last_displayed (char *string, int flags)
|
||||
{
|
||||
struct symtabs_and_lines sals;
|
||||
|
||||
if (string == 0)
|
||||
error (_("Empty line specification."));
|
||||
|
||||
if (last_displayed_sal_is_valid ())
|
||||
sals = decode_line_1 (&string, flags,
|
||||
get_last_displayed_symtab (),
|
||||
get_last_displayed_line ());
|
||||
else
|
||||
sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
|
||||
|
||||
if (*string)
|
||||
error (_("Junk at end of line specification: %s"), string);
|
||||
return sals;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* First, some functions to initialize stuff at the beggining of the
|
||||
|
|
|
@ -93,6 +93,8 @@ extern void destroy_linespec_result (struct linespec_result *);
|
|||
extern struct cleanup *
|
||||
make_cleanup_destroy_linespec_result (struct linespec_result *);
|
||||
|
||||
/* Decode a linespec using the provided default symtab and line. */
|
||||
|
||||
extern struct symtabs_and_lines
|
||||
decode_line_1 (char **argptr, int flags,
|
||||
struct symtab *default_symtab, int default_line);
|
||||
|
@ -139,4 +141,15 @@ extern void decode_line_full (char **argptr, int flags,
|
|||
const char *select_mode,
|
||||
const char *filter);
|
||||
|
||||
/* Given a string, return the line specified by it, using the current
|
||||
source symtab and line as defaults.
|
||||
This is for commands like "list" and "breakpoint". */
|
||||
|
||||
extern struct symtabs_and_lines decode_line_with_current_source (char *, int);
|
||||
|
||||
/* Given a string, return the line specified by it, using the last displayed
|
||||
codepoint's values as defaults, or nothing if they aren't valid. */
|
||||
|
||||
extern struct symtabs_and_lines decode_line_with_last_displayed (char *, int);
|
||||
|
||||
#endif /* defined (LINESPEC_H) */
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "command.h"
|
||||
#include "gdbcmd.h"
|
||||
#include "gdb_string.h"
|
||||
#include "linespec.h"
|
||||
|
||||
|
||||
/* The `macro' prefix command. */
|
||||
|
@ -282,7 +283,8 @@ info_macros_command (char *args, int from_tty)
|
|||
ms = default_macro_scope ();
|
||||
else
|
||||
{
|
||||
struct symtabs_and_lines sals = decode_line_spec (args, 0);
|
||||
struct symtabs_and_lines sals =
|
||||
decode_line_with_current_source (args, 0);
|
||||
|
||||
if (sals.nelts)
|
||||
ms = sal_macro_scope (sals.sals[0]);
|
||||
|
|
|
@ -2436,7 +2436,8 @@ mi_cmd_trace_find (char *command, char **argv, int argc)
|
|||
if (argc != 2)
|
||||
error (_("Line is required"));
|
||||
|
||||
sals = decode_line_spec (argv[1], DECODE_LINE_FUNFIRSTLINE);
|
||||
sals = decode_line_with_current_source (argv[1],
|
||||
DECODE_LINE_FUNFIRSTLINE);
|
||||
back_to = make_cleanup (xfree, sals.sals);
|
||||
|
||||
sal = sals.sals[0];
|
||||
|
|
|
@ -243,7 +243,8 @@ select_source_symtab (struct symtab *s)
|
|||
if one exists. */
|
||||
if (lookup_symbol (main_name (), 0, VAR_DOMAIN, 0))
|
||||
{
|
||||
sals = decode_line_spec (main_name (), DECODE_LINE_FUNFIRSTLINE);
|
||||
sals = decode_line_with_current_source (main_name (),
|
||||
DECODE_LINE_FUNFIRSTLINE);
|
||||
sal = sals.sals[0];
|
||||
xfree (sals.sals);
|
||||
current_source_pspace = sal.pspace;
|
||||
|
@ -1405,7 +1406,7 @@ line_info (char *arg, int from_tty)
|
|||
}
|
||||
else
|
||||
{
|
||||
sals = decode_line_spec_1 (arg, DECODE_LINE_LIST_MODE);
|
||||
sals = decode_line_with_last_displayed (arg, DECODE_LINE_LIST_MODE);
|
||||
|
||||
dont_repeat ();
|
||||
}
|
||||
|
|
|
@ -2373,7 +2373,7 @@ func_command (char *arg, int from_tty)
|
|||
return;
|
||||
|
||||
frame = parse_frame_specification ("0");
|
||||
sals = decode_line_spec (arg, DECODE_LINE_FUNFIRSTLINE);
|
||||
sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
|
||||
cleanups = make_cleanup (xfree, sals.sals);
|
||||
func_bounds = (struct function_bounds *) xmalloc (
|
||||
sizeof (struct function_bounds) * sals.nelts);
|
||||
|
|
22
gdb/symtab.c
22
gdb/symtab.c
|
@ -33,7 +33,6 @@
|
|||
#include "language.h"
|
||||
#include "demangle.h"
|
||||
#include "inferior.h"
|
||||
#include "linespec.h"
|
||||
#include "source.h"
|
||||
#include "filenames.h" /* for FILENAME_CMP */
|
||||
#include "objc-lang.h"
|
||||
|
@ -4821,27 +4820,6 @@ skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr)
|
|||
return prologue_sal.pc;
|
||||
}
|
||||
|
||||
struct symtabs_and_lines
|
||||
decode_line_spec (char *string, int flags)
|
||||
{
|
||||
struct symtabs_and_lines sals;
|
||||
struct symtab_and_line cursal;
|
||||
|
||||
if (string == 0)
|
||||
error (_("Empty line specification."));
|
||||
|
||||
/* We use whatever is set as the current source line. We do not try
|
||||
and get a default or it will recursively call us! */
|
||||
cursal = get_current_source_symtab_and_line ();
|
||||
|
||||
sals = decode_line_1 (&string, flags,
|
||||
cursal.symtab, cursal.line);
|
||||
|
||||
if (*string)
|
||||
error (_("Junk at end of line specification: %s"), string);
|
||||
return sals;
|
||||
}
|
||||
|
||||
/* Track MAIN */
|
||||
static char *name_of_main;
|
||||
enum language language_of_main = language_unknown;
|
||||
|
|
|
@ -1113,13 +1113,6 @@ extern int find_line_pc_range (struct symtab_and_line, CORE_ADDR *,
|
|||
|
||||
extern void resolve_sal_pc (struct symtab_and_line *);
|
||||
|
||||
/* Given a string, return the line specified by it. For commands like "list"
|
||||
and "breakpoint". */
|
||||
|
||||
extern struct symtabs_and_lines decode_line_spec (char *, int);
|
||||
|
||||
extern struct symtabs_and_lines decode_line_spec_1 (char *, int);
|
||||
|
||||
/* Symmisc.c */
|
||||
|
||||
void maintenance_print_symbols (char *, int);
|
||||
|
|
|
@ -2494,7 +2494,7 @@ trace_find_line_command (char *args, int from_tty)
|
|||
}
|
||||
else
|
||||
{
|
||||
sals = decode_line_spec (args, DECODE_LINE_FUNFIRSTLINE);
|
||||
sals = decode_line_with_current_source (args, DECODE_LINE_FUNFIRSTLINE);
|
||||
sal = sals.sals[0];
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue