KSelfTest arm64/signal/
=======================

Signals Tests
+++++++++++++

- Tests are built around a common main compilation unit: such shared main
  enforces a standard sequence of operations needed to perform a single
  signal-test (setup/trigger/run/result/cleanup)

- The above mentioned ops are configurable on a test-by-test basis: each test
  is described (and configured) using the descriptor signals.h::struct tdescr

- Each signal testcase is compiled into its own executable: a separate
  executable is used for each test since many tests complete successfully
  by receiving some kind of fatal signal from the Kernel, so it's safer
  to run each test unit in its own standalone process, so as to start each
  test from a clean slate.

- New tests can be simply defined in testcases/ dir providing a proper struct
  tdescr overriding all the defaults we wish to change (as of now providing a
  custom run method is mandatory though)

- Signals' test-cases hereafter defined belong currently to two
  principal families:

  - 'mangle_' tests: a real signal (SIGUSR1) is raised and used as a trigger
    and then the test case code modifies the signal frame from inside the
    signal handler itself.

  - 'fake_sigreturn_' tests: a brand new custom artificial sigframe structure
    is placed on the stack and a sigreturn syscall is called to simulate a
    real signal return. This kind of tests does not use a trigger usually and
    they are just fired using some simple included assembly trampoline code.

 - Most of these tests are successfully passing if the process gets killed by
   some fatal signal: usually SIGSEGV or SIGBUS. Since while writing this
   kind of tests it is extremely easy in fact to end-up injecting other
   unrelated SEGV bugs in the testcases, it becomes extremely tricky to
   be really sure that the tests are really addressing what they are meant
   to address and they are not instead falling apart due to unplanned bugs
   in the test code.
   In order to alleviate the misery of the life of such test-developer, a few
   helpers are provided:

   - a couple of ASSERT_BAD/GOOD_CONTEXT() macros to easily parse a ucontext_t
     and verify if it is indeed GOOD or BAD (depending on what we were
     expecting), using the same logic/perspective as in the arm64 Kernel signals
     routines.

   - a sanity mechanism to be used in 'fake_sigreturn_'-alike tests: enabled by
     default it takes care to verify that the test-execution had at least
     successfully progressed up to the stage of triggering the fake sigreturn
     call.

  In both cases test results are expected in terms of:
   - some fatal signal sent by the Kernel to the test process
  or
  - analyzing some final regs state
