[1/2] Add styling to macro commands

Message ID 20190213125907.8571-2-tom@tromey.com
State New
Headers show
Series
  • Styling + memory management in macro commands
Related show

Commit Message

Tom Tromey Feb. 13, 2019, 12:59 p.m.
This adds filename styling to "info macro".

gdb/ChangeLog
2019-02-13  Tom Tromey  <tom@tromey.com>

	* macrocmd.c (show_pp_source_pos): Style the file names.

gdb/testsuite/ChangeLog
2019-02-13  Tom Tromey  <tom@tromey.com>

	* gdb.base/style.exp: Use -g3 to compile when possible.  Add test
	for macro styling.
	* gdb.base/style.c (SOME_MACRO): New macro.
---
 gdb/ChangeLog                    |  4 ++++
 gdb/macrocmd.c                   |  9 ++++++---
 gdb/testsuite/ChangeLog          |  6 ++++++
 gdb/testsuite/gdb.base/style.c   |  2 ++
 gdb/testsuite/gdb.base/style.exp | 16 +++++++++++++++-
 5 files changed, 33 insertions(+), 4 deletions(-)

-- 
2.17.2

Comments

Joel Brobecker Feb. 17, 2019, 1:22 p.m. | #1
> This adds filename styling to "info macro".

> 

> gdb/ChangeLog

> 2019-02-13  Tom Tromey  <tom@tromey.com>

> 

> 	* macrocmd.c (show_pp_source_pos): Style the file names.

> 

> gdb/testsuite/ChangeLog

> 2019-02-13  Tom Tromey  <tom@tromey.com>

> 

> 	* gdb.base/style.exp: Use -g3 to compile when possible.  Add test

> 	for macro styling.

> 	* gdb.base/style.c (SOME_MACRO): New macro.


Hi Tom. Looks good to me.

-- 
Joel

Patch

diff --git a/gdb/macrocmd.c b/gdb/macrocmd.c
index beb9b78b344..3313e65f929 100644
--- a/gdb/macrocmd.c
+++ b/gdb/macrocmd.c
@@ -22,6 +22,7 @@ 
 #include "macrotab.h"
 #include "macroexp.h"
 #include "macroscope.h"
+#include "cli/cli-style.h"
 #include "cli/cli-utils.h"
 #include "command.h"
 #include "gdbcmd.h"
@@ -121,14 +122,16 @@  show_pp_source_pos (struct ui_file *stream,
   char *fullname;
 
   fullname = macro_source_fullname (file);
-  fprintf_filtered (stream, "%s:%d\n", fullname, line);
+  fputs_styled (fullname, file_name_style.style (), stream);
+  fprintf_filtered (stream, ":%d\n", line);
   xfree (fullname);
 
   while (file->included_by)
     {
       fullname = macro_source_fullname (file->included_by);
-      fprintf_filtered (gdb_stdout, "  included at %s:%d\n", fullname,
-                        file->included_at_line);
+      fputs_filtered (_("  included at "), stream);
+      fputs_styled (fullname, file_name_style.style (), stream);
+      fprintf_filtered (stream, ":%d\n", file->included_at_line);
       xfree (fullname);
       file = file->included_by;
     }
diff --git a/gdb/testsuite/gdb.base/style.c b/gdb/testsuite/gdb.base/style.c
index 53f65960374..a44936ed731 100644
--- a/gdb/testsuite/gdb.base/style.c
+++ b/gdb/testsuite/gdb.base/style.c
@@ -13,6 +13,8 @@ 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#define SOME_MACRO 23
+
 int
 main (int argc, char **argv)
 {
diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp
index 78d04b02903..cbc5924aca4 100644
--- a/gdb/testsuite/gdb.base/style.exp
+++ b/gdb/testsuite/gdb.base/style.exp
@@ -21,7 +21,16 @@  save_vars { env(TERM) } {
     # We need an ANSI-capable terminal to get the output.
     setenv TERM ansi
 
-    if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    set test_macros 0
+    set options debug
+    get_compiler_info
+    if { [test_compiler_info "gcc-*"] || [test_compiler_info "clang-*"] } {
+	lappend options additional_flags=-g3
+	set test_macros 1
+    }
+
+    if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
+	     $options]} {
 	return -1
     }
 
@@ -45,6 +54,11 @@  save_vars { env(TERM) } {
 
     gdb_test "print &main" " = .* \033\\\[34m$hex\033\\\[m <$main_expr>"
 
+    if {$test_macros} {
+	gdb_test "info macro SOME_MACRO" \
+	    "Defined at $base_file_expr:16\r\n#define SOME_MACRO 23"
+    }
+
     gdb_exit
     gdb_spawn