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"
|
"strings"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
|
"android/soong/cc"
|
||||||
cc_config "android/soong/cc/config"
|
cc_config "android/soong/cc/config"
|
||||||
java_config "android/soong/java/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("android", "constants.bzl", android.BazelCcToolchainVars(cfg)))
|
||||||
|
|
||||||
files = append(files, newFile("cc_toolchain", GeneratedBuildFileName, "")) // Creates a //cc_toolchain package.
|
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", GeneratedBuildFileName, "")) // Creates a //java_toolchain package.
|
||||||
files = append(files, newFile("java_toolchain", "constants.bzl", java_config.BazelJavaToolchainVars(cfg)))
|
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",
|
dir: "cc_toolchain",
|
||||||
basename: "constants.bzl",
|
basename: "config_constants.bzl",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dir: "cc_toolchain",
|
||||||
|
basename: "sanitizer_constants.bzl",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dir: "java_toolchain",
|
dir: "java_toolchain",
|
||||||
|
@@ -78,6 +78,9 @@ var (
|
|||||||
hwasanGlobalOptions = []string{"heap_history_size=1023", "stack_history_size=512",
|
hwasanGlobalOptions = []string{"heap_history_size=1023", "stack_history_size=512",
|
||||||
"export_memory_stats=0", "max_malloc_fill_size=4096", "malloc_fill_byte=0"}
|
"export_memory_stats=0", "max_malloc_fill_size=4096", "malloc_fill_byte=0"}
|
||||||
memtagStackCommonFlags = []string{"-march=armv8-a+memtag"}
|
memtagStackCommonFlags = []string{"-march=armv8-a+memtag"}
|
||||||
|
|
||||||
|
hostOnlySanitizeFlags = []string{"-fno-sanitize-recover=all"}
|
||||||
|
deviceOnlySanitizeFlags = []string{"-fsanitize-trap=all", "-ftrap-function=abort"}
|
||||||
)
|
)
|
||||||
|
|
||||||
type SanitizerType int
|
type SanitizerType int
|
||||||
@@ -379,7 +382,12 @@ func (t libraryDependencyTag) SkipApexAllowedDependenciesCheck() bool {
|
|||||||
|
|
||||||
var _ android.SkipApexAllowedDependenciesCheck = (*libraryDependencyTag)(nil)
|
var _ android.SkipApexAllowedDependenciesCheck = (*libraryDependencyTag)(nil)
|
||||||
|
|
||||||
|
var exportedVars = android.NewExportedVariables(pctx)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
exportedVars.ExportStringListStaticVariable("HostOnlySanitizeFlags", hostOnlySanitizeFlags)
|
||||||
|
exportedVars.ExportStringList("DeviceOnlySanitizeFlags", deviceOnlySanitizeFlags)
|
||||||
|
|
||||||
android.RegisterMakeVarsProvider(pctx, cfiMakeVarsProvider)
|
android.RegisterMakeVarsProvider(pctx, cfiMakeVarsProvider)
|
||||||
android.RegisterMakeVarsProvider(pctx, hwasanMakeVarsProvider)
|
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.
|
// 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")
|
flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize-trap=all", "-fno-sanitize-recover=all")
|
||||||
} else if ctx.Host() {
|
} else if ctx.Host() {
|
||||||
flags.Local.CFlags = append(flags.Local.CFlags, "-fno-sanitize-recover=all")
|
flags.Local.CFlags = append(flags.Local.CFlags, hostOnlySanitizeFlags...)
|
||||||
} else {
|
} 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) {
|
if enableMinimalRuntime(s) {
|
||||||
@@ -1787,3 +1795,7 @@ func cfiMakeVarsProvider(ctx android.MakeVarsContext) {
|
|||||||
func hwasanMakeVarsProvider(ctx android.MakeVarsContext) {
|
func hwasanMakeVarsProvider(ctx android.MakeVarsContext) {
|
||||||
hwasanStaticLibs(ctx.Config()).exportToMake(ctx)
|
hwasanStaticLibs(ctx.Config()).exportToMake(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BazelCcSanitizerToolchainVars(config android.Config) string {
|
||||||
|
return android.BazelToolchainVars(config, exportedVars)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user