Add support for sanitizer property
Add a new feature to cc modules that adds the cflags and libraries
necessary to implement AddressSanitizer, ThreadSanitizer, and
UndefinedBehaviorSanitizer.
Change-Id: Ibe5ffadc7ece56080a2521f2c7c00da9ef712584
diff --git a/cc/util.go b/cc/util.go
index 1d27f73..70433b1 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -40,14 +40,18 @@
return common.JoinWithPrefix(names, "-l")
}
-func inList(s string, list []string) bool {
- for _, l := range list {
+func indexList(s string, list []string) int {
+ for i, l := range list {
if l == s {
- return true
+ return i
}
}
- return false
+ return -1
+}
+
+func inList(s string, list []string) bool {
+ return indexList(s, list) != -1
}
func filterList(list []string, filter []string) (remainder []string, filtered []string) {
@@ -62,6 +66,15 @@
return
}
+func removeFromList(s string, list []string) (bool, []string) {
+ i := indexList(s, list)
+ if i != -1 {
+ return true, append(list[:i], list[i+1:]...)
+ } else {
+ return false, list
+ }
+}
+
var libNameRegexp = regexp.MustCompile(`^lib(.*)$`)
func moduleToLibName(module string) (string, error) {
@@ -81,6 +94,7 @@
cppFlags: strings.Join(in.CppFlags, " "),
yaccFlags: strings.Join(in.YaccFlags, " "),
ldFlags: strings.Join(in.LdFlags, " "),
+ libFlags: strings.Join(in.libFlags, " "),
nocrt: in.Nocrt,
toolchain: in.Toolchain,
clang: in.Clang,