Try to use the CWD if the path to the GCDA output is not available (e.g., the

executable has been moved to another machine). If that's not available
(read-only or something), then exit gracefully.
<rdar://problem/11111686>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153538 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bill Wendling 2012-03-27 21:17:04 +00:00
parent ced8af1107
commit 66e30f8db1

View File

@ -113,6 +113,20 @@ void llvm_gcda_start_file(const char *orig_filename) {
recursive_mkdir(filename); recursive_mkdir(filename);
output_file = fopen(filename, "wb"); output_file = fopen(filename, "wb");
if (!output_file) {
filename[0] = '\0'; /* The size of filename should be big enough. */
char *cptr = strrchr(orig_filename, '/');
strcat(filename, cptr ? cptr + 1 : orig_filename);
output_file = fopen(filename, "wb");
if (!output_file) {
fprintf(stderr, "LLVM profiling runtime: while opening '%s': ",
filename);
perror("");
exit(1);
}
}
/* gcda file, version 404*, stamp LLVM. */ /* gcda file, version 404*, stamp LLVM. */
#ifdef __APPLE__ #ifdef __APPLE__
fwrite("adcg*204MVLL", 12, 1, output_file); fwrite("adcg*204MVLL", 12, 1, output_file);