diff --git a/cc/config/global.go b/cc/config/global.go index a27246e72..9ce689653 100644 --- a/cc/config/global.go +++ b/cc/config/global.go @@ -150,8 +150,22 @@ func init() { pctx.StaticVariable("HostGlobalLdflags", strings.Join(hostGlobalLdflags, " ")) pctx.StaticVariable("HostGlobalLldflags", strings.Join(hostGlobalLldflags, " ")) - pctx.StaticVariable("CommonClangGlobalCflags", - strings.Join(append(ClangFilterUnknownCflags(commonGlobalCflags), "${ClangExtraCflags}"), " ")) + pctx.VariableFunc("CommonClangGlobalCflags", func(ctx android.PackageVarContext) string { + flags := ClangFilterUnknownCflags(commonGlobalCflags) + flags = append(flags, "${ClangExtraCflags}") + + // http://b/131390872 + // Automatically initialize any uninitialized stack variables. + // Prefer zero-init if both options are set. + if ctx.Config().IsEnvTrue("AUTO_ZERO_INITIALIZE") { + flags = append(flags, "-ftrivial-auto-var-init=zero -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang") + } else if ctx.Config().IsEnvTrue("AUTO_PATTERN_INITIALIZE") { + flags = append(flags, "-ftrivial-auto-var-init=pattern") + } + + return strings.Join(flags, " ") + }) + pctx.VariableFunc("DeviceClangGlobalCflags", func(ctx android.PackageVarContext) string { if ctx.Config().Fuchsia() { return strings.Join(ClangFilterUnknownCflags(deviceGlobalCflags), " ")