mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-14 12:53:34 +08:00
e309aa6524
Exercising aarch64-elf with a custom debug stub i noticed a few failures in both gdb.base/breakpoint-in-ro-region.exp and gdb.base/memattr.exp: FAIL: gdb.base/breakpoint-in-ro-region.exp: create read-only mem region covering main FAIL: gdb.base/breakpoint-in-ro-region.exp: writing to read-only memory fails FAIL: gdb.base/breakpoint-in-ro-region.exp: inserting software breakpoint in read-only memory fails FAIL: gdb.base/memattr.exp: create mem region 1 FAIL: gdb.base/memattr.exp: create mem region 2 FAIL: gdb.base/memattr.exp: create mem region 3 FAIL: gdb.base/memattr.exp: create mem region 4 FAIL: gdb.base/memattr.exp: create mem region 5 FAIL: gdb.base/memattr.exp: info mem (1) FAIL: gdb.base/memattr.exp: mem1 cannot be read FAIL: gdb.base/memattr.exp: mem2 cannot be written FAIL: gdb.base/memattr.exp: mem2 can be read FAIL: gdb.base/memattr.exp: disable mem 1 FAIL: gdb.base/memattr.exp: mem 1 was disabled FAIL: gdb.base/memattr.exp: enable mem 1 FAIL: gdb.base/memattr.exp: mem 1 was enabled FAIL: gdb.base/memattr.exp: disable mem 2 4 FAIL: gdb.base/memattr.exp: mem 2 and 4 were disabled FAIL: gdb.base/memattr.exp: enable mem 2-4 FAIL: gdb.base/memattr.exp: mem 2-4 were enabled FAIL: gdb.base/memattr.exp: mem 1 to 5 were disabled FAIL: gdb.base/memattr.exp: mem 1 to 5 were enabled FAIL: gdb.base/memattr.exp: delete mem 1 FAIL: gdb.base/memattr.exp: mem 1 was deleted FAIL: gdb.base/memattr.exp: delete mem 2 4 FAIL: gdb.base/memattr.exp: mem 2 and 4 were deleted FAIL: gdb.base/memattr.exp: mem 2-4 were deleted These failures don't show up with gdbserver or native gdb on Linux because they don't export any memory maps, therefore the vector of memory regions is empty. Outside of that scenario, we can't guarantee the absence of memory regions reported by the target upon a connection. In our particular target, we provide a memory map and the memory regions vector ceases to be empty. With a non-empty memory regions vector, manipulating memory regions will cause gdb to be more verbose and output text. For example: memattr.c:require_user_regions /* Otherwise, let the user know how to get back. */ if (from_tty) warning (_("Switching to manual control of memory regions; use " "\"mem auto\" to fetch regions from the target again.")); memattr.c:create_mem_region if ((lo >= n->lo && (lo < n->hi || n->hi == 0)) || (hi > n->lo && (hi <= n->hi || n->hi == 0)) || (lo <= n->lo && ((hi >= n->hi && n->hi != 0) || hi == 0))) { printf_unfiltered (_("overlapping memory region\n")); return; } In my particular case i got both of the above messages. In order to fix this, i've moved the delete_memory proc from gdb.base/memattr.exp to a new file lib/memory.exp and made lib/gdb.exp load that file. For both gdb.base/breakpoint-in-ro-region.exp and gdb.base/memattr.exp the patch clears all existing memory regions after running to main. That way we are guaranteed to have a clean state for memory regions so the tests can exercise whatever they want and have an expected output pattern. Regression checked on x86-64/Ubuntu 16.04. gdb/testsuite/ChangeLog: 2017-01-26 Luis Machado <lgustavo@codesourcery.com> * lib/memory.exp: New file. * lib/gdb.exp: Load memory.exp. * gdb.base/memattr.exp (delete_memory): Move proc to lib/memory.exp and rename to delete_memory_regions. Replace delete_memory with delete_memory_regions. Cleanup memory regions before tests. * gdb.base/breakpoint-in-ro-region.exp: Cleanup memory regions before tests. |
||
---|---|---|
bfd | ||
binutils | ||
config | ||
cpu | ||
elfcpp | ||
etc | ||
gas | ||
gdb | ||
gold | ||
gprof | ||
include | ||
intl | ||
ld | ||
libdecnumber | ||
libiberty | ||
opcodes | ||
readline | ||
sim | ||
texinfo | ||
zlib | ||
.cvsignore | ||
.gitattributes | ||
.gitignore | ||
ChangeLog | ||
compile | ||
config-ml.in | ||
config.guess | ||
config.rpath | ||
config.sub | ||
configure | ||
configure.ac | ||
COPYING | ||
COPYING3 | ||
COPYING3.LIB | ||
COPYING.LIB | ||
COPYING.LIBGLOSS | ||
COPYING.NEWLIB | ||
depcomp | ||
djunpack.bat | ||
install-sh | ||
libtool.m4 | ||
lt~obsolete.m4 | ||
ltgcc.m4 | ||
ltmain.sh | ||
ltoptions.m4 | ||
ltsugar.m4 | ||
ltversion.m4 | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
makefile.vms | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
README | ||
README-maintainer-mode | ||
setup.com | ||
src-release.sh | ||
symlink-tree | ||
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.