Go to file
Andrew Burgess 11039eff71 gdb/testsuite: fix mi-exec-run.exp with native-extended-gdbserver board
When running with the native-extended-gdbserver board, I currently see
one failure in gdb.mi/mi-exec-run.exp:

    FAIL: gdb.mi/mi-exec-run.exp: inferior-tty=separate: mi=separate: force-fail=0: breakpoint hit reported on console (timeout)

In this test the MI interface should be started in a separate tty,
which means we should have a CLI tty and an MI tty, however, this is
not happening.  Instead GDB is just started in MI mode and there is no
CLI tty.

The test script tries to switch between the CLI an MI terminals and
look for some expected output on each, however, as there is no CLI
terminal the expected output never arrives, and the test times out.

It turns out that this is not a GDB problem, rather, this is an issue
with argument passing within the test script.

The proc default_mi_gdb_start expects to take a set of flags (strings)
as arguments, each of flag is expected to be a separate argument.  The
default_mi_gdb_start proc collects all its arguments into a list using
the special 'args' parameter name, and then iterates over this list to
see which flags were passed.

In mi_gdb_start, which forwards to default_mi_gdb_start, the arguments
are also gathered into the 'args' parameter list, but are then
expanded back to be separate arguments using the eval trick, i.e.:

  proc mi_gdb_start { args } {
    return [eval default_mi_gdb_start $args]
  }

This ensures that when we arrive in default_mi_gdb_start each flag is
a separate argument, rather than appearing as a single list containing
all arguments.

When using the native-extended-gdbserver board however, the file
boards/native-extended-gdbserver.exp is loaded, and this file replaces
the default mi_gdb_start with its own version.

This new mi_gdb_start also gathers the arguments into an 'args' list,
but forgets to expand the arguments out using the eval trick.

As a result, when using the native-extended-gdbserver board, by the
time we get to default_mi_gdb_start, we end up with the args list
containing a single item, which is a list containing all the arguments
the user passed.

What this means is that if the user passes two arguments, then, in
default_mi_gdb_start, instead of seeing two separate arguments, we see
a single argument made by concatenating the two arguments together.

The only place this is a problem is in the test mi-exec-run.exp,
which (as far as I can see) is the only test where we might try to
pass both arguments at the same time.  Currently we think we passed
both arguments to mi_gdb_start, but mi_gdb_start behaves as if no
arguments were passed.

This commit fixes the problem by making use of the eval trick within
the native-extended-gdbserver version of mi_gdb_start.  After this,
the FAIL listed at the top of this message is resolved.
2022-05-03 10:30:33 +01:00
bfd Automatic date update in version.in 2022-05-03 00:00:15 +00:00
binutils Emit a note warning the user that creating an executable stack because of a missing .note.GNU-stack section is deprecated. 2022-04-25 12:53:08 +01:00
config Add markers for 2.38 branch 2022-01-22 12:08:55 +00:00
contrib Import mklog.py from gcc repo 2020-09-25 10:24:44 -04:00
cpu opcodes: don't assume ELF in riscv, csky, rl78, mep disassemblers 2022-04-30 19:21:11 +09:30
elfcpp Add markers for 2.38 branch 2022-01-22 12:08:55 +00:00
etc Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gas x86: Disable 2 tests with large memory requirement 2022-04-27 11:51:35 -07:00
gdb gdb/testsuite: fix mi-exec-run.exp with native-extended-gdbserver board 2022-05-03 10:30:33 +01:00
gdbserver Fix libinproctrace.so build on PPC 2022-04-28 12:47:11 -06:00
gdbsupport gdbsupport/pathstuff.h: #include <array> explicitly for std::array<> 2022-04-25 17:06:09 -07:00
gnulib gnulib: update to bd11400942d6 2022-05-02 10:54:19 -04:00
gold Updated Serbian translations for the bfd, gold, ld and opcodes directories 2022-02-17 15:18:59 +00:00
gprof libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case 2022-03-25 12:02:35 +00:00
gprofng gprofng: assertion in gprofng/src/Expression.cc:139 2022-04-29 14:03:12 -07:00
include libctf: add a comment explaining how to use ctf_*open 2022-04-28 11:47:11 +01:00
intl Regenerate a couple of files 2021-11-15 12:20:12 +10:30
ld x86: Properly handle function pointer reference 2022-04-28 09:20:30 -07:00
libbacktrace libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case 2022-03-25 12:02:35 +00:00
libctf libctf: impose an ordering on conflicting types 2022-04-28 11:47:12 +01:00
libdecnumber Run autoreconf -vf throughout 2020-07-29 16:03:55 -04:00
libiberty gdb: rename floatformats_ia64_quad to floatformats_ieee_quad 2022-04-02 08:36:33 +08:00
opcodes opcodes: don't assume ELF in riscv, csky, rl78, mep disassemblers 2022-04-30 19:21:11 +09:30
readline readline: back-port changes needed to properly detect EOF 2022-04-22 18:46:04 +01:00
sim Fix for v850e divq instruction 2022-04-06 11:10:40 -04:00
texinfo
zlib Rebase the zlib sources to the 1.2.12 release 2022-04-12 16:24:10 +01:00
.cvsignore
.editorconfig Add top-level .editorconfig file 2022-01-28 08:25:42 -05:00
.gitattributes
.gitignore Add gnu global outputs to .gitignore 2020-12-02 10:00:27 -05:00
ar-lib
ChangeLog Rebase the zlib sources to the 1.2.12 release 2022-04-12 16:24:10 +01:00
compile
config-ml.in
config.guess Update the config.guess and config.sub files from the master repository and regenerate files. 2022-01-17 16:21:22 +00:00
config.rpath
config.sub Update the config.guess and config.sub files from the master repository and regenerate files. 2022-01-17 16:21:22 +00:00
configure Pass PKG_CONFIG_PATH down from top-level Makefile 2022-04-08 10:56:41 -04:00
configure.ac Pass PKG_CONFIG_PATH down from top-level Makefile 2022-04-08 10:56:41 -04:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4 libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case 2022-03-25 12:02:35 +00:00
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: Update path to readline config.{sub,guess} files 2021-05-24 18:11:49 +02:00
Makefile.def gprofng: a new GNU profiler 2022-03-11 08:58:31 +00:00
Makefile.in Pass PKG_CONFIG_PATH down from top-level Makefile 2022-04-08 10:56:41 -04:00
Makefile.tpl Pass PKG_CONFIG_PATH down from top-level Makefile 2022-04-08 10:56:41 -04:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
README-maintainer-mode
setup.com
src-release.sh gprofng: a new GNU profiler 2022-03-11 08:58:31 +00:00
symlink-tree
test-driver
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.