Loading cc/binary.go +3 −3 Original line number Diff line number Diff line Loading @@ -149,11 +149,11 @@ func (binary *binaryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { if ctx.toolchain().Bionic() { if !Bool(binary.baseLinker.Properties.Nocrt) { if binary.static() { deps.CrtBegin = "crtbegin_static" deps.CrtBegin = []string{"crtbegin_static"} } else { deps.CrtBegin = "crtbegin_dynamic" deps.CrtBegin = []string{"crtbegin_dynamic"} } deps.CrtEnd = "crtend_android" deps.CrtEnd = []string{"crtend_android"} } if binary.static() { Loading cc/builder.go +7 −8 Original line number Diff line number Diff line Loading @@ -730,9 +730,9 @@ func transformObjToStaticLib(ctx android.ModuleContext, // Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries, // 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, validations android.WritablePaths) { objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps, crtBegin, crtEnd android.Paths, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths, validations android.WritablePaths) { ldCmd := "${config.ClangBin}/clang++" Loading Loading @@ -779,18 +779,17 @@ func transformObjToDynamicBinary(ctx android.ModuleContext, deps = append(deps, staticLibs...) deps = append(deps, lateStaticLibs...) deps = append(deps, wholeStaticLibs...) if crtBegin.Valid() { deps = append(deps, crtBegin.Path(), crtEnd.Path()) } deps = append(deps, crtBegin...) deps = append(deps, crtEnd...) rule := ld args := map[string]string{ "ldCmd": ldCmd, "crtBegin": crtBegin.String(), "crtBegin": strings.Join(crtBegin.Strings(), " "), "libFlags": strings.Join(libFlagsList, " "), "extraLibFlags": flags.extraLibFlags, "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags, "crtEnd": crtEnd.String(), "crtEnd": strings.Join(crtEnd.Strings(), " "), } if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") { rule = ldRE Loading cc/cc.go +12 −8 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ type Deps struct { ReexportGeneratedHeaders []string CrtBegin, CrtEnd string CrtBegin, CrtEnd []string // Used for host bionic LinkerFlagsFile string Loading Loading @@ -177,7 +177,7 @@ type PathDeps struct { ReexportedDeps android.Paths // Paths to crt*.o files CrtBegin, CrtEnd android.OptionalPath CrtBegin, CrtEnd android.Paths // Path to the file container flags to use with the linker LinkerFlagsFile android.OptionalPath Loading Loading @@ -2264,13 +2264,13 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { crtVariations := GetCrtVariations(ctx, c) actx.AddVariationDependencies(crtVariations, objDepTag, deps.ObjFiles...) if deps.CrtBegin != "" { for _, crt := range deps.CrtBegin { actx.AddVariationDependencies(crtVariations, CrtBeginDepTag, RewriteSnapshotLib(deps.CrtBegin, GetSnapshot(c, &snapshotInfo, actx).Objects)) RewriteSnapshotLib(crt, GetSnapshot(c, &snapshotInfo, actx).Objects)) } if deps.CrtEnd != "" { for _, crt := range deps.CrtEnd { actx.AddVariationDependencies(crtVariations, CrtEndDepTag, RewriteSnapshotLib(deps.CrtEnd, GetSnapshot(c, &snapshotInfo, actx).Objects)) RewriteSnapshotLib(crt, GetSnapshot(c, &snapshotInfo, actx).Objects)) } if deps.LinkerFlagsFile != "" { actx.AddDependency(c, linkerFlagsDepTag, deps.LinkerFlagsFile) Loading Loading @@ -2584,6 +2584,10 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } else { ctx.ModuleErrorf("module %q is not a genrule", depName) } case CrtBeginDepTag: depPaths.CrtBegin = append(depPaths.CrtBegin, android.OutputFileForModule(ctx, dep, "")) case CrtEndDepTag: depPaths.CrtEnd = append(depPaths.CrtEnd, android.OutputFileForModule(ctx, dep, "")) } return } Loading Loading @@ -2896,9 +2900,9 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { case objDepTag: depPaths.Objs.objFiles = append(depPaths.Objs.objFiles, linkFile.Path()) case CrtBeginDepTag: depPaths.CrtBegin = linkFile depPaths.CrtBegin = append(depPaths.CrtBegin, linkFile.Path()) case CrtEndDepTag: depPaths.CrtEnd = linkFile depPaths.CrtEnd = append(depPaths.CrtEnd, linkFile.Path()) case dynamicLinkerDepTag: depPaths.DynamicLinker = linkFile } Loading cc/library.go +2 −2 Original line number Diff line number Diff line Loading @@ -1175,8 +1175,8 @@ func (library *libraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps.ReexportStaticLibHeaders = append(deps.ReexportStaticLibHeaders, library.StaticProperties.Static.Export_static_lib_headers...) } else if library.shared() { if ctx.toolchain().Bionic() && !Bool(library.baseLinker.Properties.Nocrt) { deps.CrtBegin = "crtbegin_so" deps.CrtEnd = "crtend_so" deps.CrtBegin = []string{"crtbegin_so"} deps.CrtEnd = []string{"crtend_so"} } deps.WholeStaticLibs = append(deps.WholeStaticLibs, library.SharedProperties.Shared.Whole_static_libs...) deps.StaticLibs = append(deps.StaticLibs, library.SharedProperties.Shared.Static_libs...) Loading Loading
cc/binary.go +3 −3 Original line number Diff line number Diff line Loading @@ -149,11 +149,11 @@ func (binary *binaryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { if ctx.toolchain().Bionic() { if !Bool(binary.baseLinker.Properties.Nocrt) { if binary.static() { deps.CrtBegin = "crtbegin_static" deps.CrtBegin = []string{"crtbegin_static"} } else { deps.CrtBegin = "crtbegin_dynamic" deps.CrtBegin = []string{"crtbegin_dynamic"} } deps.CrtEnd = "crtend_android" deps.CrtEnd = []string{"crtend_android"} } if binary.static() { Loading
cc/builder.go +7 −8 Original line number Diff line number Diff line Loading @@ -730,9 +730,9 @@ func transformObjToStaticLib(ctx android.ModuleContext, // Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries, // 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, validations android.WritablePaths) { objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs, deps, crtBegin, crtEnd android.Paths, groupLate bool, flags builderFlags, outputFile android.WritablePath, implicitOutputs android.WritablePaths, validations android.WritablePaths) { ldCmd := "${config.ClangBin}/clang++" Loading Loading @@ -779,18 +779,17 @@ func transformObjToDynamicBinary(ctx android.ModuleContext, deps = append(deps, staticLibs...) deps = append(deps, lateStaticLibs...) deps = append(deps, wholeStaticLibs...) if crtBegin.Valid() { deps = append(deps, crtBegin.Path(), crtEnd.Path()) } deps = append(deps, crtBegin...) deps = append(deps, crtEnd...) rule := ld args := map[string]string{ "ldCmd": ldCmd, "crtBegin": crtBegin.String(), "crtBegin": strings.Join(crtBegin.Strings(), " "), "libFlags": strings.Join(libFlagsList, " "), "extraLibFlags": flags.extraLibFlags, "ldFlags": flags.globalLdFlags + " " + flags.localLdFlags, "crtEnd": crtEnd.String(), "crtEnd": strings.Join(crtEnd.Strings(), " "), } if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_CXX_LINKS") { rule = ldRE Loading
cc/cc.go +12 −8 Original line number Diff line number Diff line Loading @@ -126,7 +126,7 @@ type Deps struct { ReexportGeneratedHeaders []string CrtBegin, CrtEnd string CrtBegin, CrtEnd []string // Used for host bionic LinkerFlagsFile string Loading Loading @@ -177,7 +177,7 @@ type PathDeps struct { ReexportedDeps android.Paths // Paths to crt*.o files CrtBegin, CrtEnd android.OptionalPath CrtBegin, CrtEnd android.Paths // Path to the file container flags to use with the linker LinkerFlagsFile android.OptionalPath Loading Loading @@ -2264,13 +2264,13 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { crtVariations := GetCrtVariations(ctx, c) actx.AddVariationDependencies(crtVariations, objDepTag, deps.ObjFiles...) if deps.CrtBegin != "" { for _, crt := range deps.CrtBegin { actx.AddVariationDependencies(crtVariations, CrtBeginDepTag, RewriteSnapshotLib(deps.CrtBegin, GetSnapshot(c, &snapshotInfo, actx).Objects)) RewriteSnapshotLib(crt, GetSnapshot(c, &snapshotInfo, actx).Objects)) } if deps.CrtEnd != "" { for _, crt := range deps.CrtEnd { actx.AddVariationDependencies(crtVariations, CrtEndDepTag, RewriteSnapshotLib(deps.CrtEnd, GetSnapshot(c, &snapshotInfo, actx).Objects)) RewriteSnapshotLib(crt, GetSnapshot(c, &snapshotInfo, actx).Objects)) } if deps.LinkerFlagsFile != "" { actx.AddDependency(c, linkerFlagsDepTag, deps.LinkerFlagsFile) Loading Loading @@ -2584,6 +2584,10 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } else { ctx.ModuleErrorf("module %q is not a genrule", depName) } case CrtBeginDepTag: depPaths.CrtBegin = append(depPaths.CrtBegin, android.OutputFileForModule(ctx, dep, "")) case CrtEndDepTag: depPaths.CrtEnd = append(depPaths.CrtEnd, android.OutputFileForModule(ctx, dep, "")) } return } Loading Loading @@ -2896,9 +2900,9 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { case objDepTag: depPaths.Objs.objFiles = append(depPaths.Objs.objFiles, linkFile.Path()) case CrtBeginDepTag: depPaths.CrtBegin = linkFile depPaths.CrtBegin = append(depPaths.CrtBegin, linkFile.Path()) case CrtEndDepTag: depPaths.CrtEnd = linkFile depPaths.CrtEnd = append(depPaths.CrtEnd, linkFile.Path()) case dynamicLinkerDepTag: depPaths.DynamicLinker = linkFile } Loading
cc/library.go +2 −2 Original line number Diff line number Diff line Loading @@ -1175,8 +1175,8 @@ func (library *libraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps { deps.ReexportStaticLibHeaders = append(deps.ReexportStaticLibHeaders, library.StaticProperties.Static.Export_static_lib_headers...) } else if library.shared() { if ctx.toolchain().Bionic() && !Bool(library.baseLinker.Properties.Nocrt) { deps.CrtBegin = "crtbegin_so" deps.CrtEnd = "crtend_so" deps.CrtBegin = []string{"crtbegin_so"} deps.CrtEnd = []string{"crtend_so"} } deps.WholeStaticLibs = append(deps.WholeStaticLibs, library.SharedProperties.Shared.Whole_static_libs...) deps.StaticLibs = append(deps.StaticLibs, library.SharedProperties.Shared.Static_libs...) Loading