Introduce gdb-specific %p format suffixes
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / style.exp
index b72c2ab1fa040f9b1324cfc448abe21510eac86e..d2c3105bb9fd8d72547c8f983266adcf124b744b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 Free Software Foundation, Inc.
+# Copyright 2018-2019 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -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
     }
 
@@ -32,22 +41,94 @@ save_vars { env(TERM) } {
 
     gdb_test_no_output "set style enabled on"
 
-    set main_expr "\033\\\[33mmain\033\\\[m"
-    set base_file_expr "\033\\\[32m.*style\\.c\033\\\[m"
+    set main_expr [style main function]
+    set base_file_expr [style ".*style\\.c" file]
     set file_expr "$base_file_expr:\[0-9\]"
-    set arg_expr "\033\\\[36marg.\033\\\[m"
+    set arg_expr [style "arg." variable]
 
     gdb_test "frame" \
        "$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
     gdb_test "info breakpoints" "$main_expr at $file_expr.*"
 
+    gdb_test_no_output "set style sources off"
+    gdb_test "frame" \
+       "\r\n\[^\033\]*break here.*" \
+       "frame without styling"
+    gdb_test_no_output "set style sources on"
+
     gdb_test "break main" "file $base_file_expr.*"
 
-    gdb_test "print &main" " = .* <$main_expr>"
+    gdb_test "print &main" " = .* [style $hex address] <$main_expr>"
+
+    # Regression test for a bug where line-wrapping would occur at the
+    # wrong spot with styling.  There were different bugs at different
+    # widths, so try two.
+    foreach width {20 30} {
+       gdb_test_no_output "set width $width"
+       # There was also a bug where the styling could be wrong in the
+       # line listing; this is why the words from the source code are
+       # spelled out in the final result line of the test.
+       gdb_test "frame" \
+           [multi_line \
+                "#0 *$main_expr.*$arg_expr.*" \
+                ".*$arg_expr.*" \
+                ".* at .*$file_expr.*" \
+                "\[0-9\]+.*return.* break here .*"
+           ] \
+           "frame when width=$width"
+    }
+
+    if {$test_macros} {
+       gdb_test "info macro SOME_MACRO" \
+           "Defined at $base_file_expr:16\r\n#define SOME_MACRO 23"
+    }
+
+    set func [style some_called_function function]
+    # Somewhere should see the call to the function.
+    gdb_test "disassemble main" "[style $hex address].*$func.*"
 
     gdb_exit
     gdb_spawn
 
-    gdb_test "" "\033\\\[35;1mGNU gdb.*\033\\\[m.*" \
+    set vers [style "GNU gdb.*" "35;1"]
+    gdb_test "" "${vers}.*" \
        "version is styled"
+
+    set address_style_expr [style ".*\".*address.*\".*style.*" address]
+    gdb_test "show style address foreground" \
+       "The ${address_style_expr} foreground color is: blue" \
+       "style name and style word styled using its own style in show style"
+
+    set aliases_expr [style ".*aliases.*" title]
+    set breakpoints_expr [style ".*breakpoints.*" title]
+    gdb_test "help" \
+       [multi_line \
+            "List of classes of commands:" \
+            "" \
+            "${aliases_expr} -- Aliases of other commands\." \
+            "${breakpoints_expr} -- Making program stop at certain points\." \
+            ".*" \
+           ] \
+       "help classes of commands styled with title"
+
+    set taas_expr  [style ".*taas.*" title]
+    set tfaas_expr  [style ".*tfaas.*" title]
+    set cut_for_thre_expr [style "cut for 'thre" highlight]
+    gdb_test "apropos -v cut for 'thre" \
+       [multi_line \
+            "" \
+            "${taas_expr} --.*" \
+            "Usage:.*" \
+            "short${cut_for_thre_expr}ad apply.*" \
+            "" \
+            "${tfaas_expr} --.*" \
+            "Usage:.*" \
+            "short${cut_for_thre_expr}ad apply.*" \
+           ] \
+       "apropos -v cut for 'thre"
+
+    set quoted [string_to_regexp $binfile]
+    gdb_test "file $binfile" \
+       "Reading symbols from [style $quoted file]..." \
+       "filename is styled when loading symbol file"
 }
This page took 0.026193 seconds and 4 git commands to generate.