# Copyright (C) 2018-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/>.


# Verify 'info variables|functions'
#    shows minimal symbols when no type matching is requested
#    does not show minimal symbols when type matching is requested.

set testfile info_minsym

standard_testfile info_minsym.c

# Compile the program without debugging information, to have minimal symbols.
if {[prepare_for_testing "failed to prepare" $testfile $srcfile {c}]} {
    return -1
}

clean_restart ${testfile}

gdb_test_no_output "info variables -q -t int minsym" \
    "minsym variables do not match type"
gdb_test_no_output "info functions -q -t int minsym" \
    "minsym functions do not match type"

gdb_test "info variables -q minsym" "$hex  minsym_var" "minsym variables found"
gdb_test "info functions -q minsym" "$hex  minsym_fun" "minsym functions found"
