gdb: Don't allow annotations to influence what else GDB prints
authorAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 14 Jun 2019 22:43:00 +0000 (23:43 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Sat, 15 Jun 2019 20:39:06 +0000 (21:39 +0100)
The annotations should be additional information printed by GDB to be
consumed by users (GUIs), but GDB shouldn't reduce what it prints
based on whether annotations are on or not.  However, this is what
happens for annotate_source_line.

This commit makes annotate_source_line a void function that simply
outputs the annotation information, GDB will then print the contents
of the source line to the terminal in the normal way.

Some tests needed to be updated after this commit.

gdb/ChangeLog:

* annotate.c (annotate_source_line): Change return type to void,
update implementation to match.
* annotate.h (annotate_source_line): Change return type to void,
update header comment.
* stack.c (print_frame_info): Don't change what frame information
is printed based on whether annotations are on or not.

gdb/testsuite/ChangeLog:

* gdb.base/annota1.exp: Update expected results.
* gdb.cp/annota2.exp: Likewise.
* gdb.cp/annota3.exp: Likewise.

gdb/ChangeLog
gdb/annotate.c
gdb/annotate.h
gdb/stack.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/annota1.exp
gdb/testsuite/gdb.cp/annota2.exp
gdb/testsuite/gdb.cp/annota3.exp

index f0489df3a5c789c61d155e4f99dc8349bc9b63c8..d3b9b8d9aee3a7053159494ae65eea7899c33c17 100644 (file)
@@ -1,3 +1,12 @@
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * annotate.c (annotate_source_line): Change return type to void,
+       update implementation to match.
+       * annotate.h (annotate_source_line): Change return type to void,
+       update header comment.
+       * stack.c (print_frame_info): Don't change what frame information
+       is printed based on whether annotations are on or not.
+
 2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * annotate.c: Add 'source.h' and 'objfiles.h' includes.
index 84f8129b22d0f0fbc94e0eda05eac5aeb270d12b..8d8a0196fb02d32f3021f780625ba7b317750c45 100644 (file)
@@ -434,7 +434,7 @@ annotate_source (const char *filename, int line, int character, int mid,
 
 /* See annotate.h.  */
 
-bool
+void
 annotate_source_line (struct symtab *s, int line, int mid_statement,
                      CORE_ADDR pc)
 {
@@ -443,17 +443,15 @@ annotate_source_line (struct symtab *s, int line, int mid_statement,
       if (s->line_charpos == nullptr)
        open_source_file_with_line_charpos (s);
       if (s->fullname == nullptr)
-       return false;
+       return;
       /* Don't index off the end of the line_charpos array.  */
       if (line > s->nlines)
-       return false;
+       return;
 
       annotate_source (s->fullname, line, s->line_charpos[line - 1],
                       mid_statement, get_objfile_arch (SYMTAB_OBJFILE (s)),
                       pc);
-      return true;
     }
-  return false;
 }
 
 
index 9683b7e09ac4b5c43b1355d1981bc2b51aae6a15..5e9f11d60538b2c7107f9115b1e755c344084976 100644 (file)
@@ -92,11 +92,8 @@ struct annotate_arg_emitter
    character position.
 
    MID_STATEMENT is nonzero if the PC is not at the beginning of that
-   line.
-
-   Return true if successful, false if the file could not be found or
-   annotations are turned off.  */
-extern bool annotate_source_line (struct symtab *s, int line,
+   line.  */
+extern void annotate_source_line (struct symtab *s, int line,
                                  int mid_statement, CORE_ADDR pc);
 
 extern void annotate_frame_begin (int, struct gdbarch *, CORE_ADDR);
index f471efe3df78ddc5f7d10f41f2c054b1eb53a8c8..b3d113d3b42a2df0384548e1cab7713b77465b28 100644 (file)
@@ -965,45 +965,41 @@ print_frame_info (const frame_print_options &fp_opts,
     {
       int mid_statement = ((print_what == SRC_LINE)
                           && frame_show_address (frame, sal));
-      bool done = annotate_source_line (sal.symtab, sal.line, mid_statement,
-                                       get_frame_pc (frame));
+      annotate_source_line (sal.symtab, sal.line, mid_statement,
+                           get_frame_pc (frame));
 
-      if (!done)
+      if (deprecated_print_frame_info_listing_hook)
+       deprecated_print_frame_info_listing_hook (sal.symtab, sal.line,
+                                                 sal.line + 1, 0);
+      else
        {
-         if (deprecated_print_frame_info_listing_hook)
-           deprecated_print_frame_info_listing_hook (sal.symtab, 
-                                                     sal.line, 
-                                                     sal.line + 1, 0);
-         else
-           {
-             struct value_print_options opts;
-
-             get_user_print_options (&opts);
-             /* We used to do this earlier, but that is clearly
-                wrong.  This function is used by many different
-                parts of gdb, including normal_stop in infrun.c,
-                which uses this to print out the current PC
-                when we stepi/nexti into the middle of a source
-                line.  Only the command line really wants this
-                behavior.  Other UIs probably would like the
-                ability to decide for themselves if it is desired.  */
-             if (opts.addressprint && mid_statement)
-               {
-                 uiout->field_core_addr ("addr",
-                                         gdbarch, get_frame_pc (frame));
-                 uiout->text ("\t");
-               }
+         struct value_print_options opts;
 
-             print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
+         get_user_print_options (&opts);
+         /* We used to do this earlier, but that is clearly
+            wrong.  This function is used by many different
+            parts of gdb, including normal_stop in infrun.c,
+            which uses this to print out the current PC
+            when we stepi/nexti into the middle of a source
+            line.  Only the command line really wants this
+            behavior.  Other UIs probably would like the
+            ability to decide for themselves if it is desired.  */
+         if (opts.addressprint && mid_statement)
+           {
+             uiout->field_core_addr ("addr",
+                                     gdbarch, get_frame_pc (frame));
+             uiout->text ("\t");
            }
-       }
 
-      /* If disassemble-next-line is set to on and there is line debug
-         messages, output assembly codes for next line.  */
-      if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
-       do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
+         print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
+       }
     }
 
+  /* If disassemble-next-line is set to on and there is line debug
+     messages, output assembly codes for next line.  */
+  if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
+    do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
+
   if (set_current_sal)
     {
       CORE_ADDR pc;
index ac292ab162b49b0c6fe1ee2bd44038a4fc337d90..4c7f59b82dfe1a97868de5efe1f9bab8fd149ebe 100644 (file)
@@ -1,3 +1,9 @@
+2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * gdb.base/annota1.exp: Update expected results.
+       * gdb.cp/annota2.exp: Likewise.
+       * gdb.cp/annota3.exp: Likewise.
+
 2019-06-15  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * gdb.base/style-logging.exp: Remove path from test name.
index dfa30831e641f1b7c8b00588307b156ead02bad8..3d379f0fd497210cd31d87b45623ab98e5d713a8 100644 (file)
@@ -268,10 +268,10 @@ if [target_info exists gdb,nosignals] {
     unsupported "backtrace @ signal handler"
 } else {
     gdb_test_multiple "signal SIGUSR1" "send SIGUSR1" {
-       -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+       -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n${escapedsrcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
            pass "send SIGUSR1"
        }
-       -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
+       -re "\r\n\032\032post-prompt\r\nContinuing with signal SIGUSR1.\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032breakpoint 2\r\n\r\nBreakpoint 2, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nhandle_USR1\r\n\032\032frame-args\r\n \\(\r\n\032\032arg-begin\r\nsig\r\n\032\032arg-name-end\r\n=\r\n\032\032arg-value -\r\n$decimal\r\n\032\032arg-end\r\n\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*${srcfile}\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n.*\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*annota1.c:.*:.*:beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
            setup_xfail "*-*-*" 1270
            fail "send SIGUSR1"
        }
index 745f461716023a3b71b96efe1cc3cc677411b3fc..6699de01a3bc7acb7a0e68871650555f3c249009 100644 (file)
@@ -243,6 +243,7 @@ set pat [multi_line "" \
             "" \
             "" \
             "\032\032source .*$srcfile.*beg:$hex" \
+            "$decimal\[^\r\n\]+" \
             "" \
             "\032\032frame-end" \
             "" \
index 3b506e2a82cead66fdcf71f18e1727e82d1f53b4..8f9a1456912340bfeec6c3357d3b4b48ee3b9bdb 100644 (file)
@@ -164,7 +164,7 @@ gdb_expect_list "set watch on a.x" "$gdb_prompt$" {
 # annotate-watchpoint
 #
 gdb_test_multiple "next" "watch triggered on a.x" {
-    -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" { 
+    -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n$decimal\[^\r\n\]+\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" { 
        pass "watch triggered on a.x"
     }
 }