Merge changes from topic "host_bionic_no_inject"

* changes:
  Give extracted linker sections pretty names
  Stop injecting symbols into host bionic binaries
This commit is contained in:
Colin Cross
2021-06-16 16:50:05 +00:00
committed by Gerrit Code Review
7 changed files with 50 additions and 58 deletions

View File

@@ -401,16 +401,18 @@ func (binary *binaryDecorator) link(ctx ModuleContext,
}
}
var validations android.WritablePaths
// Handle host bionic linker symbols.
if ctx.Os() == android.LinuxBionic && !binary.static() {
injectedOutputFile := outputFile
outputFile = android.PathForModuleOut(ctx, "prelinker", fileName)
verifyFile := android.PathForModuleOut(ctx, "host_bionic_verify.stamp")
if !deps.DynamicLinker.Valid() {
panic("Non-static host bionic modules must have a dynamic linker")
}
binary.injectHostBionicLinkerSymbols(ctx, outputFile, deps.DynamicLinker.Path(), injectedOutputFile)
binary.verifyHostBionicLinker(ctx, outputFile, deps.DynamicLinker.Path(), verifyFile)
validations = append(validations, verifyFile)
}
var sharedLibs android.Paths
@@ -430,7 +432,7 @@ func (binary *binaryDecorator) link(ctx ModuleContext,
// Register link action.
transformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs, deps.StaticLibs,
deps.LateStaticLibs, deps.WholeStaticLibs, linkerDeps, deps.CrtBegin, deps.CrtEnd, true,
builderFlags, outputFile, nil)
builderFlags, outputFile, nil, validations)
objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...)
objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)
@@ -532,19 +534,19 @@ func (binary *binaryDecorator) hostToolPath() android.OptionalPath {
}
func init() {
pctx.HostBinToolVariable("hostBionicSymbolsInjectCmd", "host_bionic_inject")
pctx.HostBinToolVariable("verifyHostBionicCmd", "host_bionic_verify")
}
var injectHostBionicSymbols = pctx.AndroidStaticRule("injectHostBionicSymbols",
var verifyHostBionic = pctx.AndroidStaticRule("verifyHostBionic",
blueprint.RuleParams{
Command: "$hostBionicSymbolsInjectCmd -i $in -l $linker -o $out",
CommandDeps: []string{"$hostBionicSymbolsInjectCmd"},
Command: "$verifyHostBionicCmd -i $in -l $linker && touch $out",
CommandDeps: []string{"$verifyHostBionicCmd"},
}, "linker")
func (binary *binaryDecorator) injectHostBionicLinkerSymbols(ctx ModuleContext, in, linker android.Path, out android.WritablePath) {
func (binary *binaryDecorator) verifyHostBionicLinker(ctx ModuleContext, in, linker android.Path, out android.WritablePath) {
ctx.Build(pctx, android.BuildParams{
Rule: injectHostBionicSymbols,
Description: "inject host bionic symbols",
Rule: verifyHostBionic,
Description: "verify host bionic",
Input: in,
Implicit: linker,
Output: out,

View File

@@ -731,7 +731,8 @@ func transformObjToStaticLib(ctx android.ModuleContext,
// and shared libraries, to a shared library (.so) or dynamic executable
func transformObjToDynamicBinary(ctx android.ModuleContext,
objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps android.Paths,
crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths) {
crtBegin, crtEnd android.OptionalPath, groupLate bool, flags builderFlags,
outputFile android.WritablePath, implicitOutputs android.WritablePaths, validations android.WritablePaths) {
ldCmd := "${config.ClangBin}/clang++"
@@ -805,6 +806,7 @@ func transformObjToDynamicBinary(ctx android.ModuleContext,
Inputs: objFiles,
Implicits: deps,
OrderOnly: sharedLibs,
Validations: validations.Paths(),
Args: args,
})
}

View File

@@ -1406,7 +1406,7 @@ func (library *libraryDecorator) linkShared(ctx ModuleContext,
linkerDeps = append(linkerDeps, objs.tidyFiles...)
transformObjToDynamicBinary(ctx, objs.objFiles, sharedLibs,
deps.StaticLibs, deps.LateStaticLibs, deps.WholeStaticLibs,
linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs)
linkerDeps, deps.CrtBegin, deps.CrtEnd, false, builderFlags, outputFile, implicitOutputs, nil)
objs.coverageFiles = append(objs.coverageFiles, deps.StaticLibObjs.coverageFiles...)
objs.coverageFiles = append(objs.coverageFiles, deps.WholeStaticLibObjs.coverageFiles...)