diff --git a/cc/arm_device.go b/cc/arm_device.go
index f168811..8fe5ce6 100644
--- a/cc/arm_device.go
+++ b/cc/arm_device.go
@@ -8,6 +8,10 @@
 )
 
 var (
+	armToolchainCflags = []string{
+		"-mthumb-interwork",
+	}
+
 	armCflags = []string{
 		"-fno-exceptions", // from build/core/combo/select.mk
 		"-Wno-multichar",  // from build/core/combo/select.mk
@@ -26,8 +30,6 @@
 		"-fno-builtin-sin",
 		"-fno-strict-volatile-bitfields",
 
-		"-mthumb-interwork",
-
 		// TARGET_RELEASE_CFLAGS
 		"-DNDEBUG",
 		"-g",
@@ -139,6 +141,7 @@
 
 	pctx.StaticVariable("armGccTriple", "arm-linux-androideabi")
 
+	pctx.StaticVariable("armToolchainCflags", strings.Join(armToolchainCflags, " "))
 	pctx.StaticVariable("armCflags", strings.Join(armCflags, " "))
 	pctx.StaticVariable("armLdflags", strings.Join(armLdflags, " "))
 	pctx.StaticVariable("armCppflags", strings.Join(armCppflags, " "))
@@ -168,6 +171,7 @@
 	pctx.StaticVariable("armCortexA15Cflags", strings.Join(armCpuVariantCflags["cortex-a15"], " "))
 
 	// Clang cflags
+	pctx.StaticVariable("armToolchainClangCflags", strings.Join(clangFilterUnknownCflags(armToolchainCflags), " "))
 	pctx.StaticVariable("armClangCflags", strings.Join(clangFilterUnknownCflags(armCflags), " "))
 	pctx.StaticVariable("armClangLdflags", strings.Join(clangFilterUnknownCflags(armLdflags), " "))
 	pctx.StaticVariable("armClangCppflags", strings.Join(clangFilterUnknownCflags(armCppflags), " "))
@@ -233,7 +237,8 @@
 
 type toolchainArm struct {
 	toolchain32Bit
-	cflags, ldflags, clangCflags string
+	ldflags                               string
+	toolchainCflags, toolchainClangCflags string
 }
 
 func (t *toolchainArm) Name() string {
@@ -252,8 +257,12 @@
 	return "${armGccVersion}"
 }
 
+func (t *toolchainArm) ToolchainCflags() string {
+	return t.toolchainCflags
+}
+
 func (t *toolchainArm) Cflags() string {
-	return t.cflags
+	return "${armCflags}"
 }
 
 func (t *toolchainArm) Cppflags() string {
@@ -283,8 +292,12 @@
 	return "${armGccTriple}"
 }
 
+func (t *toolchainArm) ToolchainClangCflags() string {
+	return t.toolchainClangCflags
+}
+
 func (t *toolchainArm) ClangCflags() string {
-	return t.clangCflags
+	return "${armClangCflags}"
 }
 
 func (t *toolchainArm) ClangCppflags() string {
@@ -317,8 +330,8 @@
 	}
 
 	return &toolchainArm{
-		cflags: strings.Join([]string{
-			"${armCflags}",
+		toolchainCflags: strings.Join([]string{
+			"${armToolchainCflags}",
 			armArchVariantCflagsVar[arch.ArchVariant],
 			armCpuVariantCflagsVar[arch.CpuVariant],
 		}, " "),
@@ -326,8 +339,8 @@
 			"${armLdflags}",
 			fixCortexA8,
 		}, " "),
-		clangCflags: strings.Join([]string{
-			"${armClangCflags}",
+		toolchainClangCflags: strings.Join([]string{
+			"${armToolchainClangCflags}",
 			armClangArchVariantCflagsVar[arch.ArchVariant],
 			armClangCpuVariantCflagsVar[arch.CpuVariant],
 		}, " "),
diff --git a/cc/cc.go b/cc/cc.go
index 42b0f2e..b1bc069 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -590,6 +590,13 @@
 		}
 	}
 
+	if flags.Clang {
+		flags.GlobalFlags = append(flags.GlobalFlags, toolchain.ToolchainClangCflags())
+	} else {
+		flags.GlobalFlags = append(flags.GlobalFlags, toolchain.ToolchainCflags())
+		flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainLdflags())
+	}
+
 	flags = c.ccModuleType().flags(ctx, flags)
 
 	if c.Properties.Sdk_version == "" {
diff --git a/cc/toolchain.go b/cc/toolchain.go
index 8a8fc2d..71a8979 100644
--- a/cc/toolchain.go
+++ b/cc/toolchain.go
@@ -39,6 +39,8 @@
 	GccRoot() string
 	GccTriple() string
 	GccVersion() string
+	ToolchainCflags() string
+	ToolchainLdflags() string
 	Cflags() string
 	Cppflags() string
 	Ldflags() string
@@ -46,6 +48,7 @@
 	InstructionSetFlags(string) (string, error)
 
 	ClangTriple() string
+	ToolchainClangCflags() string
 	ClangCflags() string
 	ClangCppflags() string
 	ClangLdflags() string
@@ -71,6 +74,18 @@
 	return "", nil
 }
 
+func (toolchainBase) ToolchainCflags() string {
+	return ""
+}
+
+func (toolchainBase) ToolchainLdflags() string {
+	return ""
+}
+
+func (toolchainBase) ToolchainClangCflags() string {
+	return ""
+}
+
 type toolchain64Bit struct {
 	toolchainBase
 }
