From 76e99ad68e058bddcf1fa76a24830cf9a07657e6 Mon Sep 17 00:00:00 2001 From: Yi Kong Date: Wed, 18 Sep 2024 18:43:26 +0000 Subject: [PATCH] Enable object-size sanitizer for C++ This was previously disabled due to a bug in libc++'s __tree implementation. That bug has been fixed, so we can now enable this sanitizer. Change-Id: Ibbdfbe843aa02ef31d2a10b0c6a87500b7f60b42 Test: presubmit --- android/config.go | 5 +++++ cc/sanitize.go | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/android/config.go b/android/config.go index b682c2e93..68743acc0 100644 --- a/android/config.go +++ b/android/config.go @@ -238,6 +238,11 @@ func (c Config) ReleaseAconfigFlagDefaultPermission() string { return c.config.productVariables.ReleaseAconfigFlagDefaultPermission } +// Enable object size sanitizer +func (c Config) ReleaseBuildObjectSizeSanitizer() bool { + return c.config.productVariables.GetBuildFlagBool("RELEASE_BUILD_OBJECT_SIZE_SANITIZER") +} + // The flag indicating behavior for the tree wrt building modules or using prebuilts // derived from RELEASE_DEFAULT_MODULE_BUILD_FROM_SOURCE func (c Config) ReleaseDefaultModuleBuildFromSource() bool { diff --git a/cc/sanitize.go b/cc/sanitize.go index 7b0652c38..9754f2369 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -1437,11 +1437,11 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { //"null", //"shift-base", //"signed-integer-overflow", - // TODO(danalbert): Fix UB in libc++'s __tree so we can turn this on. - // https://llvm.org/PR19302 - // http://reviews.llvm.org/D6974 - // "object-size", ) + + if mctx.Config().ReleaseBuildObjectSizeSanitizer() { + sanitizers = append(sanitizers, "object-size") + } } sanitizers = append(sanitizers, sanProps.Misc_undefined...) }