diff options
-rw-r--r-- | Android.mk | 8 | ||||
-rw-r--r-- | include/keymaster/google_keymaster_utils.h | 14 |
2 files changed, 11 insertions, 11 deletions
@@ -19,8 +19,6 @@ LOCAL_PATH := $(call my-dir) # GoogleKeymaster implementation, e.g. one running in TrustZone. ## include $(CLEAR_VARS) -# Disable clang until we find a way to suppress clang optmization in google_keymaster_utils.h. -LOCAL_CLANG := false LOCAL_MODULE:= libkeymaster_messages LOCAL_SRC_FILES:= \ authorization_set.cpp \ @@ -43,8 +41,6 @@ include $(BUILD_SHARED_LIBRARY) # function-based keymaster HAL API to the message-based GoogleKeymaster API. ### include $(CLEAR_VARS) -# Disable clang until we find a way to suppress clang optmization in google_keymaster_utils.h. -LOCAL_CLANG := false LOCAL_MODULE:= libkeymaster LOCAL_SRC_FILES:= \ aead_mode_operation.cpp \ @@ -74,6 +70,8 @@ LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include LOCAL_SHARED_LIBRARIES := libcrypto LOCAL_CFLAGS = -Wall -Werror +# Ignore benigh warnings for now. +LOCAL_CLANG_CFLAGS += -Wno-error=unused-private-field LOCAL_MODULE_TAGS := optional LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/include LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk @@ -93,6 +91,8 @@ LOCAL_SRC_FILES := \ LOCAL_C_INCLUDES := \ system/security/keystore LOCAL_CFLAGS = -Wall -Werror +# Ignore benigh warnings for now. +LOCAL_CLANG_CFLAGS += -Wno-error=unused-const-variable LOCAL_SHARED_LIBRARIES := libkeymaster liblog LOCAL_MODULE_TAGS := optional LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk diff --git a/include/keymaster/google_keymaster_utils.h b/include/keymaster/google_keymaster_utils.h index bba0c36..a14449c 100644 --- a/include/keymaster/google_keymaster_utils.h +++ b/include/keymaster/google_keymaster_utils.h @@ -114,17 +114,17 @@ template <typename T, size_t N> inline bool array_contains(const T (&a)[N], T va * optimized away. This is important because we often need to wipe blocks of sensitive data from * memory. As an additional convenience, this implementation avoids writing to NULL pointers. */ -#ifdef KEYMASTER_CLANG_TEST_BUILD -#define OPTIMIZE(x) -#else // not KEYMASTER_CLANG_TEST_BUILD -#define OPTIMIZE(x) __attribute__((optimize(x))) -#endif // not KEYMASTER_CLANG_TEST_BUILD -inline OPTIMIZE("O0") void* memset_s(void* s, int c, size_t n) { +#ifdef __clang__ +#define OPTNONE __attribute__((optnone)) +#else // not __clang__ +#define OPTNONE __attribute__((optimize("O0"))) +#endif // not __clang__ +inline OPTNONE void* memset_s(void* s, int c, size_t n) { if (!s) return s; return memset(s, c, n); } -#undef OPTIMIZE +#undef OPTNONE /** * Variant of memcmp that has the same runtime regardless of whether the data matches (i.e. doesn't |