Hi, Ok, so here's what everyone has been waiting for. This patch adds the implementation of explicit linespecs, including CLI and MI support. Reminder: You must apply the previous patch (breakpoint-api) before applying this patch. Questions/comments/concerns? Keith ChangeLog 2012-07-26 Keith Seitz * breakpoint.h (struct breakpoint): Add EXPLICIT. * breakpoint.c (update_breakpoints_after_exec): Don't delete the breakpoint if B->EXPLICIT is non-NULL. (print_breakpoint_location): For pending explicit breakpoints, use explicit_linespec_to_string to print out an appropriate address string. (explicit_linespec_unsupported): New function. (init_breakpoint_sal): If ELS in non-NULL, copy it into the struct breakpoint. (parse_breakpoint_sals): If ELS is non-NULL, call decode_explicit_linespec instead of decode_line_full. (create_breakpoint_1): Deal with explicit linespecs. (break_command_1): Check for an explicit linespec. (say_where): For pending explicit breakpoints, use explicit_linepsec_to_string to print out an address string. (base_breakpoint_dtor): Free any explicit_linespec associated with the breakpoint. (bkpt_re_set): Don't delete the breakpoint if B->EXPLICIT is non-NULL. (strace_marker_decode_linespec): Error if explicit_linespec is non-NULL. (decode_linespec_default): Call decode_explicit_linespec if explicit_linespec is non-NULL. * linespec.h (struct linespec_result): Add EXPLICIT. (new_explicit_linespec, free_explicit_linespec, copy_explicit_linespec, explicit_linespec_to_string, string_to_explicit_linespec, decode_explicit_linespec): Declare. * linespec.c (canonicalize_linespec): Build an explicit linespec representation, too. (destroy_linespec_result): Free the explicit_linespec. (new_explicit_linespec, free_explicit_linespec, explicit_lex_one, string_to_explicit_linespec, copy_explicit_linespec, explicit_linespec_to_string): New functions. * mi/mi-cmd-break.c: Include linespec.h. (mi_cmd_break_insert): Add options for explicit linespecs and pass them to create_breakpoint.