1# Copyright (C) 2008-2021 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file is part of the GDB testsuite. 17# It tests basic Guile features. 18 19load_lib gdb-guile.exp 20 21# Start with a fresh gdb. 22gdb_exit 23gdb_start 24gdb_reinitialize_dir $srcdir/$subdir 25 26# Do this instead of the skip_guile_check. 27# We want to do some tests when Guile is not present. 28gdb_test_multiple "guile (display 23) (newline)" "verify guile support" { 29 -re "Undefined command.*$gdb_prompt $" { 30 unsupported "guile not supported." 31 return 32 } 33 -re "not supported.*$gdb_prompt $" { 34 unsupported "guile support is disabled" 35 36 # If Guile is not supported, verify that sourcing a guile script 37 # causes an error. 38 gdb_test "source $srcdir/$subdir/source2.scm" \ 39 "Error in sourced command file:.*" \ 40 "source source2.scm when guile disabled" 41 42 # Verify multi-line guile commands cause an error. 43 gdb_test_multiline "multi-line guile command" \ 44 "guile" "" \ 45 "(print 23)" "" \ 46 "end" "not supported.*" 47 48 return 49 } 50 -re "$gdb_prompt $" {} 51} 52 53gdb_install_guile_utils 54gdb_install_guile_module 55 56gdb_test_multiline "multi-line guile command" \ 57 "guile" "" \ 58 "(print 23)" "" \ 59 "end" "= 23" 60 61gdb_test_multiline "show guile command" \ 62 "define zzq" "Type commands for definition of .* just \"end\"\\.*" \ 63 "guile" "" \ 64 "(print 23)" "" \ 65 "end" "" \ 66 "end" "" \ 67 "show user zzq" "User command \"zzq\":.* guile.*\\(print 23\\).* end" 68 69gdb_test "source $srcdir/$subdir/source2.scm" "yes" "source source2.scm" 70 71gdb_test "source -s source2.scm" "yes" 72 73gdb_test "guile (print (current-objfile))" "= #f" 74gdb_test "guile (print (objfiles))" "= \\(\\)" 75 76gdb_test_no_output \ 77 {guile (define x (execute "printf \"%d\", 23" #:to-string #t))} 78gdb_test "guile (print x)" "= 23" 79 80gdb_test_no_output "guile (define a (execute \"help\" #:to-string #t))" \ 81 "collect help from uiout" 82 83gdb_test "guile (print a)" "= .*aliases -- User-defined aliases of other commands.*" \ 84 "verify help to uiout" 85 86# Verify that we can source a guile script using ~ for the HOME directory. 87save_vars { env(HOME) } { 88 # Create a new directory to act as a temporary HOME directory. 89 set tmp_home [standard_output_file tmp_home] 90 file mkdir $tmp_home 91 92 # Copy the file we want to source into the new HOME directory. 93 gdb_remote_download host ${srcdir}/${subdir}/source2.scm \ 94 ${tmp_home}/source2.scm 95 96 # Arrange to use the new HOME directory. 97 set env(HOME) $tmp_home 98 clean_restart 99 100 # Finally, source the file out of our new HOME directory. 101 gdb_test "source ~/source2.scm" "yes" 102} 103