[llvm-commits] [compiler-rt] r157574 - /compiler-rt/trunk/lib/profile/GCDAProfiling.c
Bill Wendling
isanbard at gmail.com
Mon May 28 03:09:01 PDT 2012
Author: void
Date: Mon May 28 05:09:01 2012
New Revision: 157574
URL: http://llvm.org/viewvc/llvm-project?rev=157574&view=rev
Log:
Add support for the GCOV_PREFIX_STRIP env variable which tries to strip off the first 'n' directories from the filename.
Modified:
compiler-rt/trunk/lib/profile/GCDAProfiling.c
Modified: compiler-rt/trunk/lib/profile/GCDAProfiling.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=157574&r1=157573&r2=157574&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/GCDAProfiling.c (original)
+++ compiler-rt/trunk/lib/profile/GCDAProfiling.c Mon May 28 05:09:01 2012
@@ -67,20 +67,39 @@
}
static char *mangle_filename(const char *orig_filename) {
- /* TODO: handle GCOV_PREFIX_STRIP */
char *filename = 0;
int prefix_len = 0;
+ int prefix_strip = 0;
+ int level = 0;
+ const char *fname = orig_filename, *ptr = NULL;
const char *prefix = getenv("GCOV_PREFIX");
+ const char *tmp = getenv("GCOV_PREFIX_STRIP");
- if (!prefix || prefix[0] != '/') /* Ignore non-absolute paths */
+ if (!prefix)
return strdup(orig_filename);
+ if (tmp) {
+ prefix_strip = atoi(tmp);
+
+ /* Negative GCOV_PREFIX_STRIP values are ignored */
+ if (prefix_strip < 0)
+ prefix_strip = 0;
+ }
+
prefix_len = strlen(prefix);
filename = malloc(prefix_len + 1 + strlen(orig_filename) + 1);
strcpy(filename, prefix);
+
if (prefix[prefix_len - 1] != '/')
strcat(filename, "/");
- strcat(filename, orig_filename);
+
+ for (ptr = fname + 1; *ptr != '\0' && level < prefix_strip; ++ptr) {
+ if (*ptr != '/') continue;
+ fname = ptr;
+ ++level;
+ }
+
+ strcat(filename, fname);
return filename;
}
More information about the llvm-commits
mailing list