Merge "Publish Soong configuration to Make variables"
diff --git a/cc/cc.go b/cc/cc.go
index db2066a..e650435 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1540,16 +1540,16 @@
func (library *libraryLinker) linkStatic(ctx ModuleContext,
flags Flags, deps PathDeps, objFiles common.Paths) common.Path {
- objFiles = append(objFiles, deps.WholeStaticLibObjFiles...)
- library.objFiles = objFiles
+ library.objFiles = append(common.Paths{}, deps.WholeStaticLibObjFiles...)
+ library.objFiles = append(library.objFiles, objFiles...)
outputFile := common.PathForModuleOut(ctx,
ctx.ModuleName()+library.Properties.VariantName+staticLibraryExtension)
if ctx.Darwin() {
- TransformDarwinObjToStaticLib(ctx, objFiles, flagsToBuilderFlags(flags), outputFile)
+ TransformDarwinObjToStaticLib(ctx, library.objFiles, flagsToBuilderFlags(flags), outputFile)
} else {
- TransformObjToStaticLib(ctx, objFiles, flagsToBuilderFlags(flags), outputFile)
+ TransformObjToStaticLib(ctx, library.objFiles, flagsToBuilderFlags(flags), outputFile)
}
library.wholeStaticMissingDeps = ctx.GetMissingDependencies()
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 670443b..94c56ce 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -59,6 +59,7 @@
All_undefined bool `android:"arch_variant"`
Misc_undefined []string `android:"arch_variant"`
Coverage bool `android:"arch_variant"`
+ SafeStack bool `android:"arch_variant"`
// value to pass to -fsantitize-recover=
Recover []string
@@ -127,15 +128,20 @@
sanitize.Properties.Sanitize.Coverage = true
}
+ if found, globalSanitizers = removeFromList("safe-stack", globalSanitizers); found {
+ sanitize.Properties.Sanitize.SafeStack = true
+ }
+
if len(globalSanitizers) > 0 {
ctx.ModuleErrorf("unknown global sanitizer option %s", globalSanitizers[0])
}
sanitize.Properties.SanitizerEnabled = true
}
- if !ctx.toolchain().Is64Bit() && sanitize.Properties.Sanitize.Thread {
- // TSAN is not supported on 32-bit architectures
+ if !ctx.toolchain().Is64Bit() {
+ // TSAN and SafeStack are not supported on 32-bit architectures
sanitize.Properties.Sanitize.Thread = false
+ sanitize.Properties.Sanitize.SafeStack = false
// TODO(ccross): error for compile_multilib = "32"?
}
@@ -239,6 +245,10 @@
flags.CFlags = append(flags.CFlags, "-fsanitize-coverage=edge,indirect-calls,8bit-counters,trace-cmp")
}
+ if sanitize.Properties.Sanitize.SafeStack {
+ sanitizers = append(sanitizers, "safe-stack")
+ }
+
if sanitize.Properties.Sanitize.Recover != nil {
flags.CFlags = append(flags.CFlags, "-fsanitize-recover="+
strings.Join(sanitize.Properties.Sanitize.Recover, ","))