mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Create the parent directories to place the .gcda files in if they don't exist.
That's kinda weird because the .gcno files are supposed to already be there, but libgcov does this and somehow Google has managed to depend on it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130879 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
baf717a08a
commit
5e436b3b0e
@ -24,6 +24,8 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* #define DEBUG_GCDAPROFILING */
|
||||
|
||||
@ -64,6 +66,21 @@ static char *mangle_filename(const char *orig_filename) {
|
||||
return filename;
|
||||
}
|
||||
|
||||
static void recursive_mkdir(const char *filename) {
|
||||
char *pathname;
|
||||
int i, e;
|
||||
|
||||
for (i = 1, e = strlen(filename); i != e; ++i) {
|
||||
if (filename[i] == '/') {
|
||||
pathname = malloc(i + 1);
|
||||
strncpy(pathname, filename, i);
|
||||
pathname[i] = '\0';
|
||||
mkdir(pathname, 0750); /* some of these will fail, ignore it. */
|
||||
free(pathname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* --- LLVM line counter API ---
|
||||
*/
|
||||
@ -75,6 +92,7 @@ static char *mangle_filename(const char *orig_filename) {
|
||||
void llvm_gcda_start_file(const char *orig_filename) {
|
||||
char *filename;
|
||||
filename = mangle_filename(orig_filename);
|
||||
recursive_mkdir(filename);
|
||||
output_file = fopen(filename, "wb");
|
||||
|
||||
/* gcda file, version 404*, stamp LLVM. */
|
||||
|
Loading…
Reference in New Issue
Block a user