diff options
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/breakpoint.c | 13 | ||||
-rw-r--r-- | gdb/breakpoint.h | 2 | ||||
-rw-r--r-- | gdb/linespec.h | 5 |
4 files changed, 28 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 758149d..6dcf808 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 2011-03-24 Tom Tromey <tromey@redhat.com> + * linespec.h (struct linespec_result) <special_display>: New + field. + * breakpoint.h (struct breakpoint) <display_canonical>: New + field. + * breakpoint.c (print_breakpoint_location): Respect + display_canonical. + (create_breakpoint_sal): Add 'display_canonical' parameter. + (create_breakpoints_sal): Update. + (create_breakpoint): Update. + +2011-03-24 Tom Tromey <tromey@redhat.com> + * symtab.c (decode_line_spec): Update. * linespec.c (build_canonical_line_spec): Change type of 'canonical'. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 8822855..dbd9588 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -4622,7 +4622,9 @@ print_breakpoint_location (struct breakpoint *b, if (loc != NULL) set_current_program_space (loc->pspace); - if (b->source_file && loc) + if (b->display_canonical) + ui_out_field_string (uiout, "what", b->addr_string); + else if (b->source_file && loc) { struct symbol *sym = find_pc_sect_function (loc->address, loc->section); @@ -7205,7 +7207,7 @@ create_breakpoint_sal (struct gdbarch *gdbarch, enum bptype type, enum bpdisp disposition, int thread, int task, int ignore_count, struct breakpoint_ops *ops, int from_tty, - int enabled, int internal) + int enabled, int internal, int display_canonical) { struct breakpoint *b = NULL; int i; @@ -7314,6 +7316,7 @@ create_breakpoint_sal (struct gdbarch *gdbarch, } } + b->display_canonical = display_canonical; if (addr_string) b->addr_string = addr_string; else @@ -7498,7 +7501,8 @@ create_breakpoints_sal (struct gdbarch *gdbarch, create_breakpoint_sal (gdbarch, expanded, canonical->canonical[i], cond_string, type, disposition, thread, task, ignore_count, ops, - from_tty, enabled, internal); + from_tty, enabled, internal, + canonical->special_display); } } @@ -7954,7 +7958,8 @@ create_breakpoint (struct gdbarch *gdbarch, cond_string, type_wanted, tempflag ? disp_del : disp_donttouch, thread, task, ignore_count, ops, - from_tty, enabled, internal); + from_tty, enabled, internal, + canonical.special_display); do_cleanups (old_chain); diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index bd09713..d5af928 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -472,6 +472,8 @@ struct breakpoint /* Non-zero means a silent breakpoint (don't print frame info if we stop here). */ unsigned char silent; + /* Non-zero means display ADDR_STRING to the user verbatim. */ + unsigned char display_canonical; /* Number of stops at this breakpoint that should be continued automatically before really stopping. */ int ignore_count; diff --git a/gdb/linespec.h b/gdb/linespec.h index 3366fc6..d8d2ec9 100644 --- a/gdb/linespec.h +++ b/gdb/linespec.h @@ -25,6 +25,11 @@ struct symtab; struct linespec_result { + /* If non-zero, the linespec should be displayed to the user. This + is used by "unusual" linespecs where the ordinary `info break' + display mechanism would do the wrong thing. */ + int special_display; + /* If non-NULL, an array of canonical names for returned symtab_and_line objects. The array has as many elements as the `nelts' field in the symtabs_and_line returned by decode_line_1. |