1cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne//===-- sanitizer_nolibc_test.cc ------------------------------------------===// 2cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// 3cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// The LLVM Compiler Infrastructure 4cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// 5cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// This file is distributed under the University of Illinois Open Source 6cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// License. See LICENSE.TXT for details. 7cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// 8cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne//===----------------------------------------------------------------------===// 9cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// 10cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// This file is a part of ThreadSanitizer/AddressSanitizer runtime. 11cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// Tests for libc independence of sanitizer_common. 12cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne// 13cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne//===----------------------------------------------------------------------===// 14cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne 15cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne#include "sanitizer_common/sanitizer_platform.h" 16cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne 17cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne#include "gtest/gtest.h" 18cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne 19cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne#include <stdlib.h> 20cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne 21cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourneextern const char *argv0; 22cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne 23cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne#if SANITIZER_LINUX && defined(__x86_64__) 24cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter CollingbourneTEST(SanitizerCommon, NolibcMain) { 25cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne std::string NolibcTestPath = argv0; 26cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne NolibcTestPath += "-Nolibc"; 27cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne int status = system(NolibcTestPath.c_str()); 28cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne EXPECT_EQ(true, WIFEXITED(status)); 29cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne EXPECT_EQ(0, WEXITSTATUS(status)); 30cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne} 31cc8ed30ebfb4ff6f9d9c7e77760dd5c7841a1af8Peter Collingbourne#endif 32