Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0bf3dbe authored by Ivan Lozano's avatar Ivan Lozano Committed by Gerrit Code Review
Browse files

Merge "Remove execute-only support."

parents edb31749 8107b851
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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",
+0 −15
Original line number Diff line number Diff line
@@ -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])
}
+0 −3
Original line number Diff line number Diff line
@@ -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"`
+0 −9
Original line number Diff line number Diff line
@@ -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 = &lto{}
	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{},
		&LTOProperties{},
		&PgoProperties{},
		&XomProperties{},
		&android.ProtoProperties{},
	)

cc/xom.go

deleted100644 → 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
}