This page collects useful notes on running the GDB testsuite.

Caveat emptor

Jim Blandy had the following insight at the gdb-patches@ mailing list about analyzing testsuite results:

Testing gdbserver in a native configuration

To run gdbserver on your local machine:

  1. Create an empty file named site.exp.
  2. Create a directory named boards in the same location as site.exp.
  3. Create a file named native-gdbserver.exp in the boards directory (see below).
  4. Set the DEJAGNU environment variable to point to the empty site.exp.
  5. Run the testsuite with make check-gdb RUNTESTFLAGS="--target_board native-gdbserver".

Native Board File

# gdbserver running native.

load_generic_config "gdbserver"
process_multilib_options ""

# The default compiler for this target.
set_board_info compiler "[find_gcc]"

# This gdbserver can only run a process once per session.
set_board_info gdb,do_reload_on_run 1

# There's no support for argument-passing (yet).
set_board_info noargs 1

# Can't do input (or output) in the current gdbserver.
set_board_info gdb,noinferiorio 1

# gdbserver does not intercept target file operations and perform them
# on the host.
set_board_info gdb,nofileio 1

# Can't do hardware watchpoints, in general.
set_board_info gdb,no_hardware_watchpoints 1

set_board_info sockethost "localhost:"
set_board_info use_gdb_stub 1

# We will be using the standard GDB remote protocol.
set_board_info gdb_protocol "remote"
# Test the copy of gdbserver in the build directory.
set_board_info gdb_server_prog "../gdbserver/gdbserver"

proc ${board}_spawn { board cmd } {
  global board_info

  set baseboard [lindex [split $board "/"] 0]

  set board_info($baseboard,isremote) 0
  set result [remote_spawn $board $cmd]
  set board_info($baseboard,isremote) 1

  return $result

proc ${board}_download { board host dest } {
  return $host

proc ${board}_file { dest op args } {
    if { $op == "delete" } {
        return 0
    return [eval [list standard_file $dest $op] $args]

All content (C) 2008 Free Software Foundation. For terms of use, redistribution, and modification, please see the WikiLicense page.