Merge "bp2build for sanitizer blocklists long term fix" into main
This commit is contained in:
@@ -76,6 +76,8 @@ const (
|
|||||||
NonApex = "non_apex"
|
NonApex = "non_apex"
|
||||||
|
|
||||||
ErrorproneDisabled = "errorprone_disabled"
|
ErrorproneDisabled = "errorprone_disabled"
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
SanitizersEnabled = "sanitizers_enabled"
|
||||||
)
|
)
|
||||||
|
|
||||||
func PowerSetWithoutEmptySet[T any](items []T) [][]T {
|
func PowerSetWithoutEmptySet[T any](items []T) [][]T {
|
||||||
@@ -223,6 +225,12 @@ var (
|
|||||||
ErrorproneDisabled: "//build/bazel/rules/java/errorprone:errorprone_globally_disabled",
|
ErrorproneDisabled: "//build/bazel/rules/java/errorprone:errorprone_globally_disabled",
|
||||||
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
sanitizersEnabledMap = map[string]string{
|
||||||
|
SanitizersEnabled: "//build/bazel/rules/cc:sanitizers_enabled",
|
||||||
|
ConditionsDefaultConfigKey: ConditionsDefaultSelectKey,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// basic configuration types
|
// basic configuration types
|
||||||
@@ -237,6 +245,8 @@ const (
|
|||||||
osAndInApex
|
osAndInApex
|
||||||
inApex
|
inApex
|
||||||
errorProneDisabled
|
errorProneDisabled
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
sanitizersEnabled
|
||||||
)
|
)
|
||||||
|
|
||||||
func osArchString(os string, arch string) string {
|
func osArchString(os string, arch string) string {
|
||||||
@@ -253,6 +263,8 @@ func (ct configurationType) String() string {
|
|||||||
osAndInApex: "os_in_apex",
|
osAndInApex: "os_in_apex",
|
||||||
inApex: "in_apex",
|
inApex: "in_apex",
|
||||||
errorProneDisabled: "errorprone_disabled",
|
errorProneDisabled: "errorprone_disabled",
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
sanitizersEnabled: "sanitizers_enabled",
|
||||||
}[ct]
|
}[ct]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +299,11 @@ func (ct configurationType) validateConfig(config string) {
|
|||||||
if _, ok := errorProneMap[config]; !ok {
|
if _, ok := errorProneMap[config]; !ok {
|
||||||
panic(fmt.Errorf("Unknown errorprone config: %s", config))
|
panic(fmt.Errorf("Unknown errorprone config: %s", config))
|
||||||
}
|
}
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
case sanitizersEnabled:
|
||||||
|
if _, ok := sanitizersEnabledMap[config]; !ok {
|
||||||
|
panic(fmt.Errorf("Unknown sanitizers_enabled config: %s", config))
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct))
|
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ct))
|
||||||
}
|
}
|
||||||
@@ -318,6 +335,9 @@ func (ca ConfigurationAxis) SelectKey(config string) string {
|
|||||||
return inApexMap[config]
|
return inApexMap[config]
|
||||||
case errorProneDisabled:
|
case errorProneDisabled:
|
||||||
return errorProneMap[config]
|
return errorProneMap[config]
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
case sanitizersEnabled:
|
||||||
|
return sanitizersEnabledMap[config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType))
|
panic(fmt.Errorf("Unrecognized ConfigurationType %d", ca.configurationType))
|
||||||
}
|
}
|
||||||
@@ -338,6 +358,9 @@ var (
|
|||||||
InApexAxis = ConfigurationAxis{configurationType: inApex}
|
InApexAxis = ConfigurationAxis{configurationType: inApex}
|
||||||
|
|
||||||
ErrorProneAxis = ConfigurationAxis{configurationType: errorProneDisabled}
|
ErrorProneAxis = ConfigurationAxis{configurationType: errorProneDisabled}
|
||||||
|
|
||||||
|
// TODO: b/294868620 - Remove when completing the bug
|
||||||
|
SanitizersEnabledAxis = ConfigurationAxis{configurationType: sanitizersEnabled}
|
||||||
)
|
)
|
||||||
|
|
||||||
// ProductVariableConfigurationAxis returns an axis for the given product variable
|
// ProductVariableConfigurationAxis returns an axis for the given product variable
|
||||||
|
@@ -426,7 +426,7 @@ func (la *LabelAttribute) SetSelectValue(axis ConfigurationAxis, config string,
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
la.Value = &value
|
la.Value = &value
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, sanitizersEnabled:
|
||||||
if la.ConfigurableValues == nil {
|
if la.ConfigurableValues == nil {
|
||||||
la.ConfigurableValues = make(configurableLabels)
|
la.ConfigurableValues = make(configurableLabels)
|
||||||
}
|
}
|
||||||
@@ -442,7 +442,7 @@ func (la *LabelAttribute) SelectValue(axis ConfigurationAxis, config string) *La
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return la.Value
|
return la.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, sanitizersEnabled:
|
||||||
return la.ConfigurableValues[axis][config]
|
return la.ConfigurableValues[axis][config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
||||||
@@ -512,7 +512,7 @@ func (ba *BoolAttribute) SetSelectValue(axis ConfigurationAxis, config string, v
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
ba.Value = value
|
ba.Value = value
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, sanitizersEnabled:
|
||||||
if ba.ConfigurableValues == nil {
|
if ba.ConfigurableValues == nil {
|
||||||
ba.ConfigurableValues = make(configurableBools)
|
ba.ConfigurableValues = make(configurableBools)
|
||||||
}
|
}
|
||||||
@@ -659,7 +659,7 @@ func (ba BoolAttribute) SelectValue(axis ConfigurationAxis, config string) *bool
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return ba.Value
|
return ba.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex:
|
case arch, os, osArch, productVariables, osAndInApex, sanitizersEnabled:
|
||||||
if v, ok := ba.ConfigurableValues[axis][config]; ok {
|
if v, ok := ba.ConfigurableValues[axis][config]; ok {
|
||||||
return &v
|
return &v
|
||||||
} else {
|
} else {
|
||||||
@@ -794,7 +794,7 @@ func (lla *LabelListAttribute) SetSelectValue(axis ConfigurationAxis, config str
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
lla.Value = list
|
lla.Value = list
|
||||||
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled:
|
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled, sanitizersEnabled:
|
||||||
if lla.ConfigurableValues == nil {
|
if lla.ConfigurableValues == nil {
|
||||||
lla.ConfigurableValues = make(configurableLabelLists)
|
lla.ConfigurableValues = make(configurableLabelLists)
|
||||||
}
|
}
|
||||||
@@ -810,7 +810,7 @@ func (lla *LabelListAttribute) SelectValue(axis ConfigurationAxis, config string
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return lla.Value
|
return lla.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled:
|
case arch, os, osArch, productVariables, osAndInApex, inApex, errorProneDisabled, sanitizersEnabled:
|
||||||
return lla.ConfigurableValues[axis][config]
|
return lla.ConfigurableValues[axis][config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
||||||
@@ -1168,7 +1168,7 @@ func (sa *StringAttribute) SetSelectValue(axis ConfigurationAxis, config string,
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
sa.Value = str
|
sa.Value = str
|
||||||
case arch, os, osArch, productVariables:
|
case arch, os, osArch, productVariables, sanitizersEnabled:
|
||||||
if sa.ConfigurableValues == nil {
|
if sa.ConfigurableValues == nil {
|
||||||
sa.ConfigurableValues = make(configurableStrings)
|
sa.ConfigurableValues = make(configurableStrings)
|
||||||
}
|
}
|
||||||
@@ -1184,7 +1184,7 @@ func (sa *StringAttribute) SelectValue(axis ConfigurationAxis, config string) *s
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return sa.Value
|
return sa.Value
|
||||||
case arch, os, osArch, productVariables:
|
case arch, os, osArch, productVariables, sanitizersEnabled:
|
||||||
if v, ok := sa.ConfigurableValues[axis][config]; ok {
|
if v, ok := sa.ConfigurableValues[axis][config]; ok {
|
||||||
return v
|
return v
|
||||||
} else {
|
} else {
|
||||||
@@ -1374,7 +1374,7 @@ func (sla *StringListAttribute) SetSelectValue(axis ConfigurationAxis, config st
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
sla.Value = list
|
sla.Value = list
|
||||||
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled:
|
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled, sanitizersEnabled:
|
||||||
if sla.ConfigurableValues == nil {
|
if sla.ConfigurableValues == nil {
|
||||||
sla.ConfigurableValues = make(configurableStringLists)
|
sla.ConfigurableValues = make(configurableStringLists)
|
||||||
}
|
}
|
||||||
@@ -1390,7 +1390,7 @@ func (sla *StringListAttribute) SelectValue(axis ConfigurationAxis, config strin
|
|||||||
switch axis.configurationType {
|
switch axis.configurationType {
|
||||||
case noConfig:
|
case noConfig:
|
||||||
return sla.Value
|
return sla.Value
|
||||||
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled:
|
case arch, os, osArch, productVariables, osAndInApex, errorProneDisabled, sanitizersEnabled:
|
||||||
return sla.ConfigurableValues[axis][config]
|
return sla.ConfigurableValues[axis][config]
|
||||||
default:
|
default:
|
||||||
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
panic(fmt.Errorf("Unrecognized ConfigurationAxis %s", axis))
|
||||||
|
@@ -880,8 +880,15 @@ func TestCcBinaryWithSanitizerBlocklist(t *testing.T) {
|
|||||||
}`,
|
}`,
|
||||||
targets: []testBazelTarget{
|
targets: []testBazelTarget{
|
||||||
{"cc_binary", "foo", AttrNameToString{
|
{"cc_binary", "foo", AttrNameToString{
|
||||||
|
"copts": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": ["-fsanitize-ignorelist=$(location foo_blocklist.txt)"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
|
"additional_compiler_inputs": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": [":foo_blocklist.txt"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
"features": `["sanitizer_blocklist_foo_blocklist_txt"]`,
|
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@@ -4206,11 +4206,25 @@ cc_library {
|
|||||||
`,
|
`,
|
||||||
ExpectedBazelTargets: []string{
|
ExpectedBazelTargets: []string{
|
||||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||||
"features": `["sanitizer_blocklist_foo_blocklist_txt"]`,
|
"copts": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": ["-fsanitize-ignorelist=$(location foo_blocklist.txt)"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
|
"additional_compiler_inputs": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": [":foo_blocklist.txt"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
}),
|
}),
|
||||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||||
"features": `["sanitizer_blocklist_foo_blocklist_txt"]`,
|
"copts": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": ["-fsanitize-ignorelist=$(location foo_blocklist.txt)"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
|
"additional_compiler_inputs": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": [":foo_blocklist.txt"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
@@ -1225,7 +1225,14 @@ cc_library_shared {
|
|||||||
`,
|
`,
|
||||||
ExpectedBazelTargets: []string{
|
ExpectedBazelTargets: []string{
|
||||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||||
"features": `["sanitizer_blocklist_foo_blocklist_txt"]`,
|
"copts": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": ["-fsanitize-ignorelist=$(location foo_blocklist.txt)"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
|
"additional_compiler_inputs": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": [":foo_blocklist.txt"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
@@ -1950,7 +1950,14 @@ cc_library_static {
|
|||||||
`,
|
`,
|
||||||
ExpectedBazelTargets: []string{
|
ExpectedBazelTargets: []string{
|
||||||
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
|
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
|
||||||
"features": `["sanitizer_blocklist_foo_blocklist_txt"]`,
|
"copts": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": ["-fsanitize-ignorelist=$(location foo_blocklist.txt)"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
|
"additional_compiler_inputs": `select({
|
||||||
|
"//build/bazel/rules/cc:sanitizers_enabled": [":foo_blocklist.txt"],
|
||||||
|
"//conditions:default": [],
|
||||||
|
})`,
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
@@ -639,6 +639,7 @@ func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAtt
|
|||||||
Cpp_std: baseAttrs.cppStd,
|
Cpp_std: baseAttrs.cppStd,
|
||||||
|
|
||||||
Additional_linker_inputs: baseAttrs.additionalLinkerInputs,
|
Additional_linker_inputs: baseAttrs.additionalLinkerInputs,
|
||||||
|
Additional_compiler_inputs: baseAttrs.additionalCompilerInputs,
|
||||||
|
|
||||||
Strip: stripAttributes{
|
Strip: stripAttributes{
|
||||||
Keep_symbols: baseAttrs.stripKeepSymbols,
|
Keep_symbols: baseAttrs.stripKeepSymbols,
|
||||||
@@ -684,6 +685,7 @@ type binaryAttributes struct {
|
|||||||
Cppflags bazel.StringListAttribute
|
Cppflags bazel.StringListAttribute
|
||||||
Conlyflags bazel.StringListAttribute
|
Conlyflags bazel.StringListAttribute
|
||||||
Asflags bazel.StringListAttribute
|
Asflags bazel.StringListAttribute
|
||||||
|
Additional_compiler_inputs bazel.LabelListAttribute
|
||||||
|
|
||||||
Deps bazel.LabelListAttribute
|
Deps bazel.LabelListAttribute
|
||||||
Dynamic_deps bazel.LabelListAttribute
|
Dynamic_deps bazel.LabelListAttribute
|
||||||
|
@@ -65,6 +65,8 @@ type staticOrSharedAttributes struct {
|
|||||||
Hdrs bazel.LabelListAttribute
|
Hdrs bazel.LabelListAttribute
|
||||||
Copts bazel.StringListAttribute
|
Copts bazel.StringListAttribute
|
||||||
|
|
||||||
|
Additional_compiler_inputs bazel.LabelListAttribute
|
||||||
|
|
||||||
Deps bazel.LabelListAttribute
|
Deps bazel.LabelListAttribute
|
||||||
Implementation_deps bazel.LabelListAttribute
|
Implementation_deps bazel.LabelListAttribute
|
||||||
Dynamic_deps bazel.LabelListAttribute
|
Dynamic_deps bazel.LabelListAttribute
|
||||||
@@ -508,6 +510,8 @@ type compilerAttributes struct {
|
|||||||
suffix bazel.StringAttribute
|
suffix bazel.StringAttribute
|
||||||
|
|
||||||
fdoProfile bazel.LabelAttribute
|
fdoProfile bazel.LabelAttribute
|
||||||
|
|
||||||
|
additionalCompilerInputs bazel.LabelListAttribute
|
||||||
}
|
}
|
||||||
|
|
||||||
type filterOutFn func(string) bool
|
type filterOutFn func(string) bool
|
||||||
@@ -1016,11 +1020,16 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
|
|||||||
(&compilerAttrs).localIncludes.Append(rsLocalIncludes)
|
(&compilerAttrs).localIncludes.Append(rsLocalIncludes)
|
||||||
(&compilerAttrs).localIncludes.Value = android.FirstUniqueStrings(compilerAttrs.localIncludes.Value)
|
(&compilerAttrs).localIncludes.Value = android.FirstUniqueStrings(compilerAttrs.localIncludes.Value)
|
||||||
|
|
||||||
features := compilerAttrs.features.Clone().Append(linkerAttrs.features).Append(bp2buildSanitizerFeatures(ctx, module))
|
sanitizerValues := bp2buildSanitizerFeatures(ctx, module)
|
||||||
|
|
||||||
|
features := compilerAttrs.features.Clone().Append(linkerAttrs.features).Append(sanitizerValues.features)
|
||||||
features = features.Append(bp2buildLtoFeatures(ctx, module))
|
features = features.Append(bp2buildLtoFeatures(ctx, module))
|
||||||
features = features.Append(convertHiddenVisibilityToFeatureBase(ctx, module))
|
features = features.Append(convertHiddenVisibilityToFeatureBase(ctx, module))
|
||||||
features.DeduplicateAxesFromBase()
|
features.DeduplicateAxesFromBase()
|
||||||
|
|
||||||
|
compilerAttrs.copts = *compilerAttrs.copts.Append(sanitizerValues.copts)
|
||||||
|
compilerAttrs.additionalCompilerInputs = *compilerAttrs.additionalCompilerInputs.Append(sanitizerValues.additionalCompilerInputs)
|
||||||
|
|
||||||
addMuslSystemDynamicDeps(ctx, linkerAttrs)
|
addMuslSystemDynamicDeps(ctx, linkerAttrs)
|
||||||
|
|
||||||
return baseAttributes{
|
return baseAttributes{
|
||||||
@@ -1910,8 +1919,16 @@ func bp2buildBinaryLinkerProps(ctx android.BazelConversionPathContext, m *Module
|
|||||||
return attrs
|
return attrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module) bazel.StringListAttribute {
|
type sanitizerValues struct {
|
||||||
|
features bazel.StringListAttribute
|
||||||
|
copts bazel.StringListAttribute
|
||||||
|
additionalCompilerInputs bazel.LabelListAttribute
|
||||||
|
}
|
||||||
|
|
||||||
|
func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module) sanitizerValues {
|
||||||
sanitizerFeatures := bazel.StringListAttribute{}
|
sanitizerFeatures := bazel.StringListAttribute{}
|
||||||
|
sanitizerCopts := bazel.StringListAttribute{}
|
||||||
|
sanitizerCompilerInputs := bazel.LabelListAttribute{}
|
||||||
bp2BuildPropParseHelper(ctx, m, &SanitizeProperties{}, func(axis bazel.ConfigurationAxis, config string, props interface{}) {
|
bp2BuildPropParseHelper(ctx, m, &SanitizeProperties{}, func(axis bazel.ConfigurationAxis, config string, props interface{}) {
|
||||||
var features []string
|
var features []string
|
||||||
if sanitizerProps, ok := props.(*SanitizeProperties); ok {
|
if sanitizerProps, ok := props.(*SanitizeProperties); ok {
|
||||||
@@ -1923,9 +1940,10 @@ func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module
|
|||||||
}
|
}
|
||||||
blocklist := sanitizerProps.Sanitize.Blocklist
|
blocklist := sanitizerProps.Sanitize.Blocklist
|
||||||
if blocklist != nil {
|
if blocklist != nil {
|
||||||
// Format the blocklist name to be used in a feature name
|
// TODO: b/294868620 - Change this not to use the special axis when completing the bug
|
||||||
blocklistFeatureSuffix := strings.Replace(strings.ToLower(*blocklist), ".", "_", -1)
|
coptValue := fmt.Sprintf("-fsanitize-ignorelist=$(location %s)", *blocklist)
|
||||||
features = append(features, "sanitizer_blocklist_"+blocklistFeatureSuffix)
|
sanitizerCopts.SetSelectValue(bazel.SanitizersEnabledAxis, bazel.SanitizersEnabled, []string{coptValue})
|
||||||
|
sanitizerCompilerInputs.SetSelectValue(bazel.SanitizersEnabledAxis, bazel.SanitizersEnabled, bazel.MakeLabelListFromTargetNames([]string{*blocklist}))
|
||||||
}
|
}
|
||||||
if sanitizerProps.Sanitize.Cfi != nil && !proptools.Bool(sanitizerProps.Sanitize.Cfi) {
|
if sanitizerProps.Sanitize.Cfi != nil && !proptools.Bool(sanitizerProps.Sanitize.Cfi) {
|
||||||
features = append(features, "-android_cfi")
|
features = append(features, "-android_cfi")
|
||||||
@@ -1938,7 +1956,11 @@ func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module
|
|||||||
sanitizerFeatures.SetSelectValue(axis, config, features)
|
sanitizerFeatures.SetSelectValue(axis, config, features)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
return sanitizerFeatures
|
return sanitizerValues{
|
||||||
|
features: sanitizerFeatures,
|
||||||
|
copts: sanitizerCopts,
|
||||||
|
additionalCompilerInputs: sanitizerCompilerInputs,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func bp2buildLtoFeatures(ctx android.BazelConversionPathContext, m *Module) bazel.StringListAttribute {
|
func bp2buildLtoFeatures(ctx android.BazelConversionPathContext, m *Module) bazel.StringListAttribute {
|
||||||
|
@@ -349,6 +349,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
|
|||||||
Runtime_deps: linkerAttrs.runtimeDeps,
|
Runtime_deps: linkerAttrs.runtimeDeps,
|
||||||
sdkAttributes: bp2BuildParseSdkAttributes(m),
|
sdkAttributes: bp2BuildParseSdkAttributes(m),
|
||||||
Native_coverage: baseAttributes.Native_coverage,
|
Native_coverage: baseAttributes.Native_coverage,
|
||||||
|
Additional_compiler_inputs: compilerAttrs.additionalCompilerInputs,
|
||||||
}
|
}
|
||||||
|
|
||||||
includeAttrs := includesAttributes{
|
includeAttrs := includesAttributes{
|
||||||
@@ -376,6 +377,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
|
|||||||
Runtime_deps: linkerAttrs.runtimeDeps,
|
Runtime_deps: linkerAttrs.runtimeDeps,
|
||||||
sdkAttributes: bp2BuildParseSdkAttributes(m),
|
sdkAttributes: bp2BuildParseSdkAttributes(m),
|
||||||
Native_coverage: baseAttributes.Native_coverage,
|
Native_coverage: baseAttributes.Native_coverage,
|
||||||
|
Additional_compiler_inputs: compilerAttrs.additionalCompilerInputs,
|
||||||
}
|
}
|
||||||
|
|
||||||
staticTargetAttrs := &bazelCcLibraryStaticAttributes{
|
staticTargetAttrs := &bazelCcLibraryStaticAttributes{
|
||||||
@@ -2962,6 +2964,7 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
|
|||||||
sdkAttributes: bp2BuildParseSdkAttributes(module),
|
sdkAttributes: bp2BuildParseSdkAttributes(module),
|
||||||
Runtime_deps: linkerAttrs.runtimeDeps,
|
Runtime_deps: linkerAttrs.runtimeDeps,
|
||||||
Native_coverage: baseAttributes.Native_coverage,
|
Native_coverage: baseAttributes.Native_coverage,
|
||||||
|
Additional_compiler_inputs: compilerAttrs.additionalCompilerInputs,
|
||||||
}
|
}
|
||||||
|
|
||||||
module.convertTidyAttributes(ctx, &commonAttrs.tidyAttributes)
|
module.convertTidyAttributes(ctx, &commonAttrs.tidyAttributes)
|
||||||
|
Reference in New Issue
Block a user