[libc-commits] [libc] [libc] Enabling code coverage via Linux syscalls (PR #213271)
Petr Hosek via libc-commits
libc-commits at lists.llvm.org
Mon Aug 31 21:09:01 PDT 2026
================
@@ -91,6 +91,33 @@ endif()
set(LIBC_LINK_OPTIONS_DEFAULT "" CACHE STRING "Arguments used when linking.")
set(LIBC_TEST_LINK_OPTIONS_DEFAULT "" CACHE STRING "Common link options for all the tests.")
+option(LIBC_ENABLE_COVERAGE "Build libc with coverage instrumentation" OFF)
+if(LIBC_ENABLE_COVERAGE)
+ add_compile_definitions(LIBC_ENABLE_COVERAGE)
+ list(APPEND LIBC_COMPILE_OPTIONS_DEFAULT "-fprofile-instr-generate" "-fcoverage-mapping")
+ list(APPEND LIBC_TEST_COMPILE_OPTIONS_DEFAULT "-fprofile-instr-generate" "-fcoverage-mapping")
+ list(APPEND LIBC_TEST_LINK_OPTIONS_DEFAULT "-fprofile-instr-generate" "-fcoverage-mapping")
+
+ # When building with -nostdlib, the compiler does not automatically link the profiling runtime.
+ # We must explicitly query the compiler for the exact architecture-specific profile library path.
+ execute_process(
+ COMMAND ${CMAKE_CXX_COMPILER} --print-libgcc-file-name --rtlib=compiler-rt
----------------
petrhosek wrote:
`--rtlib=` is only recognized by Clang so you should check that `CMAKE_CXX_COMPILER` is Clang first.
https://github.com/llvm/llvm-project/pull/213271
More information about the libc-commits
mailing list