# Copyright 2002-2021 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/>.

#
# test gdb/680
#

load_lib mi-support.exp
set MIFLAGS "-i=mi"

gdb_exit
if [mi_gdb_start] {
    continue
}

proc do_test {count} {
  mi_gdb_test "-data-list-register-names -1" \
    {\^error,msg=\"bad register number\"} \
    "-data-list-register-names -1, try $count"
}

# Tests a bug with ui-out and nested uiout types. When 
# an error is encountered building a nest typed, like
# lists or tuples, the uiout is not reset to some sane
# state. As a result, uiout still thinks it is building
# this nested type. Execute enough of these errors and
# an assertion failure occurs. This is most obvious
# with invalid register number and the register commands.

# MAX_UIOUT_LEVELS is set to 5.
set counter 0
for {set i 0} {$i < 4} {incr i} {
  do_test $i
}

#setup_kfail "gdb/680"
do_test $i

mi_gdb_exit
return 0
