Commit 095132d6 authored by Michael Achenbach's avatar Michael Achenbach Committed by Commit Bot

[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/549360Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46254}
parent bb786d61
...@@ -21,9 +21,6 @@ declare_args() { ...@@ -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") { ...@@ -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.
if (v8_code_coverage) {
assert(!is_clang)
cflags = [ cflags = [
"-fprofile-arcs", "-fprofile-arcs",
"-ftest-coverage", "-ftest-coverage",
] ]
}
} }
config("v8_code_coverage_ldflags") { config("v8_gcov_coverage_ldflags") {
# Make sure we're using gcc toolchain.
if (v8_code_coverage) {
assert(!is_clang)
ldflags = [ "-fprofile-arcs" ] ldflags = [ "-fprofile-arcs" ]
}
} }
############################################################################### ###############################################################################
......
...@@ -56,6 +56,11 @@ template("v8_isolate_run") { ...@@ -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") { ...@@ -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",
......
...@@ -7,6 +7,10 @@ import("//build/config/v8_target_cpu.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 = [] ...@@ -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) { ...@@ -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") { ...@@ -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") { ...@@ -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") { ...@@ -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") { ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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'],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment