#   Copyright (C) 1988, 1990, 1991, 1992, 1997 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# This file was written by Rob Savoye. (rob@cygnus.com)

# Crank up gdb.
gdb_start

if $tracelevel then {
    strace $tracelevel
}

#
# test the echo command
#

# this sets the prms id number.  This is the number that will appear
# on all the output logs.
#	ex: set prms_id 643
set prms_id 0

# this sets the bug id id.  This is the number that will appear
# on all the output logs. This is optional and if it is not set
# it will appear on all output logs as a 0.
#	ex: set bug_id 12
set bug_id 0

gdb_test "echo Hello world!\\n" "Hello world!" "Echo test"
