+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.
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
}
}
-/* 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
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"));
#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);
do_cleanups (cleanups);
}
+/* See linespec.h. */
+
struct symtabs_and_lines
decode_line_1 (char **argptr, int flags,
struct symtab *default_symtab,
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;
+}
+
\f
/* First, some functions to initialize stuff at the beggining of the
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);
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) */
#include "command.h"
#include "gdbcmd.h"
#include "gdb_string.h"
+#include "linespec.h"
\f
/* The `macro' prefix command. */
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]);
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];
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;
}
else
{
- sals = decode_line_spec_1 (arg, DECODE_LINE_LIST_MODE);
+ sals = decode_line_with_last_displayed (arg, DECODE_LINE_LIST_MODE);
dont_repeat ();
}
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);
#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"
return prologue_sal.pc;
}
\f
-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;
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);
}
else
{
- sals = decode_line_spec (args, DECODE_LINE_FUNFIRSTLINE);
+ sals = decode_line_with_current_source (args, DECODE_LINE_FUNFIRSTLINE);
sal = sals.sals[0];
}