Fix ToolchainLdflags calls

Instead of having the baseCompiler adjust the Ldflags, teach
objectLinker about ToolchainLdflags. And don't assume that
ToolchainLdflags will work for Clang too, add a ToolchainClangLdflags
call.

Change-Id: I5f546e46f32edf3fcf75a44bee2c5ee103bc5de3
diff --git a/cc/cc.go b/cc/cc.go
index 9f582cb..56655b9 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1014,7 +1014,6 @@
 	} else {
 		flags.GlobalFlags = append(flags.GlobalFlags, toolchain.ToolchainCflags())
 	}
-	flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainLdflags())
 
 	if !ctx.sdk() {
 		if ctx.Host() && !flags.Clang {
@@ -1153,7 +1152,9 @@
 		}
 	}
 
-	if !flags.Clang {
+	if flags.Clang {
+		flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainClangLdflags())
+	} else {
 		flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainLdflags())
 	}
 
@@ -1544,6 +1545,12 @@
 }
 
 func (*objectLinker) flags(ctx ModuleContext, flags Flags) Flags {
+	if flags.Clang {
+		flags.LdFlags = append(flags.LdFlags, ctx.toolchain().ToolchainClangLdflags())
+	} else {
+		flags.LdFlags = append(flags.LdFlags, ctx.toolchain().ToolchainLdflags())
+	}
+
 	return flags
 }
 
diff --git a/cc/mips64_device.go b/cc/mips64_device.go
index 8e433c6..65e6e26 100644
--- a/cc/mips64_device.go
+++ b/cc/mips64_device.go
@@ -147,10 +147,6 @@
 	return mips64GccVersion
 }
 
-func (t *toolchainMips64) ToolchainLdflags() string {
-	return ""
-}
-
 func (t *toolchainMips64) ToolchainCflags() string {
 	return t.toolchainCflags
 }
diff --git a/cc/toolchain.go b/cc/toolchain.go
index 1f51384..397ec09 100644
--- a/cc/toolchain.go
+++ b/cc/toolchain.go
@@ -60,6 +60,7 @@
 	ClangSupported() bool
 	ClangTriple() string
 	ToolchainClangCflags() string
+	ToolchainClangLdflags() string
 	ClangAsflags() string
 	ClangCflags() string
 	ClangCppflags() string
@@ -104,6 +105,10 @@
 	return ""
 }
 
+func (toolchainBase) ToolchainClangLdflags() string {
+	return ""
+}
+
 func (toolchainBase) ClangSupported() bool {
 	return true
 }