Loading Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -195,7 +195,6 @@ bootstrap_go_package { "cc/vendor_snapshot.go", "cc/vndk.go", "cc/vndk_prebuilt.go", "cc/xom.go", "cc/cflag_artifacts.go", "cc/cmakelists.go", Loading android/config.go +0 −15 Original line number Diff line number Diff line Loading @@ -790,14 +790,6 @@ func (c *config) DisableScudo() bool { return Bool(c.productVariables.DisableScudo) } func (c *config) EnableXOM() bool { if c.productVariables.EnableXOM == nil { return true } else { return Bool(c.productVariables.EnableXOM) } } func (c *config) Android64() bool { for _, t := range c.Targets[Android] { if t.Arch.ArchType.Multilib == "lib64" { Loading Loading @@ -1153,13 +1145,6 @@ func (c *config) CFIEnabledForPath(path string) bool { return PrefixInList(path, c.productVariables.CFIIncludePaths) } func (c *config) XOMDisabledForPath(path string) bool { if c.productVariables.XOMExcludePaths == nil { return false } return PrefixInList(path, c.productVariables.XOMExcludePaths) } func (c *config) VendorConfig(name string) VendorConfig { return soongconfig.Config(c.productVariables.VendorVars[name]) } Loading android/variable.go +0 −3 Original line number Diff line number Diff line Loading @@ -241,9 +241,6 @@ type productVariables struct { DisableScudo *bool `json:",omitempty"` EnableXOM *bool `json:",omitempty"` XOMExcludePaths []string `json:",omitempty"` Experimental_mte *bool `json:",omitempty"` VendorPath *string `json:",omitempty"` Loading cc/cc.go +0 −9 Original line number Diff line number Diff line Loading @@ -450,7 +450,6 @@ type Module struct { vndkdep *vndkdep lto *lto pgo *pgo xom *xom outputFile android.OptionalPath Loading Loading @@ -734,9 +733,6 @@ func (c *Module) Init() android.Module { if c.pgo != nil { c.AddProperties(c.pgo.props()...) } if c.xom != nil { c.AddProperties(c.xom.props()...) } for _, feature := range c.features { c.AddProperties(feature.props()...) } Loading Loading @@ -1206,7 +1202,6 @@ func newModule(hod android.HostOrDeviceSupported, multilib android.Multilib) *Mo module.vndkdep = &vndkdep{} module.lto = <o{} module.pgo = &pgo{} module.xom = &xom{} return module } Loading Loading @@ -1401,9 +1396,6 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { if c.pgo != nil { flags = c.pgo.flags(ctx, flags) } if c.xom != nil { flags = c.xom.flags(ctx, flags) } for _, feature := range c.features { flags = feature.flags(ctx, flags) } Loading Loading @@ -2683,7 +2675,6 @@ func DefaultsFactory(props ...interface{}) android.Module { &VndkProperties{}, <OProperties{}, &PgoProperties{}, &XomProperties{}, &android.ProtoProperties{}, ) Loading cc/xom.godeleted 100644 → 0 +0 −79 Original line number Diff line number Diff line // Copyright 2018 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package cc import ( "android/soong/android" ) type XomProperties struct { Xom *bool } type xom struct { Properties XomProperties } func (xom *xom) props() []interface{} { return []interface{}{&xom.Properties} } func (xom *xom) begin(ctx BaseModuleContext) {} func (xom *xom) deps(ctx BaseModuleContext, deps Deps) Deps { return deps } func (xom *xom) flags(ctx ModuleContext, flags Flags) Flags { disableXom := false if !ctx.Config().EnableXOM() || ctx.Config().XOMDisabledForPath(ctx.ModuleDir()) { disableXom = true } if xom.Properties.Xom != nil && !*xom.Properties.Xom { return flags } // If any static dependencies have XOM disabled, we should disable XOM in this module, // the assumption being if it's been explicitly disabled then there's probably incompatible // code in the library which may get pulled in. if !disableXom { ctx.VisitDirectDeps(func(m android.Module) { cc, ok := m.(*Module) if !ok || cc.xom == nil || !cc.static() { return } if cc.xom.Properties.Xom != nil && !*cc.xom.Properties.Xom { disableXom = true return } }) } // Enable execute-only if none of the dependencies disable it, // also if it's explicitly set true (allows overriding dependencies disabling it). if !disableXom || (xom.Properties.Xom != nil && *xom.Properties.Xom) { // XOM is only supported on AArch64 when using lld. if ctx.Arch().ArchType == android.Arm64 && ctx.useClangLld(ctx) { flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--execute-only", "-Wl,-z,separate-code", ) } } return flags } Loading
Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -195,7 +195,6 @@ bootstrap_go_package { "cc/vendor_snapshot.go", "cc/vndk.go", "cc/vndk_prebuilt.go", "cc/xom.go", "cc/cflag_artifacts.go", "cc/cmakelists.go", Loading
android/config.go +0 −15 Original line number Diff line number Diff line Loading @@ -790,14 +790,6 @@ func (c *config) DisableScudo() bool { return Bool(c.productVariables.DisableScudo) } func (c *config) EnableXOM() bool { if c.productVariables.EnableXOM == nil { return true } else { return Bool(c.productVariables.EnableXOM) } } func (c *config) Android64() bool { for _, t := range c.Targets[Android] { if t.Arch.ArchType.Multilib == "lib64" { Loading Loading @@ -1153,13 +1145,6 @@ func (c *config) CFIEnabledForPath(path string) bool { return PrefixInList(path, c.productVariables.CFIIncludePaths) } func (c *config) XOMDisabledForPath(path string) bool { if c.productVariables.XOMExcludePaths == nil { return false } return PrefixInList(path, c.productVariables.XOMExcludePaths) } func (c *config) VendorConfig(name string) VendorConfig { return soongconfig.Config(c.productVariables.VendorVars[name]) } Loading
android/variable.go +0 −3 Original line number Diff line number Diff line Loading @@ -241,9 +241,6 @@ type productVariables struct { DisableScudo *bool `json:",omitempty"` EnableXOM *bool `json:",omitempty"` XOMExcludePaths []string `json:",omitempty"` Experimental_mte *bool `json:",omitempty"` VendorPath *string `json:",omitempty"` Loading
cc/cc.go +0 −9 Original line number Diff line number Diff line Loading @@ -450,7 +450,6 @@ type Module struct { vndkdep *vndkdep lto *lto pgo *pgo xom *xom outputFile android.OptionalPath Loading Loading @@ -734,9 +733,6 @@ func (c *Module) Init() android.Module { if c.pgo != nil { c.AddProperties(c.pgo.props()...) } if c.xom != nil { c.AddProperties(c.xom.props()...) } for _, feature := range c.features { c.AddProperties(feature.props()...) } Loading Loading @@ -1206,7 +1202,6 @@ func newModule(hod android.HostOrDeviceSupported, multilib android.Multilib) *Mo module.vndkdep = &vndkdep{} module.lto = <o{} module.pgo = &pgo{} module.xom = &xom{} return module } Loading Loading @@ -1401,9 +1396,6 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { if c.pgo != nil { flags = c.pgo.flags(ctx, flags) } if c.xom != nil { flags = c.xom.flags(ctx, flags) } for _, feature := range c.features { flags = feature.flags(ctx, flags) } Loading Loading @@ -2683,7 +2675,6 @@ func DefaultsFactory(props ...interface{}) android.Module { &VndkProperties{}, <OProperties{}, &PgoProperties{}, &XomProperties{}, &android.ProtoProperties{}, ) Loading
cc/xom.godeleted 100644 → 0 +0 −79 Original line number Diff line number Diff line // Copyright 2018 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package cc import ( "android/soong/android" ) type XomProperties struct { Xom *bool } type xom struct { Properties XomProperties } func (xom *xom) props() []interface{} { return []interface{}{&xom.Properties} } func (xom *xom) begin(ctx BaseModuleContext) {} func (xom *xom) deps(ctx BaseModuleContext, deps Deps) Deps { return deps } func (xom *xom) flags(ctx ModuleContext, flags Flags) Flags { disableXom := false if !ctx.Config().EnableXOM() || ctx.Config().XOMDisabledForPath(ctx.ModuleDir()) { disableXom = true } if xom.Properties.Xom != nil && !*xom.Properties.Xom { return flags } // If any static dependencies have XOM disabled, we should disable XOM in this module, // the assumption being if it's been explicitly disabled then there's probably incompatible // code in the library which may get pulled in. if !disableXom { ctx.VisitDirectDeps(func(m android.Module) { cc, ok := m.(*Module) if !ok || cc.xom == nil || !cc.static() { return } if cc.xom.Properties.Xom != nil && !*cc.xom.Properties.Xom { disableXom = true return } }) } // Enable execute-only if none of the dependencies disable it, // also if it's explicitly set true (allows overriding dependencies disabling it). if !disableXom || (xom.Properties.Xom != nil && *xom.Properties.Xom) { // XOM is only supported on AArch64 when using lld. if ctx.Arch().ArchType == android.Arm64 && ctx.useClangLld(ctx) { flags.Local.LdFlags = append(flags.Local.LdFlags, "-Wl,--execute-only", "-Wl,-z,separate-code", ) } } return flags }