Export sanitizer vars for use in Bazel

Bug: 265154269
Test: Unit tests
Change-Id: I46584159264476d76079e396c6ec294fb394acff
This commit is contained in:
Trevor Radcliffe
2023-01-19 16:02:47 +00:00
parent 3a79caa3b9
commit 4f95ee96b8
3 changed files with 22 additions and 4 deletions

View File

@@ -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)))

View File

@@ -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",

View File

@@ -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)
}