zephyr/tests/kernel/test_multilib
Paul Sokolovsky 824fd85b1c tests/kernel/test_multilib: Test for proper multilib selection.
This test is prompted by incorrect multilib selection for Cortex-M4
(armv7e-m subarchitecture) in Zephyr SDK 0.8.1 toolchain. The idea
is do an operation which guaranteedly results in a call to a support
routine in libgcc, which is part of multilib set. Long long division
is used as such, with a fault produced (see README) when built for
BOARD=frdm_k64f.

This test now passed with SDK 0.8.2 for frdm_k64f, but is added in
the hope of preventing/easing diagnosis of future regressions.

Change-Id: I07f01b0e70921703fc0d261fc6c48a2b13b29873
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2016-09-19 13:58:11 +03:00
..
src tests/kernel/test_multilib: Test for proper multilib selection. 2016-09-19 13:58:11 +03:00
Makefile tests/kernel/test_multilib: Test for proper multilib selection. 2016-09-19 13:58:11 +03:00
README.txt tests/kernel/test_multilib: Test for proper multilib selection. 2016-09-19 13:58:11 +03:00
prj.conf tests/kernel/test_multilib: Test for proper multilib selection. 2016-09-19 13:58:11 +03:00
testcase.ini tests/kernel/test_multilib: Test for proper multilib selection. 2016-09-19 13:58:11 +03:00

README.txt

Title: Test multilib

Description:

Some architectures support different ISA variants, each backed a different
multilib in a same compiler. Selecting wrong multilib may have adverse
effects on performance, or sometime produce broken executables altogether
(for example, ARM Cortex-M requires thumb2 multilib and will be broken with
default ("arm") multilib or "thumb" multlib). This app is a smoke-test
for selecting non-wrong multilib - it uses operation(s) which guaranteedly
will call support routine(s) in libgcc and checks for expected result.

--------------------------------------------------------------------------------

Building and Running Project:

This nanokernel project outputs to the console.  It can be built and executed
on QEMU as follows:

    make qemu

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample output:

===================================================================
PASS - main.
===================================================================
PROJECT EXECUTION SUCCESSFUL

Sample failure output ("thumb" used on Cortex-M instead of "thumb2"):

***** USAGE FAULT *****
  Executing thread ID (thread): 0x200002a0
  Faulting instruction address:  0x00000000
  Illegal use of the EPSR
Fatal fault in essential task ! Spinning...