13d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar/*===- InstrProfilingUtil.c - Support library for PGO instrumentation -----===*\ 23d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* 33d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* The LLVM Compiler Infrastructure 43d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* 53d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* This file is distributed under the University of Illinois Open Source 63d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* License. See LICENSE.TXT for details. 73d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar|* 83d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar\*===----------------------------------------------------------------------===*/ 93d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar 103d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#include "InstrProfilingUtil.h" 113d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#include "InstrProfiling.h" 123d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar 133d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#ifdef _WIN32 143d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#include <direct.h> 153d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#elif I386_FREEBSD 163d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainarint mkdir(const char*, unsigned short); 173d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#else 183d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#include <sys/stat.h> 193d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#include <sys/types.h> 203d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#endif 213d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar 223d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga NainarCOMPILER_RT_VISIBILITY 233d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainarvoid __llvm_profile_recursive_mkdir(char *path) { 243d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar int i; 253d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar 263d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar for (i = 1; path[i] != '\0'; ++i) { 273d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar if (path[i] != '/') continue; 283d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar path[i] = '\0'; 293d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#ifdef _WIN32 303d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar _mkdir(path); 313d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#else 323d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar mkdir(path, 0755); /* Some of these will fail, ignore it. */ 333d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar#endif 343d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar path[i] = '/'; 353d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar } 363d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar} 37