soong: Exclude system shared libs from fix suggestions
Pass the value of system_shared_libs to the Android.mk world, so that prebuilt ELF check can exclude them from fix suggestions. Bug: 141925662 Test: Write a bad cc_prebuilt_library module and check fix suggestions Change-Id: I0cc61821765507180ce6a582bf8125a192f83a57
This commit is contained in:
parent
cc79a6f514
commit
219968c9b3
3 changed files with 23 additions and 8 deletions
|
@ -83,6 +83,13 @@ func (c *Module) AndroidMkEntries() []android.AndroidMkEntries {
|
||||||
if len(c.Properties.Logtags) > 0 {
|
if len(c.Properties.Logtags) > 0 {
|
||||||
entries.AddStrings("LOCAL_LOGTAGS_FILES", c.Properties.Logtags...)
|
entries.AddStrings("LOCAL_LOGTAGS_FILES", c.Properties.Logtags...)
|
||||||
}
|
}
|
||||||
|
// Note: Pass the exact value of AndroidMkSystemSharedLibs to the Make
|
||||||
|
// world, even if it is an empty list. In the Make world,
|
||||||
|
// LOCAL_SYSTEM_SHARED_LIBRARIES defaults to "none", which is expanded
|
||||||
|
// to the default list of system shared libs by the build system.
|
||||||
|
// Soong computes the exact list of system shared libs, so we have to
|
||||||
|
// override the default value when the list of libs is actually empty.
|
||||||
|
entries.SetString("LOCAL_SYSTEM_SHARED_LIBRARIES", strings.Join(c.Properties.AndroidMkSystemSharedLibs, " "))
|
||||||
if len(c.Properties.AndroidMkSharedLibs) > 0 {
|
if len(c.Properties.AndroidMkSharedLibs) > 0 {
|
||||||
entries.AddStrings("LOCAL_SHARED_LIBRARIES", c.Properties.AndroidMkSharedLibs...)
|
entries.AddStrings("LOCAL_SHARED_LIBRARIES", c.Properties.AndroidMkSharedLibs...)
|
||||||
}
|
}
|
||||||
|
|
8
cc/cc.go
8
cc/cc.go
|
@ -99,6 +99,9 @@ type Deps struct {
|
||||||
// Used for data dependencies adjacent to tests
|
// Used for data dependencies adjacent to tests
|
||||||
DataLibs []string
|
DataLibs []string
|
||||||
|
|
||||||
|
// Used by DepsMutator to pass system_shared_libs information to check_elf_file.py.
|
||||||
|
SystemSharedLibs []string
|
||||||
|
|
||||||
StaticUnwinderIfLegacy bool
|
StaticUnwinderIfLegacy bool
|
||||||
|
|
||||||
ReexportSharedLibHeaders, ReexportStaticLibHeaders, ReexportHeaderLibHeaders []string
|
ReexportSharedLibHeaders, ReexportStaticLibHeaders, ReexportHeaderLibHeaders []string
|
||||||
|
@ -237,6 +240,9 @@ type BaseProperties struct {
|
||||||
PreventInstall bool `blueprint:"mutated"`
|
PreventInstall bool `blueprint:"mutated"`
|
||||||
ApexesProvidingSharedLibs []string `blueprint:"mutated"`
|
ApexesProvidingSharedLibs []string `blueprint:"mutated"`
|
||||||
|
|
||||||
|
// Set by DepsMutator.
|
||||||
|
AndroidMkSystemSharedLibs []string `blueprint:"mutated"`
|
||||||
|
|
||||||
ImageVariationPrefix string `blueprint:"mutated"`
|
ImageVariationPrefix string `blueprint:"mutated"`
|
||||||
VndkVersion string `blueprint:"mutated"`
|
VndkVersion string `blueprint:"mutated"`
|
||||||
SubName string `blueprint:"mutated"`
|
SubName string `blueprint:"mutated"`
|
||||||
|
@ -1815,6 +1821,8 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
||||||
|
|
||||||
deps := c.deps(ctx)
|
deps := c.deps(ctx)
|
||||||
|
|
||||||
|
c.Properties.AndroidMkSystemSharedLibs = deps.SystemSharedLibs
|
||||||
|
|
||||||
variantNdkLibs := []string{}
|
variantNdkLibs := []string{}
|
||||||
variantLateNdkLibs := []string{}
|
variantLateNdkLibs := []string{}
|
||||||
if ctx.Os() == android.Android {
|
if ctx.Os() == android.Android {
|
||||||
|
|
16
cc/linker.go
16
cc/linker.go
|
@ -278,19 +278,19 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||||
deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic")
|
deps.LateStaticLibs = append(deps.LateStaticLibs, "libatomic")
|
||||||
}
|
}
|
||||||
|
|
||||||
systemSharedLibs := linker.Properties.System_shared_libs
|
deps.SystemSharedLibs = linker.Properties.System_shared_libs
|
||||||
if systemSharedLibs == nil {
|
if deps.SystemSharedLibs == nil {
|
||||||
// Provide a default system_shared_libs if it is unspecified. Note: If an
|
// Provide a default system_shared_libs if it is unspecified. Note: If an
|
||||||
// empty list [] is specified, it implies that the module declines the
|
// empty list [] is specified, it implies that the module declines the
|
||||||
// default system_shared_libs.
|
// default system_shared_libs.
|
||||||
systemSharedLibs = []string{"libc", "libm", "libdl"}
|
deps.SystemSharedLibs = []string{"libc", "libm", "libdl"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if inList("libdl", deps.SharedLibs) {
|
if inList("libdl", deps.SharedLibs) {
|
||||||
// If system_shared_libs has libc but not libdl, make sure shared_libs does not
|
// If system_shared_libs has libc but not libdl, make sure shared_libs does not
|
||||||
// have libdl to avoid loading libdl before libc.
|
// have libdl to avoid loading libdl before libc.
|
||||||
if inList("libc", systemSharedLibs) {
|
if inList("libc", deps.SystemSharedLibs) {
|
||||||
if !inList("libdl", systemSharedLibs) {
|
if !inList("libdl", deps.SystemSharedLibs) {
|
||||||
ctx.PropertyErrorf("shared_libs",
|
ctx.PropertyErrorf("shared_libs",
|
||||||
"libdl must be in system_shared_libs, not shared_libs")
|
"libdl must be in system_shared_libs, not shared_libs")
|
||||||
}
|
}
|
||||||
|
@ -300,12 +300,12 @@ func (linker *baseLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||||
|
|
||||||
// If libc and libdl are both in system_shared_libs make sure libdl comes after libc
|
// If libc and libdl are both in system_shared_libs make sure libdl comes after libc
|
||||||
// to avoid loading libdl before libc.
|
// to avoid loading libdl before libc.
|
||||||
if inList("libdl", systemSharedLibs) && inList("libc", systemSharedLibs) &&
|
if inList("libdl", deps.SystemSharedLibs) && inList("libc", deps.SystemSharedLibs) &&
|
||||||
indexList("libdl", systemSharedLibs) < indexList("libc", systemSharedLibs) {
|
indexList("libdl", deps.SystemSharedLibs) < indexList("libc", deps.SystemSharedLibs) {
|
||||||
ctx.PropertyErrorf("system_shared_libs", "libdl must be after libc")
|
ctx.PropertyErrorf("system_shared_libs", "libdl must be after libc")
|
||||||
}
|
}
|
||||||
|
|
||||||
deps.LateSharedLibs = append(deps.LateSharedLibs, systemSharedLibs...)
|
deps.LateSharedLibs = append(deps.LateSharedLibs, deps.SystemSharedLibs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.Fuchsia() {
|
if ctx.Fuchsia() {
|
||||||
|
|
Loading…
Reference in a new issue