diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/cp-valprint.c | 15 | ||||
-rw-r--r-- | gdb/defs.h | 5 | ||||
-rw-r--r-- | gdb/printcmd.c | 49 | ||||
-rw-r--r-- | gdb/valprint.c | 11 |
5 files changed, 88 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d1ae961..e4367ff 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +Wed Apr 20 19:41:21 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * printcmd.c (print_command_1): Annotate the top-level expressions + that we print. + (print_frame_args): Annotate each argument. + * printcmd.c, defs.h (print_value_flags): New function. + * cp-valprint.c (cp_print_value_fields): Annotate each field. + * valprint.c (val_print_array_elements): Annotate each array element. + Wed Apr 20 13:18:41 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) * findvar.c (read_var_value): Handle LOC_REPARM_ADDR case correctly, diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index c6e9b16..89a9eb2 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -276,11 +276,23 @@ cp_print_value_fields (type, valaddr, stream, format, recurse, pretty, } else { + if (annotation_level > 1) + printf_filtered ("\n\032\032field-name-begin\n"); fprintf_symbol_filtered (stream, TYPE_FIELD_NAME (type, i), language_cplus, DMGL_PARAMS | DMGL_ANSI); + if (annotation_level > 1) + printf_filtered ("\n\032\032field-name-end\n"); fputs_filtered (" = ", stream); } + + if (annotation_level > 1) + { + printf_filtered ("\n\032\032field-begin "); + print_value_flags (TYPE_FIELD_TYPE (type, i)); + printf_filtered ("\n"); + } + if (TYPE_FIELD_PACKED (type, i)) { value_ptr v; @@ -313,7 +325,10 @@ cp_print_value_fields (type, valaddr, stream, format, recurse, pretty, 0, stream, format, 0, recurse + 1, pretty); } } + if (annotation_level > 1) + printf_filtered ("\n\032\032field-end\n"); } + if (pretty) { fprintf_filtered (stream, "\n"); @@ -216,7 +216,12 @@ myread PARAMS ((int, char *, int)); extern int query (); +/* Annotation stuff. */ + extern int annotation_level; /* in stack.c */ + +/* in printcmd.c */ +extern void print_value_flags PARAMS ((struct type *)); extern void begin_line PARAMS ((void)); diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 10ae4d8..9cf224c 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -87,6 +87,19 @@ int current_display_number; int inspect_it = 0; +void +print_value_flags (t) + struct type *t; +{ + /* FIXME: Should we be printing * for references as well as pointers? */ + if (t != NULL + && TYPE_CODE (t) == TYPE_CODE_PTR + && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID) + printf_filtered ("*"); + else + printf_filtered ("-"); +} + struct display { /* Chain link to next auto-display item. */ @@ -811,6 +824,16 @@ print_command_1 (exp, inspect, voidprint) { int histindex = record_latest_value (val); + if (annotation_level > 1) + { + if (histindex >= 0) + printf_filtered ("\n\032\032value-history-begin %d ", histindex); + else + printf_filtered ("\n\032\032value-begin "); + print_value_flags (VALUE_TYPE (val)); + printf_filtered ("\n"); + } + if (inspect) printf_unfiltered ("\031(gdb-makebuffer \"%s\" %d '(\"", exp, histindex); else @@ -818,6 +841,15 @@ print_command_1 (exp, inspect, voidprint) print_formatted (val, format, fmt.size); printf_filtered ("\n"); + + if (annotation_level > 1) + { + if (histindex >= 0) + printf_filtered ("\n\032\032value-history-end\n"); + else + printf_filtered ("\n\032\032value-end\n"); + } + if (inspect) printf_unfiltered("\") )\030"); } @@ -1597,8 +1629,13 @@ print_frame_args (func, fi, num, stream) if (! first) fprintf_filtered (stream, ", "); wrap_here (" "); + + if (annotation_level > 1) + printf_filtered ("\n\032\032arg-name-begin\n"); fprintf_symbol_filtered (stream, SYMBOL_SOURCE_NAME (sym), SYMBOL_LANGUAGE (sym), DMGL_PARAMS | DMGL_ANSI); + if (annotation_level > 1) + printf_filtered ("\n\032\032arg-name-end\n"); fputs_filtered ("=", stream); /* Avoid value_print because it will deref ref parameters. We just @@ -1607,11 +1644,23 @@ print_frame_args (func, fi, num, stream) standard indentation here is 4 spaces, and val_print indents 2 for each recurse. */ val = read_var_value (sym, FRAME_INFO_ID (fi)); + + if (annotation_level > 1) + { + printf_filtered ("\n\032\032arg-begin "); + print_value_flags (val == NULL ? NULL : VALUE_TYPE (val)); + printf_filtered ("\n"); + } + if (val) val_print (VALUE_TYPE (val), VALUE_CONTENTS (val), VALUE_ADDRESS (val), stream, 0, 0, 2, Val_no_prettyprint); else fputs_filtered ("???", stream); + + if (annotation_level > 1) + printf_filtered ("\n\032\032arg-end\n"); + first = 0; } diff --git a/gdb/valprint.c b/gdb/valprint.c index 999c9dd..55db346 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -625,7 +625,14 @@ val_print_array_elements (type, valaddr, address, stream, format, deref_ref, ++reps; ++rep1; } - + + if (annotation_level > 1) + { + printf_filtered ("\n\032\032array-element-begin %d ", i); + print_value_flags (elttype); + printf_filtered ("\n"); + } + if (reps > repeat_count_threshold) { val_print (elttype, valaddr + i * eltlen, 0, stream, format, @@ -640,6 +647,8 @@ val_print_array_elements (type, valaddr, address, stream, format, deref_ref, deref_ref, recurse + 1, pretty); things_printed++; } + if (annotation_level > 1) + printf_filtered ("\n\032\032array-element-end\n"); } if (i < len) { |