aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-10-11sim: Check known getopt definition existenceTsukasa OI3-0/+45
Clang generates a warning if there is a function declaration/definition with zero arguments. Such declarations/definitions without a prototype (an argument list) are deprecated forms of indefinite arguments ("-Wdeprecated-non-prototype"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). include/getopt.h defines some getopt function definitions but one of them has a form "extern int getopt ();". If this form is selected in include/getopt.h, Clang generates a warning and the build fails by default. In really old environments, this getopt definition with no arguments is necessary (because the definition may change between environments). However, this definition is now a cause of problems on modern environments. A good news is, this definition is not always selected (e.g. if used by binutils/*.c). This is because configuration scripts of binutils, gas, gprof and ld tries to find known definition of getopt function is used and defines HAVE_DECL_GETOPT macro. If this macro is defined when getopt.h is included, a good form of getopt is used and Clang won't generate warnings. This commit adds a modified portion of ld/configure.ac to find the known getopt definition. If we could find one (and we *will* in most modern environments), we don't need to rely on the deprecated definition.
2022-10-11sim: Suppress non-literal printf warningTsukasa OI2-13/+17
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid this warning, this commit now uses vsnprintf to format error message and pass the message to sim_engine_abort function with another printf-style formatting. This patch is mostly authored by Andrew Burgess and slightly modified by Tsukasa OI. Co-authored-by: Andrew Burgess <aburgess@redhat.com> Signed-off-by: Tsukasa OI <research_trasio@irq.a4lg.com>
2022-10-11sim: Make WITH_{TRACE,PROFILE}-based macros boolTsukasa OI2-8/+8
Clang generates a warning if there is an ambiguous expression (possibly a bitwise operation (& or |), but a logical operator (&& or ||) is used; "-Wconstant-logical-operand"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). This is caused by predicate macros that use the form (base_variable & flag). Clang considers them as regular integer values (not boolean) and generates that warning. This commit makes Clang think those predicate macros to be boolean.
2022-10-11sim: Remove self-assignmentsTsukasa OI2-4/+0
Clang generates a warning if there is a redundant self-assignment ("-Wself-assign"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). This commit removes redundant self-assignments from two files.
2022-10-11sim/rl78: Add ATTRIBUTE_PRINTFTsukasa OI1-2/+2
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to the printf-like functions.
2022-10-11sim/ppc: Add ATTRIBUTE_PRINTFTsukasa OI3-8/+7
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to the printf-like functions. For the error function defined in sim_calls.c, the ATTRIBUTE_NORETURN has been moved to the function declaration.
2022-10-11sim/m68hc11: Add ATTRIBUTE_PRINTFTsukasa OI1-1/+2
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to a printf-like function.
2022-10-11sim/m32c: Add ATTRIBUTE_PRINTFTsukasa OI1-2/+2
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to the printf-like functions.
2022-10-11sim/erc32: Add ATTRIBUTE_PRINTFTsukasa OI2-2/+2
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to the printf-like functions.
2022-10-11sim/cris: Add ATTRIBUTE_PRINTFTsukasa OI1-1/+1
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to a printf-like function.
2022-10-11sim/common: Add ATTRIBUTE_PRINTFTsukasa OI1-1/+2
Clang generates a warning if the format string of a printf-like function is not a literal ("-Wformat-nonliteral"). On the default configuration, it causes a build failure (unless "--disable-werror" is specified). To avoid warnings on the printf-like wrapper, it requires proper __attribute__((format)) and we have ATTRIBUTE_PRINTF macro for this reason. This commit adds ATTRIBUTE_PRINTF to a printf-like function.
2022-10-11fix compressed_debug_section_names definition for "zlib"Martin Liska1-1/+1
bfd/ChangeLog: * libbfd.c: Set COMPRESS_DEBUG_GABI_ZLIB for "zlib" value.
2022-10-11add --enable-default-compressed-debug-sections-algorithm configure optionMartin Liska12-6/+99
ChangeLog: * configure.ac: Add --enable-default-compressed-debug-sections-algorithm. * configure: Regenerate. gas/ChangeLog: * NEWS: Document the new option. * as.c (flag_compress_debug): Set default algorithm based on the configure option. * configure.ac: Add --enable-default-compressed-debug-sections-algorithm. * configure: Regenerate. * config.in: Likewise. ld/ChangeLog: * NEWS: Document the new option. * configure.ac: Add --enable-default-compressed-debug-sections-algorithm. * configure: Regenerate. * config.in: Likewise. * ldmain.c: Set default algorithm based on the configure option.
2022-10-11refactor usage of compressed_debug_section_typeMartin Liska6-52/+88
bfd/ChangeLog: * bfd-in.h (bfd_hash_set_default_size): Add COMPRESS_UNKNOWN enum value. (struct compressed_type_tuple): New. * bfd-in2.h (bfd_hash_set_default_size): Regenerate. (struct compressed_type_tuple): Likewise. * libbfd.c (ARRAY_SIZE): New macro. (bfd_get_compression_algorithm): New function. (bfd_get_compression_algorithm_name): Likewise. gas/ChangeLog: * as.c: Do not special-case, use the new functions. ld/ChangeLog: * emultempl/elf.em: Do not special-case, use the new functions. * lexsup.c (elf_static_list_options): Likewise.
2022-10-11sim/riscv: fix multiply instructions on simulatorTsukasa OI2-0/+19
After this commit: commit 0938b032daa52129b4215d8e0eedb6c9804f5280 Date: Wed Feb 2 10:06:15 2022 +0900 RISC-V: Add 'Zmmul' extension in assembler. some instructions in the RISC-V simulator stopped working as a new instruction class 'INSN_CLASS_ZMMUL' was added, and some existing instructions were moved into this class. The simulator doesn't currently handle this instruction class, and so the instructions will now cause an illegal instruction trap. This commit adds support for INSN_CLASS_ZMMUL, and adds a test that ensures the affected instructions can be executed by the simulator. Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com> Reviewed-by: Andrew Burgess <aburgess@redhat.com>
2022-10-11Error: attempt to get value of unresolved symbol `L0'Nick Clifton2-2/+12
* symbols.c (S_GET_VALUE): If the unresolved symbol is the fake label provide a more helpful error message to the user.
2022-10-11sim/moxie: add custom directory stamp ruleTsukasa OI2-9/+23
Because sim/moxie/moxie-gdb.dtb is neither a program nor a library, automake does not generate dirstamp file ($builddir/sim/moxie/.dirstamp) for it. When maintainer mode is enabled, it tries to rebuild sim/moxie/moxie-gdb.dtb but fails because there's no rules for automake-generated dirstamp file which moxie-gdb.dtb depends. This commit adds its own rule for the directory stamp (modified copy of the automake output) and adds the directory stamp file to DISTCLEANFILES to mimic automake-generated behavior (although "make distclean" does not work when maintainer mode is enabled).
2022-10-11gdb/testsuite: Fix formatting of python scriptBruno Larsen1-3/+7
The python black formatter was complaining about formatting on the script gdb.python/pretty-print-call-by-hand.py. This commit changed the offending lines to make the formatter happy.
2022-10-11[gdb/testsuite] Fix prompt parsing in capture_command_outputTom de Vries2-19/+51
I noticed in capture_command_output that the output of a single command is matched using two gdb_test_multiples: - the first one matching the echoed command and skipping an optional prefix, - the second one matching the output and the prompt. This is error-prone, because the first gdb_test_multiple has implicit clauses which may consume the prompt. The problem is easy to spot with an example. First consider: ... set output [capture_command_output "print 1" "\\\$1 = "] gdb_assert { [string equal $output "1"] } ... for which we get: ... PASS: [string equal $output "1"] ... If we change the prefix string to a no-match, say "1 = ", and update the output string match accordingly, we get instead: ... FAIL: capture_command_output for print 1 FAIL: [string equal $output "\$1 = 1"] ... The first FAIL is produced by the first gdb_test_multiple, consuming the prompt. The second gdb_test_multiple then silently times out waiting for another prompt, after which the second FAIL is produced. Note that the timeout is silent because the gdb_test_multiple is called with an empty message argument. The second FAIL is because capture_command_output returns "", given that all the command output was consumed by the first gdb_test_multiple. Fix this by rewriting capture_command_output to use only a single gdb_test_multiple. Tested on x86_64-linux.
2022-10-11gprofng: no need to build version.texiVladimir Mezentsev2-29/+4
gprofng/ChangeLog 2022-10-10 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/29465 PR gprofng/29667 * doc/Makefile.am: No need to build version.texi. * doc/Makefile.in: Rebuild.
2022-10-11gprofng: use the --libdir path to find librariesVladimir Mezentsev3-3/+9
gprofng/ChangeLog 2022-10-10 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/29663 * src/Makefile.am: Add -DLIBDIR to CPPFLAGS. * src/Makefile.in: Rebuild. * src/envsets.cc (putenv_libcollector_ld_misc): Use LIBDIR to find the gprofng libraries.
2022-10-11gprofng: run tests without installationVladimir Mezentsev3-5/+6
gprofng/ChangeLog 2022-10-10 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/29107 * testsuite/config/default.exp: Set up environment to run gprofng tests without installation. * testsuite/lib/Makefile.skel: Likewise. * testsuite/lib/display-lib.exp: Likewise.
2022-10-10gdb/testsuite: fix race in gdb.base/async-shell.expSimon Marchi2-8/+23
I see some random failures in this test: FAIL: gdb.base/async-shell.exp: run & (timeout) It can be reliably reproduced on a recent enough GNU/Linux with this change: diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 44cc28b30051..2a3c8253ba5a 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1301,6 +1301,7 @@ proc gdb_test_multiple { command message args } { } set gdb_test_name "$message" + sleep 2 set result 0 set code [catch {gdb_expect $code} string] "recent enough" means a system where libpthread.so was merged with libc.so, so at least glibc 2.34. The problem is that the `run &` command prints some things after the prompt: (gdb) [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/../lib/libthread_db.so.1". If expect is quick enough, it will consume only up to the prompt. But if it is slow enough, it will consume those messages at the same time as the prompt, in which case the gdb_test used for "run &" won't match. By default, the prompt used by gdb_test uses a `$` to anchor the match at the end of the buffer. If there's anything following the prompt, it won't match. The diff above adds a delay between sending the command and consuming the output, giving GDB more time to output the messages, giving a good chance that expect consumes them at the same time as the prompt. This is normally handled by using gdb_test_multiple and specifying a pattern that ends with "$gdb_prompt", but not a trailing $. I think this is common enough that it deserves its own gdb_test option. Therefore, add the -no-anchor-prompt option to gdb_test, and gdb_test_no_output for completeness. Use it in gdb.base/async-shell.exp. Change-Id: I9051d8800d1c10a2e95db1a575991f7723492f1b Approved-By: Tom de Vries <tdevries@suse.de>
2022-10-11Automatic date update in version.inGDB Administrator1-1/+1
2022-10-10Fix a latent bug in print_wcharTom Tromey3-10/+24
print_wchar keeps track of when escape sequences are emitted, to force an escape sequence if needed by a subsequent character. For example for the string concatenation "\0" "1", gdb will print "\000\061" -- because printing "\0001" might be confusing. However, this code has two errors. First, this logic is not needed for octal escapes, because there is a length limit of 3 for octal escapes, and gdb always prints these with "%.3o". Second, though, this *is* needed for hex escapes, because those do not have a length limit. This patch fixes these problems and adds the appropriate tests.
2022-10-10Don't use wchar_printable in print_wcharTom Tromey1-6/+5
print_wchar uses wchar_printable, but this isn't needed -- all the relevant cases are already handled by the 'switch'. This changes the code to use gdb_iswprint, and removes a somewhat confusing comment related to this code.
2022-10-10Remove c_printstrTom Tromey4-26/+7
This renames c_printstr, removing a layer of indirection.
2022-10-10Remove c_emit_charTom Tromey3-14/+2
This renames c_emit_char, removing a layer of indirection.
2022-10-10Boolify need_escape in generic_emit_charTom Tromey1-6/+6
This changes 'need_escape' in generic_emit_char to be of type bool, rather than int.
2022-10-10Fix latent quote char bug in generic_printstrTom Tromey3-1/+64
generic_printstr prints an empty string like: fputs_filtered ("\"\"", stream); However, this seems wrong to me if the quote character is something other than double quote. This patch fixes this latent bug. Thanks to Andrew for the test case. Co-authored-by: Andrew Burgess <aburgess@redhat.com>
2022-10-10Fix the guile buildTom Tromey3-74/+107
The frame_info_ptr patches broke the build with Guile. This patch fixes the problem. In mos cases I chose to preserve the use of frame_info_ptr, at least where I could be sure that the object lifetime did not interact with Guile's longjmp-based exception scheme. Tested on x86-64 Fedora 34.
2022-10-10[gdb/testsuite] Detect trailing ^C/^D in commandTom de Vries2-6/+32
Detect a trailing ^C/^D in the command argument of gdb_test_multiple, and error out. Tested on x86_64-linux.
2022-10-10[gdb/testsuite] Fix error message for cmd with trailing newlineTom de Vries2-1/+29
I noticed that the error message in gdb_test_multiple about trailing newline in a command does not mention the offending command, nor the word command: ... if [string match "*\[\r\n\]" $command] { error "Invalid trailing newline in \"$message\" test" } ... Fix this by using instead: ... error "Invalid trailing newline in \"$command\" command" ... Also add a test-case to trigger this: gdb.testsuite/gdb-test.exp. Tested on x86_64-linux.
2022-10-10gdb: include the base address in in-memory bfd filenamesAndrew Burgess4-16/+229
The struct target_buffer (in gdb_bfd.c) is used to hold information about an in-memory BFD object created by GDB. For now this mechanism is used by GDB when loading information about JIT symfiles. This commit updates target_buffer (in gdb_bfd.c) to be more C++ like, and, at the same time, adds the base address of the symfile into the BFD filename. Right now, every in-memory BFD is given the filename "<in-memory>". This filename is visible in things like 'maint info symtabs' and 'maint info line-table'. If there are multiple in-memory BFD objects then it can be hard to match keep track if which BFD is which. This commit changes the name to be "<in-memory@ADDRESS>" where ADDRESS is replaced with the base address for where the in-memory symbol file was read from. As an example of how this is useful, here's the output of 'maint info jit' showing a single loaded JIT symfile: (gdb) maintenance info jit jit_code_entry address symfile address symfile size 0x00000000004056b0 0x0000000007000000 17320 And here's part of the output from 'maint info symtabs': (gdb) maintenance info symtabs ...snip... { objfile <in-memory@0x7000000> ((struct objfile *) 0x5258250) { ((struct compunit_symtab *) 0x4f0afb0) debugformat DWARF 4 producer GNU C17 9.3.1 20200408 (Red Hat 9.3.1-2) -mtune=generic -march=x86-64 -g -fno-stack-protector -fpic name jit-elf-solib.c dirname /tmp/binutils-gdb/build/gdb/testsuite blockvector ((struct blockvector *) 0x5477850) user ((struct compunit_symtab *) (null)) { symtab /tmp/binutils-gdb/build/gdb/testsuite/../../../src/gdb/testsuite/gdb.base/jit-elf-solib.c ((struct symtab *) 0x4f0b030) fullname (null) linetable ((struct linetable *) 0x5477880) } } } I've added a new test that checks the new in-memory file names are generated correctly, and also checks that the in-memory JIT files can be dumped back out using 'dump binary memory'.
2022-10-10gdb: remove filename arg from gdb_bfd_open_from_target_memoryAndrew Burgess2-6/+6
The filename argument to gdb_bfd_open_from_target_memory was never used; this argument had a default value of nullptr, and the only call to this function, in jit.c, relied on the default value. In the next commit I'm going to make some changes to the gdb_bfd_open_from_target_memory function, and, though I could take account of a filename parameter, it seems pointless to maintain an unused argument. This commit removes the filename argument. There should be no user visible changes after this commit.
2022-10-10gdb: add infcall specific debuggingAndrew Burgess3-0/+79
Add two new commands: set debug infcall on|off show debug infcall These enable some new debugging related to when GDB makes inferior function calls. I've added some basic debugging for what I think are the major steps in the inferior function call process, but I'm sure we might want to add more later.
2022-10-10gdb: extra debug output in thread.cAndrew Burgess1-0/+9
Add some extra 'threads' debug in a couple of places in thread.c. I've also added an additional gdb_assert in one case.
2022-10-10gdb: improve infrun_debug_show_threads outputAndrew Burgess1-0/+2
This commit switches to use INFRUN_SCOPED_DEBUG_START_END in the infrun_debug_show_threads function, which means the output will get an extra level of indentation, this looks a little nicer I think.
2022-10-10Add ability to create reproducible source tarballs.Nick Clifton3-4/+27
* src-release.sh: Add "-r <date>" option to create reproducible tarballs based upon a fixed timestamp of <date>. * binutils/README-how-to-make-a-release: Add a line showing how to use -r <date> when creating a binutils release.
2022-10-10gdb/frame: Add reinflation method for frame_info_ptrBruno Larsen9-118/+409
Currently, despite having a smart pointer for frame_infos, GDB may attempt to use an invalidated frame_info_ptr, which would cause internal errors to happen. One such example has been documented as PR python/28856, that happened when printing frame arguments calls an inferior function. To avoid failures, the smart wrapper was changed to also cache the frame id, so the pointer can be reinflated later. For this to work, the frame-id stuff had to be moved to their own .h file, which is included by frame-info.h. Frame_id caching is done explicitly using the prepare_reinflate method. Caching is done manually so that only the pointers that need to be saved will be, and reinflating has to be done manually using the reinflate method because the get method and the -> operator must not change the internals of the class. Finally, attempting to reinflate when the pointer is being invalidated causes the following assertion errors: check_ptrace_stopped_lwp_gone: assertion `lp->stopped` failed. get_frame_pc: Assertion `frame->next != NULL` failed. As for performance concerns, my personal testing with `time make chec-perf GDB_PERFTEST_MODE=run` showed an actual reduction of around 10% of time running. This commit also adds a testcase that exercises the python/28856 bug with 7 different triggers, run, continue, step, backtrace, finish, up and down. Some of them can seem to be testing the same thing twice, but since this test relies on stale pointers, there is always a chance that GDB got lucky when testing, so better to test extra. Regression tested on x86_64, using both gcc and clang. Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10Change GDB to use frame_info_ptrTom Tromey249-1522/+1527
This changes GDB to use frame_info_ptr instead of frame_info * The substitution was done with multiple sequential `sed` commands: sed 's/^struct frame_info;/class frame_info_ptr;/' sed 's/struct frame_info \*/frame_info_ptr /g' - which left some issues in a few files, that were manually fixed. sed 's/\<frame_info \*/frame_info_ptr /g' sed 's/frame_info_ptr $/frame_info_ptr/g' - used to remove whitespace problems. The changed files were then manually checked and some 'sed' changes undone, some constructors and some gets were added, according to what made sense, and what Tromey originally did Co-Authored-By: Bruno Larsen <blarsen@redhat.com> Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10Introduce frame_info_ptr smart pointer classTom Tromey3-0/+187
This adds frame_info_ptr, a smart pointer class. Every instance of the class is kept on an intrusive list. When reinit_frame_cache is called, the list is traversed and all the pointers are invalidated. This should help catch the typical GDB bug of keeping a frame_info pointer alive where a frame ID was needed instead. Co-Authored-By: Bruno Larsen <blarsen@redhat.com> Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10Remove frame_id_eqTom Tromey17-79/+65
This replaces frame_id_eq with operator== and operator!=. I wrote this for a version of this series that I later abandoned; but since it simplifies the code, I left this patch in. Approved-by: Tom Tomey <tom@tromey.com>
2022-10-10gdb/testsuite: use 'end' at the end of python blocksAndrew Burgess3-3/+3
Within the testsuite, use the keyword 'end' to terminate blocks of Python code being sent to GDB, rather than sending \004. I could only find three instances of this, all in tests that I originally wrote. I have no memory of there being any special reason why I used \004 instead of 'end' - I assume I copied this from somewhere else that has since changed. Non of the tests being changed here are specifically about whether \004 can be used to terminate a Python block, so I think switching to the more standard 'end' keyword is the right choice.
2022-10-09gdbsupport: re-generate configureSimon Marchi1-2/+2
I get this diff when re-generating configure, probably leftover from 67d1991b785 ("egrep in binutils"). Change-Id: I759c88c2bad648736d33ff98089db45c9b686356
2022-10-10Merge configure.ac from gcc projectAlan Modra3-174/+4481
To merge with gcc's copy of configure.ac we need to revert changes to configure.ac in the following gcc commits: dc832fb39fc0 2022-08-25 fc259b522c0f 2022-06-25 Then reapply configure.ac changes in binutils from these binutils commits: 50ad1254d503 2021-01-09 bb368aad297f 2022-03-11 e5f2f7d901ee 2022-07-26 2cac01e3ffff 2022-09-26 Plus copy over gcc's config/ax_cxx_compile_stdcxx.m4, then regenerate configure.
2022-10-10Automatic date update in version.inGDB Administrator1-1/+1
2022-10-09Automatic date update in version.inGDB Administrator1-1/+1
2022-10-08Merge both implementations of debug_names::insertTom Tromey1-27/+24
The class debug_names has two 'insert' overloads, but only one of them is ever called externally, and it simply forwards to the other implementation. It seems cleaner to me to have a single method, so this patch merges the two.
2022-10-08[gdb/testsuite] Fix silent fail in gdb.server/connect-with-no-symbol-file.expTom de Vries1-3/+13
With native and target boards native-gdbserver, remote-gdbserver-on-localhost and remote-stdio-gdbserver I have for gdb.server/connect-with-no-symbol-file.exp: ... # of expected passes 8 ... but with native-extended-gdbserver I have instead: ... # of expected passes 8 # of unexpected failures 4 ... The extra FAILs are of the form: ... (gdb) detach^M Detaching from pid process 28985^M [Inferior 1 (process 28985) detached]^M (gdb) FAIL: gdb.server/connect-with-no-symbol-file.exp: sysroot=: \ action=permission: connection to GDBserver succeeded ... and are due to the fact that the actual gdb output doesn't match the regexp: ... gdb_test "detach" \ ".*Detaching from program: , process.*Ending remote debugging.*" \ "connection to GDBserver succeeded" ... With native, the actual gdb output is: ... (gdb) detach^M Detaching from pid process 29657^M Ending remote debugging.^M [Inferior 1 (process 29657) detached]^M (gdb) Remote debugging from host ::1, port 51028^M ... and because the regexp doesn't match, it triggers an implicit clause for "Ending remote debugging" in gdb_test_multiple, which has the consequence that the FAIL is silent. Fix: - the regexp by making it less strict - the silent fail by rewriting into a gdb_test_multiple, and adding an explicit fail clause. Tested on x86_64-linux, using native and aforementioned target boards.