1This is a collection of tests for GDB. 2 3The file gdb/README contains basic instructions on how to run the 4testsuite, while this file documents additional options and controls 5that are available. The GDB wiki may also have some pages with ideas 6and suggestions. 7 8 9Running the Testsuite 10********************* 11 12There are two ways to run the testsuite and pass additional parameters 13to DejaGnu. The first is to do `make check' in the main build 14directory and specifying the makefile variable `RUNTESTFLAGS': 15 16 make check RUNTESTFLAGS='GDB=/usr/bin/gdb gdb.base/a2-run.exp' 17 18The second is to cd to the testsuite directory and invoke the DejaGnu 19`runtest' command directly. 20 21 cd testsuite 22 make site.exp 23 runtest GDB=/usr/bin/gdb 24 25(The `site.exp' file contains a handful of useful variables like host 26and target triplets, and pathnames.) 27 28Parallel testing 29**************** 30 31If not testing with a remote host (in DejaGnu's sense), you can run 32the GDB test suite in a fully parallel mode. In this mode, each .exp 33file runs separately and maybe simultaneously. The test suite ensures 34that all the temporary files created by the test suite do not clash, 35by putting them into separate directories. This mode is primarily 36intended for use by the Makefile. 37 38For GNU make, the Makefile tries to run the tests in parallel mode if 39any -j option is given. For a non-GNU make, tests are not 40parallelized. 41 42If RUNTESTFLAGS is not empty, then by default the tests are 43serialized. This can be overridden by either using the 44`check-parallel' target in the Makefile, or by setting FORCE_PARALLEL 45to any non-empty value: 46 47 make check-parallel RUNTESTFLAGS="--target_board=native-gdbserver" 48 make check RUNTESTFLAGS="--target_board=native-gdbserver" FORCE_PARALLEL=1 49 50If you want to use runtest directly instead of using the Makefile, see 51the description of GDB_PARALLEL below. 52 53Racy testcases 54************** 55 56Sometimes, new testcases are added to the testsuite that are not 57entirely deterministic, and can randomly pass or fail. We call them 58"racy testcases", and they can be bothersome when one is comparing 59different testsuite runs. In order to help identifying them, it is 60possible to run the tests several times in a row and ask the testsuite 61machinery to analyze the results. To do that, you need to specify the 62RACY_ITER environment variable to make: 63 64 make check RACY_ITER=5 -j4 65 66The value assigned to RACY_ITER represents the number of times you 67wish to run the tests in sequence (in the example above, the entire 68testsuite will be executed 5 times in a row, in parallel). It is also 69possible to check just a specific test: 70 71 make check TESTS='gdb.base/default.exp' RACY_ITER=3 72 73One can also decide to call the Makefile rules by hand inside the 74gdb/testsuite directory, e.g.: 75 76 make check-parallel-racy -j4 77 78In which case the value of the DEFAULT_RACY_ITER variable (inside 79gdb/testsuite/Makefile.in) will be used to determine how many 80iterations will be run. 81 82After running the tests, you shall see a file name 'racy.sum' in the 83gdb/testsuite directory. You can also inspect the generated *.log and 84*.sum files by looking into the gdb/testsuite/racy_ouputs directory. 85 86If you already have *.sum files generated from previous testsuite runs 87and you would like to analyze them without having to run the testsuite 88again, you can also use the 'analyze-racy-logs.py' script directly. 89It is located in the gdb/testsuite/ directory, and it expects a list 90of two or more *.sum files to be provided as its argument. For 91example: 92 93 ./gdb/testsuite/analyze-racy-logs.py testsuite-01/gdb.sum \ 94 testsuite-02/gdb.sum testsuite-03/gdb.sum 95 96The script will output its analysis report to the standard output. 97 98Re-running Tests Outside The Testsuite 99************************************** 100 101When running a test, the arguments used to run GDB are saved to gdb.cmd and 102all commands sent to GDB are saved to gdb.in. As well as being a reference 103of the commands run, they can be used to manually re-run a test by using 104the gdb.in file as a batch file to a GDB launched with the arguments in the 105gdb.cmd file, for example: 106 $(cat outputs/gdb.base/store/gdb.cmd) -x outputs/gdb.base/store/gdb.in 107 108Tests that run GDB multiple times will append .1, .2, .3 etc to the end 109of each .cmd and .in file. 110 111When gdbserver is launched as part of a test, a gdbserver.cmd will be created. 112To re-run these tests, run the contents of gdbserver.cmd in a separate 113terminal before running gdb, for example: 114 $(cat outputs/gdb.base/store/gdbserver.cmd) 115Alternatively, if the test is run with GDBSERVER_DEBUG="replay", then this 116will create a gdbserver.replay file which can be used with the gdbreplay tool, 117instead of launching gdbserver. 118 119Running the Performance Tests 120***************************** 121 122GDB Testsuite includes performance test cases, which are not run together 123with other test cases, because performance test cases are slow and need 124a quiet system. There are two ways to run the performance test cases. 125The first is to do `make check-perf' in the main build directory: 126 127 make check-perf RUNTESTFLAGS="solib.exp SOLIB_COUNT=8" 128 129The second is to cd to the testsuite directory and invoke the DejaGnu 130`runtest' command directly. 131 132 cd testsuite 133 make site.exp 134 runtest GDB_PERFTEST_MODE=both GDB_PERFTEST_TIMEOUT=4000 --directory=gdb.perf solib.exp SOLIB_COUNT=8 135 136Only "compile", "run" and "both" are valid to GDB_PERFTEST_MODE. They 137stand for "compile tests only", "run tests only", and "compile and run 138tests" respectively. "both" is the default. GDB_PERFTEST_TIMEOUT 139specify the timeout, which is 3000 in default. The result of 140performance test is appended in `testsuite/perftest.log'. 141 142Testsuite Parameters 143******************** 144 145The following parameters are DejaGNU variables that you can set to 146affect the testsuite run globally. 147 148GDB 149 150By default, the testsuite exercises the GDB in the build directory, 151but you can set GDB to be a pathname to a different version. For 152instance, 153 154 make check RUNTESTFLAGS=GDB=/usr/bin/gdb 155 156runs the testsuite on the GDB in /usr/bin. 157 158GDBSERVER 159 160You can set GDBSERVER to be a particular GDBserver of interest, so for 161instance 162 163 make check RUNTESTFLAGS="GDB=/usr/bin/gdb GDBSERVER=/usr/bin/gdbserver" 164 165checks both the installed GDB and GDBserver. 166 167GDB_DATA_DIRECTORY 168 169If you set GDB, then by default the testsuite assumes you are 170exercising an installed GDB, and thus the testsuite lets GDB use its 171configured data directory. Otherwise, if you don't set GDB, then by 172default the tested GDB uses the data directory found under the GDB 173build directory. You can override this by setting GDB_DATA_DIRECTORY. 174For instance: 175 176 make check \ 177 RUNTESTFLAGS="GDB=/path/to/other/build/gdb \ 178 GDB_DATA_DIRECTORY=/path/to/other/build/gdb/data-directory" 179 180INTERNAL_GDBFLAGS 181 182Command line options passed to all GDB invocations. 183The default is set in lib/gdb.exp. 184 185This is actually considered an internal variable, and you 186won't normally want to change it. However, in some situations, 187this may be tweaked as a last resort if the testsuite doesn't 188have direct support for the specifics of your environment. 189The testsuite does not override a value provided by the user. 190 191As an example, when testing an installed GDB that has been 192configured with `--with-system-gdbinit', like by default, 193you do not want ~/.gdbinit to interfere with tests, but, you 194may want the system .gdbinit file loaded. As there's no way to 195ask the testsuite, or GDB, to load the system gdbinit but 196not ~/.gdbinit, a workaround is then to remove `-nx' from 197INTERNAL_GDBFLAGS, and point $HOME at a directory without 198a .gdbinit. For example: 199 200 cd testsuite 201 HOME=`pwd` runtest \ 202 GDB=/usr/bin/gdb \ 203 GDBSERVER=/usr/bin/gdbserver \ 204 INTERNAL_GDBFLAGS="-nw -iex 'set height 0' -iex 'set width 0'" 205 206Note that we do not need to specify '-data-directory' here 207as we are testing an installed GDB. 208 209GDB_PARALLEL 210 211To use parallel testing mode without using the Makefile, set 212GDB_PARALLEL on the runtest command line to "yes". Before starting 213the tests, you must ensure that the directories cache, outputs, and 214temp in the test suite build directory are either empty or have been 215deleted. cache in particular is used to share data across invocations 216of runtest, and files there may affect the test results. The Makefile 217automatically does these deletions. 218 219FORCE_PARALLEL 220 221Setting FORCE_PARALLEL to any non-empty value forces parallel testing 222mode even if RUNTESTFLAGS is not empty. 223 224FORCE_SEPARATE_MI_TTY 225 226Setting FORCE_MI_SEPARATE_UI to 1 forces all MI testing to start GDB 227in console mode, with MI running on a separate TTY, on a secondary UI 228started with "new-ui". 229 230GDB_INOTIFY 231 232For debugging parallel mode, it is handy to be able to see when a test 233case writes to a file outside of its designated output directory. 234 235If you have the inotify-tools package installed, you can set the 236GDB_INOTIFY variable on the runtest command line. This will cause the 237test suite to watch for parallel-unsafe file creations and report 238them, both to stdout and in the test suite log file. 239 240This setting is only meaningful in conjunction with GDB_PARALLEL. 241 242TESTS 243 244This variable is used to specify which set of tests to run. 245It is passed to make (not runtest) and its contents are a space separated 246list of tests to run. 247 248If using GNU make then the contents are wildcard-expanded using 249GNU make's $(wildcard) function. Test paths must be fully specified, 250relative to the "testsuite" subdirectory. This allows one to run all 251tests in a subdirectory by passing "gdb.subdir/*.exp", or more simply 252by using the check-gdb.subdir target in the Makefile. 253 254If for some strange reason one wanted to run all tests that begin with 255the letter "d" that is also possible: TESTS="*/d*.exp". 256 257Do not write */*.exp to specify all tests (assuming all tests are only 258nested one level deep, which is not necessarily true). This will pick up 259.exp files in ancillary directories like "lib" and "config". 260Instead write gdb.*/*.exp. 261 262Example: 263 264 make -j10 check TESTS="gdb.server/[s-w]*.exp */x*.exp" 265 266If not using GNU make then the value is passed directly to runtest. 267If not specified, all tests are run. 268 269READ1 270 271This make (not runtest) variable is used to specify whether the 272testsuite preloads the read1.so library into expect. Any non-empty 273value means true. See "Race detection" below. 274 275GDB_TEST_SOCKETHOST 276 277This variable can provide the hostname/address that should be used 278when performing GDBserver-related tests. This is useful in some 279situations, e.g., when you want to test the IPv6 connectivity of GDB 280and GDBserver, or when using a different hostname/address is needed. 281For example, to make GDB and GDBserver use IPv6-only connections, you 282can do: 283 284 make check TESTS="gdb.server/*.exp" RUNTESTFLAGS='GDB_TEST_SOCKETHOST=tcp6:[::1]' 285 286Note that only a hostname/address can be provided, without a port 287number. 288 289TS 290 291This variable turns on the timestamp printing for each line of "make 292check". Note that the timestamp will be printed on stdout output 293only. In other words, there will be no timestamp output on either 294gdb.sum and gdb.log files. If you would like to enable timestamp 295printing, you can do: 296 297 make check TS=1 298 299TS_FORMAT 300 301You can provide a custom format for timestamp printing with this 302variable. The format must be a string compatible with "strftime". 303This variable is only useful when the TS variable is also provided. 304If you would like to change the output format of the timestamp, you 305can do: 306 307 make check TS=1 TS_FORMAT='[%b %H:%S]' 308 309GDB_DEBUG 310 311When set gdb debug is sent to the file gdb.debug in the test output 312directory. It should be set to a comma separated list of gdb debug 313components. 314For example, to turn on debugging for infrun and target, you can do: 315 316 make check GDB_DEBUG="infrun,target" 317 318GDBSERVER_DEBUG 319 320When set gdbserver debug is sent to the a file in the test output directory. 321It should be set to a comma separated list of the following options: 322 debug - write gdbserver debug to gdbserver.debug. 323 remote - write gdbserver remote debug to gdbserver.debug. 324 replay - write a replay log to the file gdbserver.replay for use 325 with gdbreplay. 326Alternatively, it can be set to "all" to turn on all the above 327For example, to turn on gdbserver debugging, you can do: 328 329 make check GDBSERVER_DEBUG="debug,replay" 330 331Architecture-specific Parameters 332****************************** 333 334This section documents architecture-specific parameters that can be used with 335the GDB testsuite. 336 337- AArch64 (Linux) 338 339ARM_CC_FOR_TARGET 340 341The AArch64 ports of GDB and GDBserver support debugging AArch32 34232-bit programs running on 64-bit state. There are some tests under 343gdb.multi/ that exercise this particular feature. 344 345By default, the testsuite tries to find a compiler capable of 346generating 32-bit executables. If no compiler is found, or if the 34732-bit executable generated by the found compiler can't be executed 348correctly, the tests will be marked UNSUPPORTED. The list of 32-bit 349Arm compiler names the testsuite will try can be found in 350gdb/testsuite/lib/gdb.exp:arm_cc_for_target. 351 352You can set ARM_CC_FOR_TARGET to override the search and explicitly 353specify the compiler to use. This variable should contain the command 354line for the compiler, including the full path to it, if the compiler 355is not in $PATH. 356 357Example: 358 359 make check-gdb TESTS="gdb.multi/multi-arch.exp" RUNTESTFLAGS="ARM_CC_FOR_TARGET=arm-linux-gnueabihf-gcc" 360 361Race detection 362************** 363 364The testsuite includes a mechanism that helps detect test races. 365 366For example, say the program running under expect outputs "abcd", and 367a test does something like this: 368 369 expect { 370 "a.*c" { 371 } 372 "b" { 373 } 374 "a" { 375 } 376 } 377 378Which case happens to match depends on what expect manages to read 379into its internal buffer in one go. If it manages to read three bytes 380or more, then the first case matches. If it manages to read two 381bytes, then the second case matches. If it manages to read only one 382byte, then the third case matches. 383 384To help detect these cases, the race detection mechanism preloads a 385library into expect that forces the `read' system call to always 386return at most 1 byte. 387 388To enable this, either pass a non-empty value in the READ1 make 389variable, or use the check-read1 make target instead of check. 390 391Example: 392 393 make -j10 check-read1 TESTS="*/paginate-*.exp" 394 395If you've already built the read1 support code, either via a previous 396'check-read1' run, or by using "make read1", you can use: 397 398 make -j10 check READ1="1" 399 400Note: While the intention is to detect races and make otherwise passing tests 401fail, it can also have the effect of making otherwise failing tests pass. 402This happens f.i. if the test is trying to match a gdb prompt using an end of 403input marker "${gdb_prompt} $" and there is output after the gdb prompt. This 404may either pass or fail in normal operation, but using check-read1 will ensure 405that it passes. Use check-readmore to detect this type of failure. 406 407Testsuite Configuration 408*********************** 409 410It is possible to adjust the behavior of the testsuite by defining 411the global variables listed below, either in a `site.exp' file, 412or in a board file. 413 414gdb_test_timeout 415 416Defining this variable changes the default timeout duration used 417during communication with GDB. More specifically, the global variable 418used during testing is `timeout', but this variable gets reset to 419`gdb_test_timeout' at the beginning of each testcase, which ensures 420that any local change to `timeout' in a testcase does not affect 421subsequent testcases. 422 423This global variable comes in handy when the debugger is slower than 424normal due to the testing environment, triggering unexpected `TIMEOUT' 425test failures. Examples include when testing on a remote machine, or 426against a system where communications are slow. 427 428If not specifically defined, this variable gets automatically defined 429to the same value as `timeout' during the testsuite initialization. 430The default value of the timeout is defined in the file 431`testsuite/config/unix.exp' (at least for Unix hosts; board files may 432have their own values). 433 434gdb_reverse_timeout 435 436Defining this variable changes the default timeout duration when tests 437under gdb.reverse directory are running. Process record and reverse 438debugging is so slow that its tests have unexpected `TIMEOUT' test 439failures. This global variable is useful to bump up the value of 440`timeout' for gdb.reverse tests and doesn't cause any delay where 441actual failures happen in the rest of the testsuite. 442 443 444Board Settings 445************** 446 447DejaGNU includes the concept of a "board file", which specifies 448testing details for a particular target (which are often bare circuit 449boards, thus the name). 450 451In the GDB testsuite specifically, the board file may include a 452number of "board settings" that test cases may check before deciding 453whether to exercise a particular feature. For instance, a board 454lacking any I/O devices, or perhaps simply having its I/O devices 455not wired up, should set `noinferiorio'. 456 457Here are the supported board settings: 458 459gdb,cannot_call_functions 460 461 The board does not support inferior call, that is, invoking inferior 462 functions in GDB. 463 464gdb,can_reverse 465 466 The board supports reverse execution. 467 468gdb,no_hardware_watchpoints 469 470 The board does not support hardware watchpoints. 471 472gdb,nofileio 473 474 GDB is unable to intercept target file operations in remote and 475 perform them on the host. 476 477gdb,noinferiorio 478 479 The board is unable to provide I/O capability to the inferior. 480 481gdb,noresults 482 483 A program will not return an exit code or result code (or the value 484 of the result is undefined, and should not be looked at). 485 486gdb,nosignals 487 488 The board does not support signals. 489 490gdb,skip_huge_test 491 492 Skip time-consuming tests on the board with slow connection. 493 494gdb,skip_float_tests 495 496 Skip tests related to floating point. 497 498gdb,use_precord 499 500 The board supports process record. 501 502gdb_init_command 503gdb_init_commands 504 505 Commands to send to GDB every time a program is about to be run. The 506 first of these settings defines a single command as a string. The 507 second defines a TCL list of commands being a string each. The commands 508 are sent one by one in a sequence, first from `gdb_init_command', if any, 509 followed by individual commands from `gdb_init_command', if any, in this 510 list's order. 511 512gdb_server_prog 513 514 The location of GDBserver. If GDBserver somewhere other than its 515 default location is used in test, specify the location of GDBserver in 516 this variable. The location is a file name for GDBserver, and may be 517 either absolute or relative to the testsuite subdirectory of the build 518 directory. 519 520in_proc_agent 521 522 The location of the in-process agent (used for fast tracepoints and 523 other special tests). If the in-process agent of interest is anywhere 524 other than its default location, set this variable. The location is a 525 filename, and may be either absolute or relative to the testsuite 526 subdirectory of the build directory. 527 528noargs 529 530 GDB does not support argument passing for inferior. 531 532no_long_long 533 534 The board does not support type long long. 535 536use_cygmon 537 538 The board is running the monitor Cygmon. 539 540use_gdb_stub 541 542 The tests are running with a GDB stub. 543 544exit_is_reliable 545 546 Set to true if GDB can assume that letting the program run to end 547 reliably results in program exits being reported as such, as opposed 548 to, e.g., the program ending in an infinite loop or the board 549 crashing/resetting. If not set, this defaults to $use_gdb_stub. In 550 other words, native targets are assumed reliable by default, and 551 remote stubs assumed unreliable. 552 553gdb,predefined_tsv 554 555 The predefined trace state variables the board has. 556 557gdb,no_thread_names 558 559 The target doesn't support thread names. 560 561gdb,pie_flag 562 563 The flag required to force the compiler to produce position-independent 564 executables. 565 566gdb,pie_ldflag 567 568 The flag required to force the linker to produce position-independent 569 executables. 570 571gdb,nopie_flag 572 573 The flag required to force the compiler to produce non-position-independent 574 executables. 575 576gdb,nopie_ldflag 577 578 The flag required to force the linker to produce non-position-independent 579 executables. 580 581gdb,debug 582 583 When set gdb debug is sent to the file gdb.debug in the test output 584 directory. It should be set to a comma separated list of gdb debug 585 components. For example, to turn on debugging for infrun and target, set to 586 "infrun,target". 587 588gdbserver,debug 589 590 When set gdbserver debug is sent to the file gdbserver.debug in the test 591 output directory. For valid values see the entry for GDBSERVER_DEBUG. 592 593Testsuite Organization 594********************** 595 596The testsuite is entirely contained in `gdb/testsuite'. The main 597directory of the testsuite includes some makefiles and configury, but 598these are minimal, and used for little besides cleaning up, since the 599tests themselves handle the compilation of the programs that GDB will 600run. 601 602The file `testsuite/lib/gdb.exp' contains common utility procs useful 603for all GDB tests, while the directory testsuite/config contains 604configuration-specific files, typically used for special-purpose 605definitions of procs like `gdb_load' and `gdb_start'. 606 607The tests themselves are to be found in directories named 608'testsuite/gdb.* and subdirectories of those. The names of the test 609files must always end with ".exp". DejaGNU collects the test files by 610wildcarding in the test directories, so both subdirectories and 611individual files typically get chosen and run in alphabetical order. 612 613The following lists some notable types of subdirectories and what they 614are for. Since DejaGNU finds test files no matter where they are 615located, and since each test file sets up its own compilation and 616execution environment, this organization is simply for convenience and 617intelligibility. 618 619gdb.base 620 621This is the base testsuite. The tests in it should apply to all 622configurations of GDB (but generic native-only tests may live here). 623The test programs should be in the subset of C that is both valid 624ANSI/ISO C, and C++. 625 626gdb.<lang> 627 628Language-specific tests for any language besides C. Examples are 629gdb.cp for C++ and gdb.rust for Rust. 630 631gdb.<platform> 632 633Non-portable tests. The tests are specific to a specific 634configuration (host or target), such as eCos. 635 636gdb.arch 637 638Architecture-specific tests that are (usually) cross-platform. 639 640gdb.<subsystem> 641 642Tests that exercise a specific GDB subsystem in more depth. For 643instance, gdb.disasm exercises various disassemblers, while 644gdb.stabs tests pathways through the stabs symbol reader. 645 646gdb.perf 647 648GDB performance tests. 649 650Writing Tests 651************* 652 653In many areas, the GDB tests are already quite comprehensive; you 654should be able to copy existing tests to handle new cases. Be aware 655that older tests may use obsolete practices but have not yet been 656updated. 657 658You should try to use `gdb_test' whenever possible, since it includes 659cases to handle all the unexpected errors that might happen. However, 660it doesn't cost anything to add new test procedures; for instance, 661gdb.base/exprs.exp defines a `test_expr' that calls `gdb_test' 662multiple times. 663 664Only use `send_gdb' and `gdb_expect' when absolutely necessary. Even 665if GDB has several valid responses to a command, you can use 666`gdb_test_multiple'. Like `gdb_test', `gdb_test_multiple' recognizes 667internal errors and unexpected prompts. 668 669Do not write tests which expect a literal tab character from GDB. On 670some operating systems (e.g. OpenBSD) the TTY layer expands tabs to 671spaces, so by the time GDB's output reaches `expect' the tab is gone. 672 673The source language programs do *not* need to be in a consistent 674style. Since GDB is used to debug programs written in many different 675styles, it's worth having a mix of styles in the testsuite; for 676instance, some GDB bugs involving the display of source lines might 677never manifest themselves if the test programs used GNU coding style 678uniformly. 679 680Some testcase results need more detailed explanation: 681 682KFAIL 683 684Use KFAIL for known problem of GDB itself. You must specify the GDB 685bug report number, as in these sample tests: 686 687 kfail "gdb/13392" "continue to marker 2" 688 689or 690 691 setup_kfail gdb/13392 "*-*-*" 692 kfail "continue to marker 2" 693 694 695XFAIL 696 697Short for "expected failure", this indicates a known problem with the 698environment. This could include limitations of the operating system, 699compiler version, and other components. 700 701This example from gdb.base/attach-pie-misread.exp is a sanity check 702for the target environment: 703 704 # On x86_64 it is commonly about 4MB. 705 if {$stub_size > 25000000} { 706 xfail "stub size $stub_size is too large" 707 return 708 } 709 710You should provide bug report number for the failing component of the 711environment, if such bug report is available, as with this example 712referring to a GCC problem: 713 714 if {[test_compiler_info {gcc-[0-3]-*}] 715 || [test_compiler_info {gcc-4-[0-5]-*}]} { 716 setup_xfail "gcc/46955" *-*-* 717 } 718 gdb_test "python print ttype.template_argument(2)" "&C::c" 719 720Note that it is also acceptable, and often preferable, to avoid 721running the test at all. This is the better option if the limitation 722is intrinsic to the environment, rather than a bug expected to be 723fixed in the near future. 724 725Local vs Remote vs Native 726************************* 727 728It's unfortunately easy to get confused in the testsuite about what's 729native and what's not, what's remote and what's not. The confusion is 730caused by the overlap in vocabulary between DejaGnu and GDB. 731 732From a DejaGnu point of view: 733 734 - native: the host or target board is considered native if the its 735 triplet is the same as the build system's triplet, 736 737 - remote: the host or target board is considered remote if it's 738 running on a different machine, and thus require ssh, for example, 739 to run commands, versus simply running commands directly. 740 741Note that they are not mutually exclusive, as you can have a remote 742machine that has the same triplet as the build machine. 743 744From a GDB point of view: 745 746 - native: when GDB uses system calls such as ptrace to interact 747 directly with processes on the same system its running on, 748 749 - remote: when GDB speaks the RSP (Remote Serial Protocol) with 750 another program doing the ptrace stuff. 751 752Note that they are mutually exclusive. An inferior can only be either 753debugged with the native target, or with the remote target a specific 754time. 755 756That means that there are cases where the target is not remote for 757DejaGnu, but is remote for GDB (e.g. running GDBserver on the same 758machine). 759 760You can also have a remote target for DejaGnu, but native for GDB 761(e.g. building on x86 a GDB that runs on ARM and running the 762testsuite with a remote host). 763 764Therefore, care must be taken to check for the right kind of remote. 765Use [is_remote target] to check whether the DejaGnu target board is 766remote. When what you really want to know is whether GDB is using the 767remote protocol, because feature X is only available when GDB debugs 768natively, check gdb_protocol instead. 769