From 1c648b893639d9379e7840660521c38f44e87c71 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Thu, 26 Sep 2019 12:24:45 -0700 Subject: [PATCH] Allow sanitize attribute on cc_objects and propagate sanitize attributes into them. Without this change, we can end up failing to sanitize parts of libraries that are compiled as cc_objects, such as bcm_object.o in boringssl. This is normally harmless (except that the sanitizer would fail to detect bugs in unsanitized code), however boringssl in particular needs to be compiled with HWASAN enabled in all translation units in order to avoid link errors with newer toolchains that support HWASAN global instrumentation. Change-Id: Ib8bd325f76b7852cab435bff79d6945768298a5c --- cc/object.go | 3 ++- cc/sanitize.go | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cc/object.go b/cc/object.go index f619c7923..1f1ac8e1c 100644 --- a/cc/object.go +++ b/cc/object.go @@ -52,8 +52,9 @@ type ObjectLinkerProperties struct { // input to a cc_genrule module. func ObjectFactory() android.Module { module := newBaseModule(android.HostAndDeviceSupported, android.MultilibBoth) + module.sanitize = &sanitize{} module.linker = &objectLinker{ - baseLinker: NewBaseLinker(nil), + baseLinker: NewBaseLinker(module.sanitize), } module.compiler = NewBaseCompiler() diff --git a/cc/sanitize.go b/cc/sanitize.go index 415518c10..c0a7c63e0 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -674,7 +674,7 @@ func (sanitize *sanitize) isSanitizerEnabled(t sanitizerType) bool { func isSanitizableDependencyTag(tag blueprint.DependencyTag) bool { t, ok := tag.(dependencyTag) - return ok && t.library || t == reuseObjTag + return ok && t.library || t == reuseObjTag || t == objDepTag } // Propagate sanitizer requirements down from binaries