aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--androidmk/cmd/androidmk/android.go94
-rw-r--r--androidmk/cmd/androidmk/androidmk_test.go14
-rw-r--r--cc/ndk_sysroot.go4
-rw-r--r--cc/rs.go5
4 files changed, 66 insertions, 51 deletions
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 3c3e2a1b..be75041e 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -33,7 +33,8 @@ var rewriteProperties = map[string](func(variableAssignmentContext) error){
"LOCAL_MODULE_STEM": stem,
"LOCAL_MODULE_HOST_OS": hostOs,
"LOCAL_SRC_FILES": srcFiles,
- "LOCAL_SANITIZE": sanitize,
+ "LOCAL_SANITIZE": sanitize(""),
+ "LOCAL_SANITIZE_DIAG": sanitize("diag."),
// composite functions
"LOCAL_MODULE_TAGS": includeVariableIf(bpVariable{"tags", bpparser.ListType}, not(valueDumpEquals("optional"))),
@@ -413,60 +414,63 @@ func srcFiles(ctx variableAssignmentContext) error {
return nil
}
-func sanitize(ctx variableAssignmentContext) error {
- val, err := makeVariableToBlueprint(ctx.file, ctx.mkvalue, bpparser.ListType)
- if err != nil {
- return err
- }
+func sanitize(sub string) func(ctx variableAssignmentContext) error {
+ return func(ctx variableAssignmentContext) error {
+ val, err := makeVariableToBlueprint(ctx.file, ctx.mkvalue, bpparser.ListType)
+ if err != nil {
+ return err
+ }
- lists, err := splitBpList(val, func(value bpparser.Expression) (string, bpparser.Expression, error) {
- switch v := value.(type) {
- case *bpparser.Variable:
- return "vars", value, nil
- case *bpparser.Operator:
- ctx.file.errorf(ctx.mkvalue, "unknown sanitize expression")
- return "unknown", value, nil
- case *bpparser.String:
- switch v.Value {
- case "never", "address", "coverage", "integer", "thread", "undefined":
- bpTrue := &bpparser.Bool{
- Value: true,
+ lists, err := splitBpList(val, func(value bpparser.Expression) (string, bpparser.Expression, error) {
+ switch v := value.(type) {
+ case *bpparser.Variable:
+ return "vars", value, nil
+ case *bpparser.Operator:
+ ctx.file.errorf(ctx.mkvalue, "unknown sanitize expression")
+ return "unknown", value, nil
+ case *bpparser.String:
+ switch v.Value {
+ case "never", "address", "coverage", "integer", "thread", "undefined", "cfi":
+ bpTrue := &bpparser.Bool{
+ Value: true,
+ }
+ return v.Value, bpTrue, nil
+ default:
+ return "misc_undefined", v, nil
}
- return v.Value, bpTrue, nil
default:
- ctx.file.errorf(ctx.mkvalue, "unknown sanitize argument: %s", v.Value)
- return "unknown", value, nil
+ return "", nil, fmt.Errorf("sanitize expected a string, got %s", value.Type())
}
- default:
- return "", nil, fmt.Errorf("sanitize expected a string, got %s", value.Type())
+ })
+ if err != nil {
+ return err
}
- })
- if err != nil {
- return err
- }
- for k, v := range lists {
- if emptyList(v) {
- continue
- }
+ for k, v := range lists {
+ if emptyList(v) {
+ continue
+ }
- switch k {
- case "never", "address", "coverage", "integer", "thread", "undefined":
- err = setVariable(ctx.file, false, ctx.prefix, "sanitize."+k, lists[k].(*bpparser.List).Values[0], true)
- case "unknown":
- // Nothing, we already added the error above
- case "vars":
- fallthrough
- default:
- err = setVariable(ctx.file, true, ctx.prefix, "sanitize", v, true)
- }
+ switch k {
+ case "never", "address", "coverage", "integer", "thread", "undefined", "cfi":
+ err = setVariable(ctx.file, false, ctx.prefix, "sanitize."+sub+k, lists[k].(*bpparser.List).Values[0], true)
+ case "misc_undefined":
+ err = setVariable(ctx.file, false, ctx.prefix, "sanitize."+sub+"misc_undefined", lists[k].(*bpparser.List), true)
+ case "unknown":
+ // Nothing, we already added the error above
+ case "vars":
+ fallthrough
+ default:
+ err = setVariable(ctx.file, true, ctx.prefix, "sanitize", v, true)
+ }
- if err != nil {
- return err
+ if err != nil {
+ return err
+ }
}
- }
- return err
+ return err
+ }
}
func prebuiltClass(ctx variableAssignmentContext) error {
diff --git a/androidmk/cmd/androidmk/androidmk_test.go b/androidmk/cmd/androidmk/androidmk_test.go
index 0c44ea72..7ebc9472 100644
--- a/androidmk/cmd/androidmk/androidmk_test.go
+++ b/androidmk/cmd/androidmk/androidmk_test.go
@@ -285,17 +285,21 @@ cc_library_shared {
desc: "LOCAL_SANITIZE unknown parameter",
in: `
include $(CLEAR_VARS)
-LOCAL_SANITIZE := integer asdf
+LOCAL_SANITIZE := integer cfi asdf
+LOCAL_SANITIZE_DIAG := cfi
LOCAL_SANITIZE_RECOVER := qwert
include $(BUILD_SHARED_LIBRARY)
`,
expected: `
cc_library_shared {
- // ANDROIDMK TRANSLATION ERROR: unknown sanitize argument: asdf
- // integer asdf
sanitize: {
- integer: true,
- recover: ["qwert"],
+ integer: true,
+ cfi: true,
+ misc_undefined: ["asdf"],
+ diag: {
+ cfi: true,
+ },
+ recover: ["qwert"],
},
}
`,
diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go
index 47dda274..2e4e3959 100644
--- a/cc/ndk_sysroot.go
+++ b/cc/ndk_sysroot.go
@@ -90,6 +90,10 @@ func (n *ndkSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) {
installPaths := []string{}
licensePaths := []string{}
ctx.VisitAllModules(func(module blueprint.Module) {
+ if m, ok := module.(android.Module); ok && !m.Enabled() {
+ return
+ }
+
if m, ok := module.(*headerModule); ok {
installPaths = append(installPaths, m.installPaths...)
licensePaths = append(licensePaths, m.licensePath.String())
diff --git a/cc/rs.go b/cc/rs.go
index fda24690..a001f89e 100644
--- a/cc/rs.go
+++ b/cc/rs.go
@@ -108,7 +108,10 @@ func rsFlags(ctx ModuleContext, flags Flags, properties *BaseCompilerProperties)
flags.rsFlags = append(flags.rsFlags, includeDirsToFlags(rootRsIncludeDirs))
flags.GlobalFlags = append(flags.GlobalFlags,
- "-I"+android.PathForModuleGen(ctx, "rs").String())
+ "-I"+android.PathForModuleGen(ctx, "rs").String(),
+ "-Iframeworks/rs",
+ "-Iframeworks/rs/cpp",
+ )
return flags
}