diff --git a/cc/builder.go b/cc/builder.go
index b61d672..78fe435 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -184,8 +184,8 @@
 // Generate a rule for compiling multiple .o files, plus static libraries, whole static libraries,
 // and shared libraires, to a shared library (.so) or dynamic executable
 func TransformObjToDynamicBinary(ctx common.AndroidModuleContext,
-	objFiles, sharedLibs, staticLibs, wholeStaticLibs []string, crtBegin, crtEnd string,
-	flags builderFlags, outputFile string) {
+	objFiles, sharedLibs, staticLibs, lateStaticLibs, wholeStaticLibs []string,
+	crtBegin, crtEnd string, flags builderFlags, outputFile string) {
 
 	var ldCmd string
 	if flags.clang {
@@ -218,6 +218,8 @@
 		ldDirs = append(ldDirs, dir)
 	}
 
+	libFlagsList = append(libFlagsList, lateStaticLibs...)
+
 	deps := []string{ldCmd}
 	deps = append(deps, sharedLibs...)
 	deps = append(deps, staticLibs...)
diff --git a/cc/cc.go b/cc/cc.go
index 0b595ec..98c328f 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -276,7 +276,7 @@
 }
 
 type ccDeps struct {
-	staticLibs, sharedLibs, wholeStaticLibs, objFiles, includeDirs []string
+	staticLibs, sharedLibs, lateStaticLibs, wholeStaticLibs, objFiles, includeDirs []string
 
 	crtBegin, crtEnd string
 }
@@ -641,7 +641,7 @@
 		ctx.AddVariationDependencies([]blueprint.Variation{{"link", "shared"}}, c.systemSharedLibs()...)
 		ctx.AddVariationDependencies([]blueprint.Variation{{"link", "static"}},
 			"libcompiler_rt-extras",
-			//"libgcov",
+			"libgcov",
 			"libatomic",
 			"libgcc")
 
@@ -659,8 +659,6 @@
 	return deps
 }
 
-var implicitStaticLibs = []string{"libcompiler_rt-extras" /*"libgcov",*/, "libatomic", "libgcc"}
-
 func (c *ccDynamic) collectDeps(ctx common.AndroidModuleContext, flags ccFlags) (ccDeps, ccFlags) {
 	var newIncludeDirs []string
 
@@ -677,10 +675,16 @@
 
 	if ctx.Arch().HostOrDevice.Device() {
 		var staticLibs []string
-		staticLibNames := implicitStaticLibs
+		staticLibNames := []string{"libcompiler_rt-extras"}
 		_, staticLibs, newIncludeDirs = c.collectDepsFromList(ctx, staticLibNames)
 		deps.staticLibs = append(deps.staticLibs, staticLibs...)
 		deps.includeDirs = append(deps.includeDirs, newIncludeDirs...)
+
+		// libgcc and libatomic have to be last on the command line
+		staticLibNames = []string{"libgcov", "libatomic", "libgcc"}
+		_, staticLibs, newIncludeDirs = c.collectDepsFromList(ctx, staticLibNames)
+		deps.lateStaticLibs = append(deps.lateStaticLibs, staticLibs...)
+		deps.includeDirs = append(deps.includeDirs, newIncludeDirs...)
 	}
 
 	ctx.VisitDirectDeps(func(m blueprint.Module) {
@@ -889,8 +893,9 @@
 
 	outputFile := filepath.Join(common.ModuleOutDir(ctx), ctx.ModuleName()+sharedLibraryExtension)
 
-	TransformObjToDynamicBinary(ctx, objFiles, deps.sharedLibs, deps.staticLibs, deps.wholeStaticLibs,
-		deps.crtBegin, deps.crtEnd, ccFlagsToBuilderFlags(flags), outputFile)
+	TransformObjToDynamicBinary(ctx, objFiles, deps.sharedLibs, deps.staticLibs,
+		deps.lateStaticLibs, deps.wholeStaticLibs, deps.crtBegin, deps.crtEnd,
+		ccFlagsToBuilderFlags(flags), outputFile)
 
 	c.out = outputFile
 	c.exportIncludeDirs = pathtools.PrefixPaths(c.properties.Export_include_dirs,
@@ -1059,8 +1064,9 @@
 
 	outputFile := filepath.Join(common.ModuleOutDir(ctx), c.getStem(ctx))
 
-	TransformObjToDynamicBinary(ctx, objFiles, deps.sharedLibs, deps.staticLibs, deps.wholeStaticLibs,
-		deps.crtBegin, deps.crtEnd, ccFlagsToBuilderFlags(flags), outputFile)
+	TransformObjToDynamicBinary(ctx, objFiles, deps.sharedLibs, deps.staticLibs,
+		deps.lateStaticLibs, deps.wholeStaticLibs, deps.crtBegin, deps.crtEnd,
+		ccFlagsToBuilderFlags(flags), outputFile)
 
 	ctx.InstallFile("bin", outputFile)
 }
