DejaGnu

From Linux/Xtensa
Revision as of 17:41, 19 March 2013 by Chris (talk | contribs)
Jump to navigation Jump to search

http://www.gnu.org/software/dejagnu/ is a framework for testing various other tools and programs.

The following instructions are intended to run the test suite in a simulator or on a board running Linux.

Remote board using ssh

Remote board using telnet/FTP

Although the preferred method to use dejagnu is over ssh, it might be necessary to use telnet and ftp, instead, if ssh is not supported or to slow on the particular target. Unfortunately, Dejagnu doesn't fully support telnet/ftp as a remote target out of the box, so it is necessary to patch the telnet.exp file. The distribution running on that board needs to be configured to include support for an ftp and telnet daemon, and these services should be running.

The telnet.exp file can usually be found under /usr/share/dejagnu/telnet.exp. http://linux-xtensa.org/pub/patches/dejagnu/dejagnu-telnet.patch.gz

cd /usr/share/dejagnu
cp telnet.exp telnet.exp.orig
gunzip -c <path-to>/dejagnu-telnet.patch.gz | patch -p0

The next step is to create a board interface file for the target. In this example, we use the name 'lx60', but it can be any name.

lx60.exp

load_generic_config "unix";                                                                                                                                    
set_board_info hostname         "lx60"
set_board_info compiler         "<path-to-compiler>/xtensa-linux-gcc"
set_board_info connect          "telnet"
set_board_info file_transfer    "ftp"
set_board_info shell_prompt     "\\$ "
set_board_info protocol         "telnet"
set_board_info telnet_username  "test"
set_board_info telnet_password  "test"
set_board_info ftp_username     "test"
set_board_info ftp_password     "test"

Before we can run teh testsuite, we need to tell it what board to use. Create the file site.exp under <path-to-libffi>/testsuite/site.exp with the following content:

lappend boards_dir "<directory-that-includes-lx60.exp>"

Finally, you can run the testsuite:

export RUNTESTFLAGS="--target_board=lx60"
make check


Tensilica ISS Simulator

# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
# Foundation, Inc.
#
# This file is part of DejaGnu.
#
# DejaGnu 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.
#
# DejaGnu 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 DejaGnu; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

# Load the generic configuration for this board. This will define a basic
# set of routines used to communicate with the board.
load_generic_config "sim"
# basic-sim.exp is a basic description for the standard Cygnus simulator.
load_base_board_description "basic-sim"
# Command to invoke the simulator
set_board_info sim xt-run
setup_sim xtensa
# No multilib flags needed by default.
process_multilib_options ""
# The compiler used to build for this board. This has *nothing* to do
# with what compiler is tested if we're testing gcc.
set_board_info compiler       "[find_gcc]"
set_board_info cflags         "[libgloss_include_flags] [newlib_include_flags]"
set_board_info ldflags        "[libgloss_link_flags] [newlib_link_flags]"
# This board doesn't use a linker script.
set_board_info ldscript ""
# The simulator doesn't return exit statuses and we need to indicate this.
set_board_info needs_status_wrapper  1
# No support for signals on this target.
set_board_info gdb,nosignals 1