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

# 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.
# Note: -ggnu-pubnames is required for Gold to build .gdb_index, and while
# -gsplit-dwarf implies -ggnu-pubnames for gcc, it doesn't for clang.
set_board_info debug_flags \
    [join { "-gdwarf-4" \
		"-gsplit-dwarf" \
		"-ggnu-pubnames" \
		"-fdebug-types-section" \
		"-Wl,--gdb-index" \
		"-fuse-ld=gold" }]

# This is needed otherwise dejagnu tries to rsh to host "fission".
load_board_description "local-board"
