Put shared library ldflags first

Some obscure modules (like libtest_with_dependency_loop_b_tmp in
bionic/tests/libs/Android.bp) need to override shared library flags like
-Wl,-soname.  Put the defaults first so that the module specific ones
can override them.

Change-Id: Icde9ca2cf76c4f3e3218b6b22033bc81a6755b57
diff --git a/cc/cc.go b/cc/cc.go
index 6be5b64..f169a38 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1491,7 +1491,7 @@
 func (f *flagExporter) exportIncludes(ctx ModuleContext, inc string) {
 	includeDirs := android.PathsForModuleSrc(ctx, f.Properties.Export_include_dirs)
 	for _, dir := range includeDirs.Strings() {
-		f.flags = append(f.flags, inc + dir)
+		f.flags = append(f.flags, inc+dir)
 	}
 }
 
@@ -1613,26 +1613,28 @@
 		if flags.Clang || ctx.Host() {
 			sharedFlag = "-shared"
 		}
+		var f []string
 		if ctx.Device() {
-			flags.LdFlags = append(flags.LdFlags,
+			f = append(f,
 				"-nostdlib",
 				"-Wl,--gc-sections",
 			)
 		}
 
 		if ctx.Darwin() {
-			flags.LdFlags = append(flags.LdFlags,
+			f = append(f,
 				"-dynamiclib",
 				"-single_module",
 				//"-read_only_relocs suppress",
 				"-install_name @rpath/"+libName+flags.Toolchain.ShlibSuffix(),
 			)
 		} else {
-			flags.LdFlags = append(flags.LdFlags,
+			f = append(f,
 				sharedFlag,
-				"-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix(),
-			)
+				"-Wl,-soname,"+libName+flags.Toolchain.ShlibSuffix())
 		}
+
+		flags.LdFlags = append(f, flags.LdFlags...)
 	}
 
 	return flags