diff options
author | kosak <kosak@google.com> | 2013-12-03 22:38:22 (GMT) |
---|---|---|
committer | kosak <kosak@google.com> | 2013-12-03 22:38:22 (GMT) |
commit | 37b97d1c93fb8283f8bbf54f5618c1c1e5a4726a (patch) | |
tree | 0949bd9f08f265d8b29d513095775a69964dee0e | |
parent | aa34ae250800af7e98499abba44636503cf99b16 (diff) | |
download | googletest-37b97d1c93fb8283f8bbf54f5618c1c1e5a4726a.zip googletest-37b97d1c93fb8283f8bbf54f5618c1c1e5a4726a.tar.gz googletest-37b97d1c93fb8283f8bbf54f5618c1c1e5a4726a.tar.bz2 |
Add MemorySanitizer annotations in gtest printers. Also remove unused variable kPathSeparatorString.
-rw-r--r-- | include/gtest/internal/gtest-port.h | 13 | ||||
-rw-r--r-- | src/gtest-filepath.cc | 2 | ||||
-rw-r--r-- | src/gtest-printers.cc | 3 |
3 files changed, 16 insertions, 2 deletions
diff --git a/include/gtest/internal/gtest-port.h b/include/gtest/internal/gtest-port.h index dc4fe0c..a6726b4 100644 --- a/include/gtest/internal/gtest-port.h +++ b/include/gtest/internal/gtest-port.h @@ -782,6 +782,19 @@ using ::std::tuple_size; # define GTEST_HAS_CXXABI_H_ 0 #endif +// A function level attribute to disable checking for use of uninitialized +// memory when built with MemorySanitizer. +#if defined(__clang__) +# if __has_feature(memory_sanitizer) +# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \ + __attribute__((no_sanitize_memory)) +# else +# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ +# endif +#else +# define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ +#endif + namespace testing { class Message; diff --git a/src/gtest-filepath.cc b/src/gtest-filepath.cc index 6be58b6..d221cfd 100644 --- a/src/gtest-filepath.cc +++ b/src/gtest-filepath.cc @@ -70,7 +70,6 @@ namespace internal { // of them. const char kPathSeparator = '\\'; const char kAlternatePathSeparator = '/'; -const char kPathSeparatorString[] = "\\"; const char kAlternatePathSeparatorString[] = "/"; # if GTEST_OS_WINDOWS_MOBILE // Windows CE doesn't have a current directory. You should not use @@ -84,7 +83,6 @@ const char kCurrentDirectoryString[] = ".\\"; # endif // GTEST_OS_WINDOWS_MOBILE #else const char kPathSeparator = '/'; -const char kPathSeparatorString[] = "/"; const char kCurrentDirectoryString[] = "./"; #endif // GTEST_OS_WINDOWS diff --git a/src/gtest-printers.cc b/src/gtest-printers.cc index 75fa408..0db5b44 100644 --- a/src/gtest-printers.cc +++ b/src/gtest-printers.cc @@ -56,6 +56,7 @@ namespace { using ::std::ostream; // Prints a segment of bytes in the given object. +GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, size_t count, ostream* os) { char text[5] = ""; @@ -252,6 +253,7 @@ void PrintTo(wchar_t wc, ostream* os) { // The array starts at begin, the length is len, it may include '\0' characters // and may not be NUL-terminated. template <typename CharType> +GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ static void PrintCharsAsStringTo( const CharType* begin, size_t len, ostream* os) { const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\""; @@ -273,6 +275,7 @@ static void PrintCharsAsStringTo( // Prints a (const) char/wchar_t array of 'len' elements, starting at address // 'begin'. CharType must be either char or wchar_t. template <typename CharType> +GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ static void UniversalPrintCharArray( const CharType* begin, size_t len, ostream* os) { // The code |