summaryrefslogtreecommitdiff
path: root/gdb/linespec.c
diff options
context:
space:
mode:
authoralianwar <alianwar>2013-08-12 11:54:03 +0000
committeralianwar <alianwar>2013-08-12 11:54:03 +0000
commit166fb188213f811fe065b4d3f4549ab387e15d4f (patch)
tree1f68149a9203015a3b137359a800f0f5d574c5a5 /gdb/linespec.c
parent5a3a8ca11d33cf29608c6c6843421ced5e8bea9c (diff)
downloadgdb-166fb188213f811fe065b4d3f4549ab387e15d4f.tar.gz
? .deps
? Makefile ? ada-exp.c ? ada-lex.c ? build-gnulib ? c-exp.c ? config.cache ? config.h ? config.log ? config.status ? cp-name-parser.c ? f-exp.c ? gcore ? gdb ? gdb-gdb.gdb ? go-exp.c ? init.c ? jit-reader.h ? jv-exp.c ? m2-exp.c ? observer.h ? observer.inc ? p-exp.c ? stamp-h ? stamp-xml ? version.c ? xml-builtin.c ? data-directory/Makefile ? data-directory/python ? data-directory/stamp-python ? data-directory/stamp-syscalls ? data-directory/stamp-system-gdbinit ? data-directory/syscalls ? data-directory/system-gdbinit ? doc/Makefile ? gdbserver/.deps ? gdbserver/Makefile ? gdbserver/build-gnulib-gdbserver ? gdbserver/config.cache ? gdbserver/config.h ? gdbserver/config.log ? gdbserver/config.status ? gdbserver/gdbreplay ? gdbserver/gdbserver ? gdbserver/i386-avx-linux.c ? gdbserver/i386-linux.c ? gdbserver/i386-mmx-linux.c ? gdbserver/stamp-h ? gdbserver/stamp-xml ? gdbserver/version.c ? gdbserver/xml-builtin.c ? testsuite/Makefile ? testsuite/config.log ? testsuite/config.status ? testsuite/gdb.log ? testsuite/gdb.sum ? testsuite/site.exp ? testsuite/gdb.ada/Makefile ? testsuite/gdb.arch/Makefile ? testsuite/gdb.asm/Makefile ? testsuite/gdb.base/Makefile ? testsuite/gdb.btrace/Makefile ? testsuite/gdb.cell/Makefile ? testsuite/gdb.cp/Makefile ? testsuite/gdb.disasm/Makefile ? testsuite/gdb.dwarf2/Makefile ? testsuite/gdb.fortran/Makefile ? testsuite/gdb.go/Makefile ? testsuite/gdb.hp/Makefile ? testsuite/gdb.hp/gdb.aCC/Makefile ? testsuite/gdb.hp/gdb.base-hp/Makefile ? testsuite/gdb.hp/gdb.compat/Makefile ? testsuite/gdb.hp/gdb.defects/Makefile ? testsuite/gdb.hp/gdb.objdbg/Makefile ? testsuite/gdb.java/Makefile ? testsuite/gdb.linespec/Makefile ? testsuite/gdb.mi/Makefile ? testsuite/gdb.modula2/Makefile ? testsuite/gdb.multi/Makefile ? testsuite/gdb.objc/Makefile ? testsuite/gdb.opencl/Makefile ? testsuite/gdb.opt/Makefile ? testsuite/gdb.pascal/Makefile ? testsuite/gdb.python/Makefile ? testsuite/gdb.reverse/Makefile ? testsuite/gdb.server/Makefile ? testsuite/gdb.stabs/Makefile ? testsuite/gdb.threads/Makefile ? testsuite/gdb.threads/threadapply ? testsuite/gdb.trace/Makefile ? testsuite/gdb.xml/Makefile RCS file: /cvs/src/src/gdb/.dir-locals.el,v Working file: .dir-locals.el head: 1.2 branch: locks: strict access list: symbolic names: gdb_7_6-2013-04-26-release: 1.2 gdb_7_6-branch: 1.2.0.2 gdb_7_6-2013-03-12-branchpoint: 1.2 gdb_7_5_1-2012-11-29-release: 1.1 gdb_7_5-2012-08-17-release: 1.1 gdb_7_5-branch: 1.1.0.2 gdb_7_5-2012-07-18-branchpoint: 1.1 keyword substitution: kv total revisions: 2; selected revisions: 2 description:
Diffstat (limited to 'gdb/linespec.c')
-rw-r--r--gdb/linespec.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 019a9f80a3f..45d7817c978 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -1646,7 +1646,7 @@ linespec_parse_basic (linespec_parser *parser)
else
{
/* NAME was not a function or a method. So it must be a label
- name. */
+ name or user specified variable like "break foo.c:$zippo". */
labels = find_label_symbols (PARSER_STATE (parser), NULL,
&symbols, name);
if (labels != NULL)
@@ -1657,6 +1657,22 @@ linespec_parse_basic (linespec_parser *parser)
symbols = NULL;
discard_cleanups (cleanup);
}
+ else if (token.type == LSTOKEN_STRING
+ && *LS_TOKEN_STOKEN (token).ptr == '$')
+ {
+ /* User specified a convenience variable or history value. */
+ PARSER_RESULT (parser)->line_offset
+ = linespec_parse_variable (PARSER_STATE (parser), name);
+
+ if (PARSER_RESULT (parser)->line_offset.sign == LINE_OFFSET_UNKNOWN)
+ {
+ /* The user-specified variable was not valid. Do not
+ throw an error here. parse_linespec will do it for us. */
+ PARSER_RESULT (parser)->function_name = name;
+ discard_cleanups (cleanup);
+ return;
+ }
+ }
else
{
/* The name is also not a label. Abort parsing. Do not throw