summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk8
-rw-r--r--include/keymaster/google_keymaster_utils.h14
2 files changed, 11 insertions, 11 deletions
diff --git a/Android.mk b/Android.mk
index 2d2db04..f24bebc 100644
--- a/Android.mk
+++ b/Android.mk
@@ -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