[build] Switch sanitizer coverage bot to gn
This adds GN configs for using sanitizer coverage and refactors gcov configs. Now, both coverage kinds are behind the same gn argument v8_code_coverage. This also switches the bot to GN. Bug: chromium:645890,v8:5502 Change-Id: I3af606e0cad109dd790a121d0d92e53cf4e38f9a Reviewed-on: https://chromium-review.googlesource.com/549360 Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#46254}
This commit is contained in:
parent
bb786d61b4
commit
095132d67a
25
BUILD.gn
25
BUILD.gn
@ -21,9 +21,6 @@ declare_args() {
|
|||||||
# Print to stdout on Android.
|
# Print to stdout on Android.
|
||||||
v8_android_log_stdout = false
|
v8_android_log_stdout = false
|
||||||
|
|
||||||
# Set flags for tracking code coverage with gcov. Requires is_clang=false.
|
|
||||||
v8_code_coverage = false
|
|
||||||
|
|
||||||
# Sets -DV8_ENABLE_FUTURE.
|
# Sets -DV8_ENABLE_FUTURE.
|
||||||
v8_enable_future = false
|
v8_enable_future = false
|
||||||
|
|
||||||
@ -513,23 +510,15 @@ config("toolchain") {
|
|||||||
|
|
||||||
# Configs for code coverage with gcov. Separate configs for cflags and ldflags
|
# Configs for code coverage with gcov. Separate configs for cflags and ldflags
|
||||||
# to selectively influde cflags in non-test targets only.
|
# to selectively influde cflags in non-test targets only.
|
||||||
config("v8_code_coverage_cflags") {
|
config("v8_gcov_coverage_cflags") {
|
||||||
# Make sure we're using gcc toolchain.
|
cflags = [
|
||||||
if (v8_code_coverage) {
|
"-fprofile-arcs",
|
||||||
assert(!is_clang)
|
"-ftest-coverage",
|
||||||
cflags = [
|
]
|
||||||
"-fprofile-arcs",
|
|
||||||
"-ftest-coverage",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
config("v8_code_coverage_ldflags") {
|
config("v8_gcov_coverage_ldflags") {
|
||||||
# Make sure we're using gcc toolchain.
|
ldflags = [ "-fprofile-arcs" ]
|
||||||
if (v8_code_coverage) {
|
|
||||||
assert(!is_clang)
|
|
||||||
ldflags = [ "-fprofile-arcs" ]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -56,6 +56,11 @@ template("v8_isolate_run") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Translate gn to gyp variables.
|
# Translate gn to gyp variables.
|
||||||
|
if (v8_code_coverage) {
|
||||||
|
coverage = "1"
|
||||||
|
} else {
|
||||||
|
coverage = "0"
|
||||||
|
}
|
||||||
if (is_asan) {
|
if (is_asan) {
|
||||||
asan = "1"
|
asan = "1"
|
||||||
} else {
|
} else {
|
||||||
@ -157,9 +162,9 @@ template("v8_isolate_run") {
|
|||||||
"--config-variable",
|
"--config-variable",
|
||||||
"tsan=$tsan",
|
"tsan=$tsan",
|
||||||
"--config-variable",
|
"--config-variable",
|
||||||
"coverage=0",
|
"coverage=$coverage",
|
||||||
"--config-variable",
|
"--config-variable",
|
||||||
"sanitizer_coverage=0",
|
"sanitizer_coverage=$sanitizer_coverage_flags",
|
||||||
"--config-variable",
|
"--config-variable",
|
||||||
"component=$component",
|
"component=$component",
|
||||||
"--config-variable",
|
"--config-variable",
|
||||||
|
24
gni/v8.gni
24
gni/v8.gni
@ -7,6 +7,10 @@ import("//build/config/v8_target_cpu.gni")
|
|||||||
import("//build/split_static_library.gni")
|
import("//build/split_static_library.gni")
|
||||||
|
|
||||||
declare_args() {
|
declare_args() {
|
||||||
|
# Set flags for tracking code coverage. Uses gcov with gcc and sanitizer
|
||||||
|
# coverage with clang.
|
||||||
|
v8_code_coverage = false
|
||||||
|
|
||||||
# Includes files needed for correctness fuzzing.
|
# Includes files needed for correctness fuzzing.
|
||||||
v8_correctness_fuzzer = false
|
v8_correctness_fuzzer = false
|
||||||
|
|
||||||
@ -68,7 +72,6 @@ v8_remove_configs = []
|
|||||||
v8_add_configs = [
|
v8_add_configs = [
|
||||||
v8_path_prefix + ":features",
|
v8_path_prefix + ":features",
|
||||||
v8_path_prefix + ":toolchain",
|
v8_path_prefix + ":toolchain",
|
||||||
v8_path_prefix + ":v8_code_coverage_ldflags",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
if (is_debug && !v8_optimized_debug) {
|
if (is_debug && !v8_optimized_debug) {
|
||||||
@ -86,6 +89,13 @@ if (is_debug && !v8_optimized_debug) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (v8_code_coverage && !is_clang) {
|
||||||
|
v8_add_configs += [
|
||||||
|
v8_path_prefix + ":v8_gcov_coverage_cflags",
|
||||||
|
v8_path_prefix + ":v8_gcov_coverage_ldflags",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
if (is_posix && v8_enable_backtrace) {
|
if (is_posix && v8_enable_backtrace) {
|
||||||
v8_remove_configs += [ "//build/config/gcc:symbol_visibility_hidden" ]
|
v8_remove_configs += [ "//build/config/gcc:symbol_visibility_hidden" ]
|
||||||
v8_add_configs += [ "//build/config/gcc:symbol_visibility_default" ]
|
v8_add_configs += [ "//build/config/gcc:symbol_visibility_default" ]
|
||||||
@ -106,7 +116,6 @@ template("v8_source_set") {
|
|||||||
configs += invoker.configs
|
configs += invoker.configs
|
||||||
configs -= v8_remove_configs
|
configs -= v8_remove_configs
|
||||||
configs += v8_add_configs
|
configs += v8_add_configs
|
||||||
configs += [ v8_path_prefix + ":v8_code_coverage_cflags" ]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,7 +125,6 @@ template("v8_header_set") {
|
|||||||
configs += invoker.configs
|
configs += invoker.configs
|
||||||
configs -= v8_remove_configs
|
configs -= v8_remove_configs
|
||||||
configs += v8_add_configs
|
configs += v8_add_configs
|
||||||
configs += [ v8_path_prefix + ":v8_code_coverage_cflags" ]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,10 +146,15 @@ template("v8_executable") {
|
|||||||
# For enabling ASLR.
|
# For enabling ASLR.
|
||||||
ldflags = [ "-pie" ]
|
ldflags = [ "-pie" ]
|
||||||
}
|
}
|
||||||
if (!defined(testonly) || !testonly) {
|
if (defined(testonly) && testonly && v8_code_coverage) {
|
||||||
# Only add code coverage cflags for non-test files for performance
|
# Only add code coverage cflags for non-test files for performance
|
||||||
# reasons.
|
# reasons.
|
||||||
configs += [ v8_path_prefix + ":v8_code_coverage_cflags" ]
|
if (is_clang) {
|
||||||
|
configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ]
|
||||||
|
configs += [ "//build/config/sanitizers:default_sanitizer_flags_but_coverage" ]
|
||||||
|
} else {
|
||||||
|
configs -= [ v8_path_prefix + ":v8_gcov_coverage_cflags" ]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,6 +165,5 @@ template("v8_component") {
|
|||||||
configs += invoker.configs
|
configs += invoker.configs
|
||||||
configs -= v8_remove_configs
|
configs -= v8_remove_configs
|
||||||
configs += v8_add_configs
|
configs += v8_add_configs
|
||||||
configs += [ v8_path_prefix + ":v8_code_coverage_cflags" ]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@
|
|||||||
'v8_linux64_asan_rel_ng': 'gn_release_x64_asan_minimal_symbols',
|
'v8_linux64_asan_rel_ng': 'gn_release_x64_asan_minimal_symbols',
|
||||||
'v8_linux64_msan_rel': 'gn_release_simulate_arm64_msan_minimal_symbols',
|
'v8_linux64_msan_rel': 'gn_release_simulate_arm64_msan_minimal_symbols',
|
||||||
'v8_linux64_sanitizer_coverage_rel':
|
'v8_linux64_sanitizer_coverage_rel':
|
||||||
'gyp_release_x64_asan_minimal_symbols_coverage',
|
'gn_release_x64_asan_minimal_symbols_coverage',
|
||||||
'v8_linux64_tsan_rel': 'gn_release_x64_tsan_minimal_symbols',
|
'v8_linux64_tsan_rel': 'gn_release_x64_tsan_minimal_symbols',
|
||||||
'v8_linux64_tsan_concurrent_marking_rel_ng':
|
'v8_linux64_tsan_concurrent_marking_rel_ng':
|
||||||
'gn_release_x64_tsan_concurrent_marking_minimal_symbols',
|
'gn_release_x64_tsan_concurrent_marking_minimal_symbols',
|
||||||
@ -368,6 +368,9 @@
|
|||||||
'gn_release_x64_asan_minimal_symbols': [
|
'gn_release_x64_asan_minimal_symbols': [
|
||||||
'gn', 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols',
|
'gn', 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols',
|
||||||
'swarming'],
|
'swarming'],
|
||||||
|
'gn_release_x64_asan_minimal_symbols_coverage': [
|
||||||
|
'gn', 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan',
|
||||||
|
'minimal_symbols', 'swarming'],
|
||||||
'gn_release_x64_asan_no_lsan': [
|
'gn_release_x64_asan_no_lsan': [
|
||||||
'gn', 'release_bot', 'x64', 'asan', 'swarming'],
|
'gn', 'release_bot', 'x64', 'asan', 'swarming'],
|
||||||
'gn_release_x64_asan_symbolized_edge_verify_heap': [
|
'gn_release_x64_asan_symbolized_edge_verify_heap': [
|
||||||
@ -496,9 +499,6 @@
|
|||||||
# Gyp release configs for x64.
|
# Gyp release configs for x64.
|
||||||
'gyp_release_x64': [
|
'gyp_release_x64': [
|
||||||
'gyp', 'release_bot', 'x64', 'swarming'],
|
'gyp', 'release_bot', 'x64', 'swarming'],
|
||||||
'gyp_release_x64_asan_minimal_symbols_coverage': [
|
|
||||||
'gyp', 'release_bot', 'x64', 'asan', 'bb', 'coverage', 'lsan',
|
|
||||||
'minimal_symbols', 'swarming'],
|
|
||||||
'gyp_release_x64_gcc_coverage': [
|
'gyp_release_x64_gcc_coverage': [
|
||||||
'gyp', 'release_bot', 'x64', 'coverage', 'gcc'],
|
'gyp', 'release_bot', 'x64', 'coverage', 'gcc'],
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user