# Copyright 2012-2013 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/>.

# This file is a dejagnu "board file" and is used to run the testsuite
# with Fission support.  http://gcc.gnu.org/wiki/DebugFission
#
# Example usage:
# bash$ make check RUNTESTFLAGS='--target_board=fission'

# This is copied from baseboards/unix.exp.
# At the moment this only supports things that unix.exp supports.
load_generic_config "unix"
process_multilib_options ""
set_board_info compiler "[find_gcc]"

# This requires a relatively recent version of gcc (>4.7) and gold
# for the linker.
set_board_info debug_flags "-gdwarf-4 -gsplit-dwarf -Wl,--gdb-index"

# This is needed otherwise dejagnu tries to rsh to host "fission".  Blech.
# Double blech: set_board_info only sets the value if not already set.
unset_board_info isremote
set_board_info isremote 0
