diff options
| author | Ivan Lozano <ivanlozano@google.com> | 2020-02-11 08:26:16 -0500 |
|---|---|---|
| committer | Ivan Lozano <ivanlozano@google.com> | 2020-02-13 13:50:34 -0500 |
| commit | 8107b85189518f4f87841772a4ad70f64220297c (patch) | |
| tree | f5249d1ad5b5052263fdcca327df59f9609e7f2d /cc | |
| parent | cc9a5edd4f403905dfc4dec33d3503953dd57841 (diff) | |
| download | build_soong-8107b85189518f4f87841772a4ad70f64220297c.tar.gz build_soong-8107b85189518f4f87841772a4ad70f64220297c.tar.bz2 build_soong-8107b85189518f4f87841772a4ad70f64220297c.zip | |
Remove execute-only support.
With kernel support being removed for execute-only memory layouts,
remove support for XOM until there's kernel support again.
This allows us to gain the code-size improvements from
"-z noseparate-code".
Bug: 147300048
Test: Compiled binaries no longer marked XOM by default.
Change-Id: Ie84bdd2ca025e8b14867008291bf9ce143b5e999
Diffstat (limited to 'cc')
| -rw-r--r-- | cc/cc.go | 9 | ||||
| -rw-r--r-- | cc/xom.go | 79 |
2 files changed, 0 insertions, 88 deletions
@@ -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 ce817aad..00000000 --- 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 -} |
