[ccache] ccache - .d files with absolute system header paths
Karanam Suryanarayana Rao Venkata Krishna
venkatakrishna.karanamsuryana at gmail.com
Wed Sep 6 09:28:36 UTC 2017
Hello,
I think I discovered a scenario that results in cache misses in spite of
using CCACHE_BASEDIR.
Consider the following command:
CCACHE_BASEDIR=$PWD /bin/bash -c "ccache clang++
-fdebug-prefix-map=/proc/self/cwd= -g -c -MD -MF hello.d -o hello.o
hello.cpp"
It seems to me that is is perfectly alright to ask for debug prefix mapping
like: "-fdebug-prefix-map=/proc/self/cwd="
Unfortunately, ccache is ending up hashing gnu_getcwd(); thus, even though
we use CCACHE_BASEDIR setting, such a cache cannot be shared by other
users' from different workspaces resulting in cache misses.
I tested the following code to fix this problem(there by making such a
cache sharable) I'm looking forward to your feedback on this.
--- ccache-3.3_orig/ccache-3.3/ccache.c 2016-08-27 16:57:18.000000000
+0200
+++ ccache-3.3/ccache.c 2017-09-06 11:21:06.065818333 +0200
@@ -1525,6 +1525,11 @@
free(cwd);
cwd = dir;
}
+ if (strcmp(new, "") == 0) {
+ cc_log("forReview: empty string on the
right size of debug_prefix_map: %s", debug_prefix_map);
+ cwd = format("%s/", ".");
+ cc_log("forReview: Hence, hashing '%s'
as CWD", cwd);
+ }
free(old);
free(new);
If the string after "=" in the mapping is null string, then, I hash "./".
regards,
Venkat.
On Mon, Sep 4, 2017 at 4:24 PM, Joel Rosdahl <joel at rosdahl.net> wrote:
> Hi Karanam,
>
> > From just ccache's point of view, is there a way to force relative
> paths into the
> > .d files at all?
>
> Yes, ccache version 3.3 and newer knows how to do this. See the release
> notes for ccache 3.3: http://ccache.samba.org/
> releasenotes.html#_ccache_3_3
>
> -- Joel
>
More information about the ccache
mailing list