diff options
author | Tom Tromey <tromey@redhat.com> | 2008-06-06 20:58:08 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-06-06 20:58:08 +0000 |
commit | 65d12d83a581c833b3c09acead57dd1134154e46 (patch) | |
tree | 5115b47443ba264269ce3c9445015317a78ceeea /gdb/doc | |
parent | 90aa6a4044aa608595b9a97944e27541bdd4ebf7 (diff) | |
download | gdb-65d12d83a581c833b3c09acead57dd1134154e46.zip gdb-65d12d83a581c833b3c09acead57dd1134154e46.tar.gz gdb-65d12d83a581c833b3c09acead57dd1134154e46.tar.bz2 |
gdb
* value.h (evaluate_subexpression_type, extract_field_op):
Declare.
* printcmd.c (_initialize_printcmd): Use expression_completer for
'p', 'inspect', 'call'.
* parser-defs.h (parse_field_expression): Declare.
* parse.c: Include exceptions.h.
(in_parse_field, expout_last_struct): New globals.
(mark_struct_expression): New function.
(prefixify_expression): Return int.
(prefixify_subexp): Return int. Use expout_last_struct.
(parse_exp_1): Update.
(parse_exp_in_context): Add 'out_subexp' argument. Handle
in_parse_field.
(parse_field_expression): New function.
* expression.h (parse_field_expression): Declare.
(in_parse_field): Likewise.
* eval.c (evaluate_subexpression_type): New function.
(extract_field_op): Likewise.
* completer.h (expression_completer): Declare.
* completer.c (expression_completer): New function.
(count_struct_fields, add_struct_fields): New functions.
* c-exp.y (yyparse): Redefine.
(COMPLETE): New token.
(exp): New productions.
(saw_name_at_eof, last_was_structop): New globals.
(yylex): Return COMPLETE when needed. Recognize in_parse_field.
(c_parse): New function.
* breakpoint.c (_initialize_breakpoint): Use expression_completer
for watch, awatch, and rwatch.
* Makefile.in (parse.o): Depend on exceptions_h.
gdb/testsuite
* gdb.base/break1.c (struct some_struct): New struct.
(values): New global.
* gdb.base/completion.exp: Add field name completion test.
gdb/doc
* gdb.texinfo (Completion): Add field name example.
Diffstat (limited to 'gdb/doc')
-rw-r--r-- | gdb/doc/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 40 |
2 files changed, 43 insertions, 1 deletions
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index a6f98e6..c249253 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,3 +1,7 @@ +2008-06-06 Tom Tromey <tromey@redhat.com> + + * gdb.texinfo (Completion): Add field name example. + 2008-06-06 Marc Khouzam <marc.khouzam@ericsson.com> * gdb.texinfo (GDB/MI Program Context): Added example diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 9915ea1..5cef05b 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, -@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +@c 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008 @c Free Software Foundation, Inc. @c @c %**start of header @@ -1531,6 +1531,44 @@ Expressions, ,C@t{++} Expressions}. You can use the command @code{set overload-resolution off} to disable overload resolution; see @ref{Debugging C Plus Plus, ,@value{GDBN} Features for C@t{++}}. +@cindex completion of structure field names +@cindex structure field name completion +@cindex completion of union field names +@cindex union field name completion +When completing in an expression which looks up a field in a +structure, @value{GDBN} also tries@footnote{The completer can be +confused by certain kinds of invalid expressions. Also, it only +examines the static type of the expression, not the dynamic type.} to +limit completions to the field names available in the type of the +left-hand-side: + +@smallexample +(@value{GDBP}) p gdb_stdout.@kbd{M-?} +magic to_delete to_fputs to_put to_rewind +to_data to_flush to_isatty to_read to_write +@end smallexample + +@noindent +This is because the @code{gdb_stdout} is a variable of the type +@code{struct ui_file} that is defined in @value{GDBN} sources as +follows: + +@smallexample +struct ui_file +@{ + int *magic; + ui_file_flush_ftype *to_flush; + ui_file_write_ftype *to_write; + ui_file_fputs_ftype *to_fputs; + ui_file_read_ftype *to_read; + ui_file_delete_ftype *to_delete; + ui_file_isatty_ftype *to_isatty; + ui_file_rewind_ftype *to_rewind; + ui_file_put_ftype *to_put; + void *to_data; +@} +@end smallexample + @node Help @section Getting Help |