gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 11 Jun 2012 19:16:24 +0000 (19:16 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 11 Jun 2012 19:16:24 +0000 (19:16 +0000)
Fix regression by the "ambiguous linespec" series.
* breakpoint.c (parse_breakpoint_sals): New variable cursal.  Use
get_last_displayed_symtab and get_last_displayed_line and depending
on CURSAL.

gdb/testsuite/
Fix regression by the "ambiguous linespec" series.
* gdb.base/break.exp (list marker1, break lineno, delete $bpnum): New
tests.

gdb/ChangeLog
gdb/breakpoint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/break.exp

index ad6abdb407abda6e9b51547b95ac923f8b366d69..1a50740a4d3e4046cb2832fb7ba996e413421d7e 100644 (file)
@@ -1,3 +1,10 @@
+2012-06-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Fix regression by the "ambiguous linespec" series.
+       * breakpoint.c (parse_breakpoint_sals): New variable cursal.  Use
+       get_last_displayed_symtab and get_last_displayed_line and depending
+       on CURSAL.
+
 2012-06-11  Tom Tromey  <tromey@redhat.com>
 
        * dwarf2read.c (dw2_get_primary_filename_reader): New function.
index 12db39b22c41a084a90c61786e9a9ba4ac74c88e..9c4348fda4e255d63d7723def50d9be6430a925d 100644 (file)
@@ -8802,19 +8802,26 @@ parse_breakpoint_sals (char **address,
     }
   else
     {
+      struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+
       /* Force almost all breakpoints to be in terms of the
          current_source_symtab (which is decode_line_1's default).
          This should produce the results we want almost all of the
-         time while leaving default_breakpoint_* alone.  */
-      if (last_displayed_sal_is_valid ())
+         time while leaving default_breakpoint_* alone.
+
+        ObjC: However, don't match an Objective-C method name which
+        may have a '+' or '-' succeeded by a '['.  */
+      if (last_displayed_sal_is_valid ()
+         && (!cursal.symtab
+             || ((strchr ("+-", (*address)[0]) != NULL)
+                 && ((*address)[1] != '['))))
        decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
                          get_last_displayed_symtab (),
                          get_last_displayed_line (),
                          canonical, NULL, NULL);
       else
        decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
-                         (struct symtab *) NULL, 0,
-                         canonical, NULL, NULL);
+                         cursal.symtab, cursal.line, canonical, NULL, NULL);
     }
 }
 
index 40aa47d383427fc2bce5ca00165f5184a7e79b08..dfc7753b81186c3cc28f5b20829456da7166d148 100644 (file)
@@ -1,3 +1,9 @@
+2012-06-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Fix regression by the "ambiguous linespec" series.
+       * gdb.base/break.exp (list marker1, break lineno, delete $bpnum): New
+       tests.
+
 2012-06-11  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * lib/future.exp: Set $use_gdb_compile even if only find_go_linker is
index a2033644a9506d1dab8f630af4911800688fbcf7..14e93451d2db6a7f69f0e07c66068cd23b365824 100644 (file)
@@ -371,6 +371,13 @@ gdb_expect {
     }
 }
 
+# Test the 'list' commands sets current file for the 'break LINENO' command.
+set bp_marker1 [gdb_get_line_number "set breakpoint 16 here" ${srcfile1}]
+gdb_test "list marker1" ".*"
+gdb_test "break $bp_marker1" "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file .*${srcfile1}, line ${bp_marker1}\\." \
+         "break lineno"
+gdb_test_no_output {delete $bpnum}
+
 #
 # run until the breakpoint at a line number
 #
This page took 0.049346 seconds and 4 git commands to generate.