gdb: Fix testsuite issue in gdb.arch/amd64-disp-step-avx.exp
authorAndrew Burgess <andrew.burgess@embecosm.com>
Mon, 19 Mar 2018 00:33:50 +0000 (00:33 +0000)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Fri, 23 Mar 2018 11:55:02 +0000 (11:55 +0000)
commit376be529a7c99a70050bc48c51d891f1bea9777f
tree6de482408ac490a39345d909f34d04d75a3e4540
parent066cfa988ddf88ad32b7a114f2e984a13a3848c8
gdb: Fix testsuite issue in gdb.arch/amd64-disp-step-avx.exp

This test starts up and confirms that $xmm0 has the value 0, it then
modifies $xmm0 (in the inferior) and confirms that the new value can
be read (in GDB).

On some machines I was noticing that this test would occasionally
fail, and on investigation I believe that the reason for this is that
the test is linked as a dynamically linked executable and makes use of
the system libraries during startup.  The reason that this causes
problems is that both the runtime linker and the startup code run
before main can, and do (on at least some platforms) make use of the
XMM registers.

In this commit I modify the test program slightly to allow it to be
linked statically, without using the startup libraries.  Now by the
time GDB reaches the symbol main we have only executed one 'nop'
instruction, and the XMM registers should all have the value 0.  I've
extended the test script to confirm that $xmm0 to $xmm15 are all
initially 0, and I also check that at the point after $xmm0 has been
modified, all the other XMM registers ($xmm1 to $xmm15) are still 0.

The test program is still linked against libc in order that we can
call the exit function, however, we now call _exit rather than exit in
order to avoid all of the usual cleanup that exit does.  This clean up
tries to tear down things that are usually setup during the startup
code, but now this isn't called calling exit will just result in a
crash.

gdb/testsuite/ChangeLog:

* gdb.arch/amd64-disp-step-avx.S: Add '_start' label.
(done): Call '_exit' not 'exit' to avoid atexit handlers.
* gdb.arch/amd64-disp-step-avx.exp: Pass -static, and
-nostartfiles when compiling the test.  Confirm that all registers
xmm0 to xmm15 are initially 0, and that xmm1 to xmm15 are 0 after.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/amd64-disp-step-avx.S
gdb/testsuite/gdb.arch/amd64-disp-step-avx.exp