-# 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
# 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
}
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 \033\\\[32m${quoted}\033\\\[m..." \
+ "Reading symbols from [style $quoted file]..." \
+ "filename is styled when loading symbol file"
}