* 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:
Doug Evans
2012-06-29 22:46:46 +00:00
parent a040981f62
commit 39cf75f7e0
12 changed files with 89 additions and 59 deletions
+14
View File
@@ -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.
+3 -23
View File
@@ -11532,8 +11532,9 @@ clear_command (char *arg, int from_tty)
if (arg)
{
sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
| DECODE_LINE_LIST_MODE));
sals = decode_line_with_current_source (arg,
(DECODE_LINE_FUNFIRSTLINE
| DECODE_LINE_LIST_MODE));
default_match = 0;
}
else
@@ -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
+1 -1
View File
@@ -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"));
+48
View File
@@ -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
+13
View File
@@ -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) */
+3 -1
View File
@@ -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]);
+2 -1
View File
@@ -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];
+3 -2
View File
@@ -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 ();
}
+1 -1
View File
@@ -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
View File
@@ -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;
-7
View File
@@ -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);
+1 -1
View File
@@ -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];
}