17c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar//===-- sanitizer_symbolizer_test.cc --------------------------------------===// 27c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// 37c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// The LLVM Compiler Infrastructure 47c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// 57c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source 67c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// License. See LICENSE.TXT for details. 77c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// 87c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar//===----------------------------------------------------------------------===// 97c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// 107c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// Tests for sanitizer_symbolizer.h and sanitizer_symbolizer_internal.h 117c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// 127c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar//===----------------------------------------------------------------------===// 137c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 147c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include "sanitizer_common/sanitizer_allocator_internal.h" 157c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include "sanitizer_common/sanitizer_symbolizer_internal.h" 167c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include "gtest/gtest.h" 177c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 187c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainarnamespace __sanitizer { 197c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 207c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarTEST(Symbolizer, ExtractToken) { 217c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar char *token; 227c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar const char *rest; 237c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 247c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar rest = ExtractToken("a;b;c", ";", &token); 257c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("a", token); 267c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("b;c", rest); 277c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar InternalFree(token); 287c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 297c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar rest = ExtractToken("aaa-bbb.ccc", ";.-*", &token); 307c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("aaa", token); 317c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("bbb.ccc", rest); 327c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar InternalFree(token); 337c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 347c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 357c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarTEST(Symbolizer, ExtractInt) { 367c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar int token; 377c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar const char *rest = ExtractInt("123,456;789", ";,", &token); 387c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_EQ(123, token); 397c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("456;789", rest); 407c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 417c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 427c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarTEST(Symbolizer, ExtractUptr) { 437c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar uptr token; 447c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar const char *rest = ExtractUptr("123,456;789", ";,", &token); 457c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_EQ(123U, token); 467c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("456;789", rest); 477c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 487c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 497c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga NainarTEST(Symbolizer, ExtractTokenUpToDelimiter) { 507c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar char *token; 517c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar const char *rest = 527c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar ExtractTokenUpToDelimiter("aaa-+-bbb-+-ccc", "-+-", &token); 537c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("aaa", token); 547c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar EXPECT_STREQ("bbb-+-ccc", rest); 557c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar InternalFree(token); 567c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 577c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 58c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar#if !SANITIZER_WINDOWS 59c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga NainarTEST(Symbolizer, DemangleSwiftAndCXX) { 60c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar // Swift names are not demangled in default llvm build because Swift 61c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar // runtime is not linked in. 62c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar EXPECT_STREQ("_TtSd", DemangleSwiftAndCXX("_TtSd")); 63c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar // Check that the rest demangles properly. 64c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar EXPECT_STREQ("f1(char*, int)", DemangleSwiftAndCXX("_Z2f1Pci")); 65c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar EXPECT_STREQ("foo", DemangleSwiftAndCXX("foo")); 66c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar EXPECT_STREQ("", DemangleSwiftAndCXX("")); 67c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar} 68c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar#endif 69c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 707c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} // namespace __sanitizer 71