4.2.1.37 The stack-realign test

  Problem:  Legacy i686 code is incompatible with SSE instructions
  Fix By:   Compile with -mstackrealign
  Waive If: The application is not going run in a 32-bit x86 environment
  Waive If: The application will not use SSE (or later) instructions

  Example:  FAIL: stack-realign test because -mstack-realign not enabled
  Example:  FAIL: stack-realign test because stack realign support is mandatory

On the Intel 32-bit i686 architecture most instructions work with 4-byte aligned addresses. The SSE extension (and later) however need 16-byte aligned addresses. This causes problems for data that is held on the stack, if the stack pointer is not aligned to a 16-byte address. The -mstackrealign gcc command line option tells the compiler to generate extra code at function entry which ensures that 16-byte alignment is maintained.

This test checks to make sure that this option has been used when compiling i686 binaries.

If necessary the test can be disabled via the --skip-stack-realign option and re-enabled via the --test-stack-realign option.