Export sanitizer vars for use in Bazel
Bug: 265154269 Test: Unit tests Change-Id: I46584159264476d76079e396c6ec294fb394acff
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/cc"
|
||||
cc_config "android/soong/cc/config"
|
||||
java_config "android/soong/java/config"
|
||||
|
||||
@@ -28,7 +29,8 @@ func soongInjectionFiles(cfg android.Config, metrics CodegenMetrics) []BazelFile
|
||||
files = append(files, newFile("android", "constants.bzl", android.BazelCcToolchainVars(cfg)))
|
||||
|
||||
files = append(files, newFile("cc_toolchain", GeneratedBuildFileName, "")) // Creates a //cc_toolchain package.
|
||||
files = append(files, newFile("cc_toolchain", "constants.bzl", cc_config.BazelCcToolchainVars(cfg)))
|
||||
files = append(files, newFile("cc_toolchain", "config_constants.bzl", cc_config.BazelCcToolchainVars(cfg)))
|
||||
files = append(files, newFile("cc_toolchain", "sanitizer_constants.bzl", cc.BazelCcSanitizerToolchainVars(cfg)))
|
||||
|
||||
files = append(files, newFile("java_toolchain", GeneratedBuildFileName, "")) // Creates a //java_toolchain package.
|
||||
files = append(files, newFile("java_toolchain", "constants.bzl", java_config.BazelJavaToolchainVars(cfg)))
|
||||
|
@@ -101,7 +101,11 @@ func TestCreateBazelFiles_Bp2Build_CreatesDefaultFiles(t *testing.T) {
|
||||
},
|
||||
{
|
||||
dir: "cc_toolchain",
|
||||
basename: "constants.bzl",
|
||||
basename: "config_constants.bzl",
|
||||
},
|
||||
{
|
||||
dir: "cc_toolchain",
|
||||
basename: "sanitizer_constants.bzl",
|
||||
},
|
||||
{
|
||||
dir: "java_toolchain",
|
||||
|
@@ -78,6 +78,9 @@ var (
|
||||
hwasanGlobalOptions = []string{"heap_history_size=1023", "stack_history_size=512",
|
||||
"export_memory_stats=0", "max_malloc_fill_size=4096", "malloc_fill_byte=0"}
|
||||
memtagStackCommonFlags = []string{"-march=armv8-a+memtag"}
|
||||
|
||||
hostOnlySanitizeFlags = []string{"-fno-sanitize-recover=all"}
|
||||
deviceOnlySanitizeFlags = []string{"-fsanitize-trap=all", "-ftrap-function=abort"}
|
||||
)
|
||||
|
||||
type SanitizerType int
|
||||
@@ -379,7 +382,12 @@ func (t libraryDependencyTag) SkipApexAllowedDependenciesCheck() bool {
|
||||
|
||||
var _ android.SkipApexAllowedDependenciesCheck = (*libraryDependencyTag)(nil)
|
||||
|
||||
var exportedVars = android.NewExportedVariables(pctx)
|
||||
|
||||
func init() {
|
||||
exportedVars.ExportStringListStaticVariable("HostOnlySanitizeFlags", hostOnlySanitizeFlags)
|
||||
exportedVars.ExportStringList("DeviceOnlySanitizeFlags", deviceOnlySanitizeFlags)
|
||||
|
||||
android.RegisterMakeVarsProvider(pctx, cfiMakeVarsProvider)
|
||||
android.RegisterMakeVarsProvider(pctx, hwasanMakeVarsProvider)
|
||||
}
|
||||
@@ -869,9 +877,9 @@ func (s *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
|
||||
// When fuzzing, we wish to crash with diagnostics on any bug.
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize-trap=all", "-fno-sanitize-recover=all")
|
||||
} else if ctx.Host() {
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize-recover=all")
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, hostOnlySanitizeFlags...)
|
||||
} else {
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, "-fsanitize-trap=all", "-ftrap-function=abort")
|
||||
flags.Local.CFlags = append(flags.Local.CFlags, deviceOnlySanitizeFlags...)
|
||||
}
|
||||
|
||||
if enableMinimalRuntime(s) {
|
||||
@@ -1787,3 +1795,7 @@ func cfiMakeVarsProvider(ctx android.MakeVarsContext) {
|
||||
func hwasanMakeVarsProvider(ctx android.MakeVarsContext) {
|
||||
hwasanStaticLibs(ctx.Config()).exportToMake(ctx)
|
||||
}
|
||||
|
||||
func BazelCcSanitizerToolchainVars(config android.Config) string {
|
||||
return android.BazelToolchainVars(config, exportedVars)
|
||||
}
|
||||
|
Reference in New Issue
Block a user