Loading bp2build/cc_binary_conversion_test.go +0 −79 Original line number Diff line number Diff line Loading @@ -789,82 +789,3 @@ func TestCcBinaryWithSyspropSrcsSomeConfigs(t *testing.T) { }, }) } func TestCcBinaryWithIntegerOverflowProperty(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary with integer overflow property specified", blueprint: ` {rule_name} { name: "foo", sanitize: { integer_overflow: true, }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `["ubsan_integer_overflow"]`, }}, }, }) } func TestCcBinaryWithMiscUndefinedProperty(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary with miscellaneous properties specified", blueprint: ` {rule_name} { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, }}, }, }) } func TestCcBinaryWithUBSanPropertiesArchSpecific(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary has correct feature select when UBSan props are specified in arch specific blocks", blueprint: ` {rule_name} { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, }}, }, }) } bp2build/cc_library_conversion_test.go +0 −110 Original line number Diff line number Diff line Loading @@ -3600,113 +3600,3 @@ cc_library_static { }, }) } func TestCcLibraryWithIntegerOverflowProperty(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct features when integer_overflow property is provided", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryWithMiscUndefinedProperty(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct features when misc_undefined property is provided", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct feature select when UBSan props are specified in arch specific blocks", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) } bp2build/cc_library_shared_conversion_test.go +0 −82 Original line number Diff line number Diff line Loading @@ -845,85 +845,3 @@ cc_library_shared { }, }) } func TestCcLibrarySharedWithIntegerOverflowProperty(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when integer_overflow property is provided", Blueprint: ` cc_library_shared { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibrarySharedWithMiscUndefinedProperty(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when misc_undefined property is provided", Blueprint: ` cc_library_shared { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibrarySharedWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct feature select when UBSan props are specified in arch specific blocks", Blueprint: ` cc_library_shared { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) } bp2build/cc_library_static_conversion_test.go +0 −82 Original line number Diff line number Diff line Loading @@ -1723,85 +1723,3 @@ cc_library_static { }, }) } func TestCcLibraryStaticWithIntegerOverflowProperty(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when integer_overflow property is provided", Blueprint: ` cc_library_static { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryStaticWithMiscUndefinedProperty(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when misc_undefined property is provided", Blueprint: ` cc_library_static { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryStaticWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct feature select when UBSan props are specified in arch specific blocks", Blueprint: ` cc_library_static { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) } cc/bp2build.go +2 −19 Original line number Diff line number Diff line Loading @@ -341,7 +341,7 @@ type baseAttributes struct { compilerAttributes linkerAttributes // A combination of compilerAttributes.features and linkerAttributes.features, as well as sanitizer features // A combination of compilerAttributes.features and linkerAttributes.features features bazel.StringListAttribute protoDependency *bazel.LabelAttribute aidlDependency *bazel.LabelAttribute Loading Loading @@ -781,7 +781,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) (&linkerAttrs).wholeArchiveDeps.Add(bp2buildCcSysprop(ctx, module.Name(), module.Properties.Min_sdk_version, compilerAttrs.syspropSrcs)) } features := compilerAttrs.features.Clone().Append(linkerAttrs.features).Append(bp2buildSanitizerFeatures(ctx, module)) features := compilerAttrs.features.Clone().Append(linkerAttrs.features) features.DeduplicateAxesFromBase() return baseAttributes{ Loading Loading @@ -1364,20 +1364,3 @@ func bp2buildBinaryLinkerProps(ctx android.BazelConversionPathContext, m *Module return attrs } func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module) bazel.StringListAttribute { sanitizerFeatures := bazel.StringListAttribute{} bp2BuildPropParseHelper(ctx, m, &SanitizeProperties{}, func(axis bazel.ConfigurationAxis, config string, props interface{}) { var features []string if sanitizerProps, ok := props.(*SanitizeProperties); ok { if sanitizerProps.Sanitize.Integer_overflow != nil && *sanitizerProps.Sanitize.Integer_overflow { features = append(features, "ubsan_integer_overflow") } for _, sanitizer := range sanitizerProps.Sanitize.Misc_undefined { features = append(features, "ubsan_"+sanitizer) } sanitizerFeatures.SetSelectValue(axis, config, features) } }) return sanitizerFeatures } Loading
bp2build/cc_binary_conversion_test.go +0 −79 Original line number Diff line number Diff line Loading @@ -789,82 +789,3 @@ func TestCcBinaryWithSyspropSrcsSomeConfigs(t *testing.T) { }, }) } func TestCcBinaryWithIntegerOverflowProperty(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary with integer overflow property specified", blueprint: ` {rule_name} { name: "foo", sanitize: { integer_overflow: true, }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `["ubsan_integer_overflow"]`, }}, }, }) } func TestCcBinaryWithMiscUndefinedProperty(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary with miscellaneous properties specified", blueprint: ` {rule_name} { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, }}, }, }) } func TestCcBinaryWithUBSanPropertiesArchSpecific(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "cc_binary has correct feature select when UBSan props are specified in arch specific blocks", blueprint: ` {rule_name} { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, }`, targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "local_includes": `["."]`, "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, }}, }, }) }
bp2build/cc_library_conversion_test.go +0 −110 Original line number Diff line number Diff line Loading @@ -3600,113 +3600,3 @@ cc_library_static { }, }) } func TestCcLibraryWithIntegerOverflowProperty(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct features when integer_overflow property is provided", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryWithMiscUndefinedProperty(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct features when misc_undefined property is provided", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ Description: "cc_library has correct feature select when UBSan props are specified in arch specific blocks", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: ` cc_library { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) }
bp2build/cc_library_shared_conversion_test.go +0 −82 Original line number Diff line number Diff line Loading @@ -845,85 +845,3 @@ cc_library_shared { }, }) } func TestCcLibrarySharedWithIntegerOverflowProperty(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when integer_overflow property is provided", Blueprint: ` cc_library_shared { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibrarySharedWithMiscUndefinedProperty(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when misc_undefined property is provided", Blueprint: ` cc_library_shared { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibrarySharedWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct feature select when UBSan props are specified in arch specific blocks", Blueprint: ` cc_library_shared { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) }
bp2build/cc_library_static_conversion_test.go +0 −82 Original line number Diff line number Diff line Loading @@ -1723,85 +1723,3 @@ cc_library_static { }, }) } func TestCcLibraryStaticWithIntegerOverflowProperty(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when integer_overflow property is provided", Blueprint: ` cc_library_static { name: "foo", sanitize: { integer_overflow: true, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `["ubsan_integer_overflow"]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryStaticWithMiscUndefinedProperty(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when misc_undefined property is provided", Blueprint: ` cc_library_static { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ]`, "local_includes": `["."]`, }), }, }) } func TestCcLibraryStaticWithUBSanPropertiesArchSpecific(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct feature select when UBSan props are specified in arch specific blocks", Blueprint: ` cc_library_static { name: "foo", sanitize: { misc_undefined: ["undefined", "nullability"], }, target: { android: { sanitize: { misc_undefined: ["alignment"], }, }, linux_glibc: { sanitize: { integer_overflow: true, }, }, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "ubsan_undefined", "ubsan_nullability", ] + select({ "//build/bazel/platforms/os:android": ["ubsan_alignment"], "//build/bazel/platforms/os:linux": ["ubsan_integer_overflow"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, }) }
cc/bp2build.go +2 −19 Original line number Diff line number Diff line Loading @@ -341,7 +341,7 @@ type baseAttributes struct { compilerAttributes linkerAttributes // A combination of compilerAttributes.features and linkerAttributes.features, as well as sanitizer features // A combination of compilerAttributes.features and linkerAttributes.features features bazel.StringListAttribute protoDependency *bazel.LabelAttribute aidlDependency *bazel.LabelAttribute Loading Loading @@ -781,7 +781,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module) (&linkerAttrs).wholeArchiveDeps.Add(bp2buildCcSysprop(ctx, module.Name(), module.Properties.Min_sdk_version, compilerAttrs.syspropSrcs)) } features := compilerAttrs.features.Clone().Append(linkerAttrs.features).Append(bp2buildSanitizerFeatures(ctx, module)) features := compilerAttrs.features.Clone().Append(linkerAttrs.features) features.DeduplicateAxesFromBase() return baseAttributes{ Loading Loading @@ -1364,20 +1364,3 @@ func bp2buildBinaryLinkerProps(ctx android.BazelConversionPathContext, m *Module return attrs } func bp2buildSanitizerFeatures(ctx android.BazelConversionPathContext, m *Module) bazel.StringListAttribute { sanitizerFeatures := bazel.StringListAttribute{} bp2BuildPropParseHelper(ctx, m, &SanitizeProperties{}, func(axis bazel.ConfigurationAxis, config string, props interface{}) { var features []string if sanitizerProps, ok := props.(*SanitizeProperties); ok { if sanitizerProps.Sanitize.Integer_overflow != nil && *sanitizerProps.Sanitize.Integer_overflow { features = append(features, "ubsan_integer_overflow") } for _, sanitizer := range sanitizerProps.Sanitize.Misc_undefined { features = append(features, "ubsan_"+sanitizer) } sanitizerFeatures.SetSelectValue(axis, config, features) } }) return sanitizerFeatures }