[gdb/testsuite] Add have_mpx in lib/gdb.exp
authorTom de Vries <tdevries@suse.de>
Tue, 12 Jan 2021 16:36:51 +0000 (17:36 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 12 Jan 2021 16:36:51 +0000 (17:36 +0100)
commit3f94e588596cdca710de71735127560788fd8770
tree6cb984ba9648946d0cf395aac2eb95879b58ce6a
parentb2f2ae0d6ff07e935f6ab23132f1fed02640d204
[gdb/testsuite] Add have_mpx in lib/gdb.exp

The sources for the test-cases gdb.arch/i386-mpx*.exp contain have_mpx
functions that test whether the processor supports mpx instructions.

OTOH, the test-cases are compiled using -mmpx -fcheck-pointer-bounds, which
instrument all functions with mpx instructions.

So, the function that is supposed to test whether mpx instruction are
supported contains mpx instructions, which is a bit odd.

We could fix this by:
- factoring out the have_mpx function into a single source file, and
- compiling it without "-mmpx -fcheck-pointer-bounds".

But having the mpx support test as part of the test-cases seems like an
unnecessary complication that makes the test-cases more difficult to analyze,
reason about and modify.

So we go one step further and factor out the mpx support test in into a
gdb_caching_proc.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2021-01-12  Tom de Vries  <tdevries@suse.de>

* gdb.arch/i386-mpx-call.c (have_mpx): Remove.
(main): Remove call to have_mpx.
* gdb.arch/i386-mpx-call.exp: Use have_mpx.
* gdb.arch/i386-mpx-map.c (have_mpx): Remove.
(main): Remote call to have_mpx.
* gdb.arch/i386-mpx-map.exp: Use have_mpx.
* gdb.arch/i386-mpx-sigsegv.c (have_mpx): Remove.
(main): Remove call to have_mpx.
* gdb.arch/i386-mpx-sigsegv.exp: Use have_mpx.
* gdb.arch/i386-mpx-simple_segv.c (have_mpx): Remove.
(main): Remove call to have_mpx.
* gdb.arch/i386-mpx-simple_segv.exp: Use have_mpx.
* gdb.arch/i386-mpx.c (have_mpx): Remove.
(main): Remote call to have_mpx.
* gdb.arch/i386-mpx.exp: Use have_mpx.
* lib/gdb.exp (have_mpx): New proc.
12 files changed:
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/i386-mpx-call.c
gdb/testsuite/gdb.arch/i386-mpx-call.exp
gdb/testsuite/gdb.arch/i386-mpx-map.c
gdb/testsuite/gdb.arch/i386-mpx-map.exp
gdb/testsuite/gdb.arch/i386-mpx-sigsegv.c
gdb/testsuite/gdb.arch/i386-mpx-sigsegv.exp
gdb/testsuite/gdb.arch/i386-mpx-simple_segv.c
gdb/testsuite/gdb.arch/i386-mpx-simple_segv.exp
gdb/testsuite/gdb.arch/i386-mpx.c
gdb/testsuite/gdb.arch/i386-mpx.exp
gdb/testsuite/lib/gdb.exp