diff --git a/Android.bp b/Android.bp index cb2f773a5..f425c3f3f 100644 --- a/Android.bp +++ b/Android.bp @@ -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", diff --git a/android/config.go b/android/config.go index 3c979f23c..9cf9662a8 100644 --- a/android/config.go +++ b/android/config.go @@ -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" { @@ -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]) } diff --git a/android/variable.go b/android/variable.go index e4a3fa315..9cbe624e4 100644 --- a/android/variable.go +++ b/android/variable.go @@ -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"` diff --git a/cc/cc.go b/cc/cc.go index e55c5760f..b70e55c88 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -450,7 +450,6 @@ type Module struct { vndkdep *vndkdep lto *lto pgo *pgo - xom *xom outputFile android.OptionalPath @@ -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()...) } @@ -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 } @@ -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) } @@ -2683,7 +2675,6 @@ func DefaultsFactory(props ...interface{}) android.Module { &VndkProperties{}, <OProperties{}, &PgoProperties{}, - &XomProperties{}, &android.ProtoProperties{}, ) diff --git a/cc/xom.go b/cc/xom.go deleted file mode 100644 index ce817aad6..000000000 --- a/cc/xom.go +++ /dev/null @@ -1,79 +0,0 @@ -// 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 -}