[make] Force correct frame pointers for sancov

Accurate LLVM coverage instrumentation with trace-pc-guard requires
being able to correctly find a function's caller. With sibling call
optimization, calls at the end of a function are turned into a direct
branch to the sibling function, which causes the builtin returning our
caller in the instrumentation to return the wrong caller.

Disable sibling call optimization when building with coverage
instrumentation.

Bug: 175221942
Test: USER_COVERAGE_ENABLED=true build.py qemu-generic-arm64-fuzz-test-debug
Change-Id: I596ee3565a95d288f2633042ded9573ce0583915
1 file changed
tree: 35b6ec264579a42c601a3d4794be4be7db4a6604
  1. .clang-format
  2. .gitignore
  3. LICENSE
  4. README.md
  5. app/
  6. arch/
  7. build-config-kerneltests
  8. dev/
  9. engine.mk
  10. external/
  11. hosttests/
  12. include/
  13. kernel/
  14. kerneltests-inc.mk
  15. lib/
  16. lk_inc.mk.example
  17. make/
  18. makefile
  19. platform/
  20. target/
  21. tools/
  22. top/
README.md

LK

The LK embedded kernel. An SMP-aware kernel designed for small systems.

See https://github.com/littlekernel/lk for the latest version.

See https://github.com/littlekernel/lk/wiki for documentation.

Builds

Build Status

To build and test for ARM on linux

  1. install or build qemu. v2.4 and above is recommended.
  2. install gcc for embedded arm (see note 1)
  3. run scripts/do-qemuarm (from the lk directory)
  4. you should see ‘welcome to lk/MP’

This will get you a interactive prompt into LK which is running in qemu arm machine ‘virt’ emulation. type ‘help’ for commands.

note 1: for ubuntu: sudo apt-get install gcc-arm-none-eabi or fetch a prebuilt toolchain from http://newos.org/toolchains/arm-eabi-5.3.0-Linux-x86_64.tar.xz