gdb.base/sigstep.exp: cleanup and make it easier to extend
authorPedro Alves <palves@redhat.com>
Tue, 28 Oct 2014 13:42:10 +0000 (13:42 +0000)
committerPedro Alves <palves@redhat.com>
Tue, 28 Oct 2014 15:34:00 +0000 (15:34 +0000)
commit1df4399f27f8ee817d8eb4c73bba42bb65844303
treee81d2975fd669a55293f97e56c4db41381007e72
parenta5b6e449e36bcdb162271707fa145f316053ebbc
gdb.base/sigstep.exp: cleanup and make it easier to extend

Hacking on sigstep.exp, I found it harder to understand and extend
than ideal.

 - GDB is currently not restarted between the different
   tests/combinations in the file, and some parts of the tests' setup
   are done on the top level, and shared between tests.  It's not
   trivial to understand which breakpoints each test procedure expects
   to be set or not set.  And it's not trivial to disable parts of the
   test if you want quickly try out just a subset of the tests
   (running the whole file takes a bit).

 - Because GDB is currently not restarted between tests, if some test
   triggers a ptrace/kernel bug, the following tests may end up with
   cascading fails.  That makes it hard to add a test to cover a
   kernel bug that isn't fixed yet, with a xfail/kfail.  E.g,. note
   how with kernels with bug gdb/8744 (stepi over sigreturn syscall
   exits program) the test program exits, and nothing restarts it
   afterwards...

 - The manual test message prefix management gets a bit in the way.
   Nowadays, we have with_test_prefix which makes it simpler.

 - 'i' is used as parameter name in the various procedures, meaning
   'the command the test', which isn't as obvious as it could.

This commit addresses all that.

gdb/testsuite/
2014-10-28  Pedro Alves  <palves@redhat.com>

* gdb.base/sigstep.exp: Use build_executable instead of
prepare_for_testing.
(top level): Move code that starts GDB, runs to main and creates a
display to ...
(restart): ... this new procedure.
(top level): Move backtrace from signal handler test to ...
(validate_backtrace): ... this new procedure.
(advance, advancei): Rename parameter from 'i' to 'cmd'.  Use
with_test_prefix.  Always restart GDB.
(skip_to_handler): Rename parameter from 'i' to 'cmd'.  Use
with_test_prefix.  Always restart GDB.  No need to delete
breakpoints after the test.
(test_skip_handler): Remove prefix parameter.
(skip_over_handler, breakpoint_to_handler)
(breakpoint_to_handler_entry, breakpoint_over_handler): Rename
parameter from 'i' to 'cmd'.  Use with_test_prefix.  Always
restart GDB.  No need to delete breakpoints after the test.
(top level): Use foreach to call the test procedures with
different commands.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/sigstep.exp