| # Copyright 2014-2020 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 | |
| # the Free Software Foundation; either version 3 of the License, or | |
| # (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| # Utility procedures, shared between test suite domains. | |
| # A helper procedure to retrieve commands to send to GDB before a program | |
| # is started. | |
| proc gdb_init_commands {} { | |
| set commands "" | |
| if [target_info exists gdb_init_command] { | |
| lappend commands [target_info gdb_init_command] | |
| } | |
| if [target_info exists gdb_init_commands] { | |
| set commands [concat $commands [target_info gdb_init_commands]] | |
| } | |
| return $commands | |
| } | |
| # Given an input string, adds backslashes as needed to create a | |
| # regexp that will match the string. | |
| proc string_to_regexp {str} { | |
| set result $str | |
| regsub -all {[]?*+.|(){}^$\[\\]} $str {\\&} result | |
| return $result | |
| } | |
| # Wrap STR in an ANSI terminal escape sequences -- one to set the | |
| # style to STYLE, and one to reset the style to the default. The | |
| # return value is suitable for use as a regular expression. | |
| # STYLE can either be the payload part of an ANSI terminal sequence, | |
| # or a shorthand for one of the gdb standard styles: "file", | |
| # "function", "variable", or "address". | |
| proc style {str style} { | |
| switch -exact -- $style { | |
| title { set style 1 } | |
| file { set style 32 } | |
| function { set style 33 } | |
| highlight { set style 31 } | |
| variable { set style 36 } | |
| address { set style 34 } | |
| metadata { set style 2 } | |
| } | |
| return "\033\\\[${style}m${str}\033\\\[m" | |
| } |