# Copyright 2014-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 stabs support.  Stabs is used less and less these days, ideally
# it will eventually disappear (hey, one can dream).  Until then, this
# board file is a simple way to run the testsuite with stabs.
#
# Example usage:
# bash$ make check RUNTESTFLAGS='--target_board=stabs'
#
# Another way:
# make check RUNTESTFLAGS="--target_board=unix/gdb:debug_flags=-gstabs+"
# While this way doesn't require a board file, this file exists because
# it's easier for some to find.
#
# Note: make check RUNTESTFLAGS=CFLAGS_FOR_TARGET=-gstabs+
# "works" but kinda accidentally.  The right way to set the flag for
# specifying debug information is with the debug_flags board config parameter.

# 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]"

# Use -gstabs+ instead of -gstabs for better c++ support.
set_board_info debug_flags "-gstabs+"

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