================ @@ -385,6 +385,49 @@ Users need to implement a single function to capture the CF table at startup: // the collected control flow. } +Tracing Stack Depth +=================== + +With ``-fsanitize-coverage=stack-depth`` the compiler will track how much +stack space has been used for a function call chain. Leaf functions are +not included in this tracing. + +The maximum depth of a function call graph is stored in the thread-local +``__sancov_lowest_stack`` variable. Instrumentation is inserted in every +non-leaf function to check the stack pointer against this variable, +and if it is lower, store the current stack pointer. This effectively +inserts the following: + +.. code-block:: c++ + + thread_local uintptr_t __sancov_lowest_stack; + + uintptr_t stack = (uintptr_t)__builtin_frame_address(0); + if (stack < __sancov_lowest_stack) + __sancov_lowest_stack = stack; + +If ``-fsanitize-coverage-stack-depth-callback-min=N`` is also used, the ---------------- melver wrote:
"If ``-fsanitize-coverage-stack-depth-callback-min=N`` (where ``N`` > 0) is also used ..." ? Because right now it's unclear what behaviour is supposed to be if N==0. Per current implementation N==0 disables this feature. https://github.com/llvm/llvm-project/pull/138323 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits