| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/compiler/compiler.gni") |
| import("//build/config/compiler/pgo/pgo.gni") |
| |
| declare_args() { |
| # Whether to compile support for Allocation Stack Trace Recorder. |
| # |
| # The recorder is initially intended as a support tool for Arm's |
| # Memory Tagging Extensions. A history of the most recent allocations and |
| # frees is included in the crashpad report and gives developers information |
| # where the memory which was invalidly accessed was allocated or freed. |
| # |
| # Although it should work on other platforms as well, for the above reasons, |
| # we currently enable it only for Android when compiling for Arm64. |
| build_allocation_stack_trace_recorder = current_cpu == "arm64" && is_android |
| } |
| |
| declare_args() { |
| # If enabled, the recorder gathers some additional information, i.e. number of |
| # collisions of slots, and prints these periodically. |
| # |
| # Since this might impact performance negatively, it's disabled by default. |
| # Even if it's disabled we still collect some data, i.e. total number of |
| # allocations. All other data will be set to a default value. |
| build_allocation_trace_recorder_full_reporting = false |
| } |
| |
| declare_args() { |
| # If enabled, clang produces an extremely verbose amount of warnings about |
| # places in the code where CHECKS() (typically performance-sensitive bounds |
| # checks) could not be elided by the optimizer. Useful for hunting down a |
| # performance-regression when moving to safer types. |
| enable_check_elision_warning = false |
| } |
| |
| assert(!(build_allocation_stack_trace_recorder && is_fuchsia), |
| "Stack trace recording is not supported on Fuchsia due to missing" + |
| " Crashpad!") |
| |
| assert(!(build_allocation_stack_trace_recorder && is_linux), |
| "WARNING: Stack trace recording is not supported on Linux due to" + |
| " performance issues computing stack trace!") |
| |
| assert( |
| build_allocation_stack_trace_recorder || |
| !build_allocation_trace_recorder_full_reporting, |
| "Report for stack trace recorder is enabled, but the recorder is disabled!") |
| |
| assert(!enable_check_elision_warning || !is_debug, |
| "Check elision warning requires an optimized build!") |