Index: dietlibc-0.32/diet.c =================================================================== --- dietlibc-0.32.orig/diet.c 2009-03-17 00:17:58.000000000 +0100 +++ dietlibc-0.32/diet.c 2009-10-02 14:12:14.306929201 +0200 @@ -132,7 +132,12 @@ } } { - char *cc=argv[1]; + char *cc; + if (!strcmp(argv[1],"ccache")) { + cc=argv[2]; + } else { + cc=argv[1]; + } char *tmp=strchr(cc,0)-2; char *tmp2,*tmp3; if (tmp<cc) goto donttouch; @@ -144,7 +149,7 @@ if (tmp3<tmp2) tmp2=tmp3; if (tmp2-cc>90) error("platform name too long!\n"); shortplatform=platform+len; - memmove(shortplatform,argv[1],(size_t)(tmp2-cc)); + memmove(shortplatform,cc,(size_t)(tmp2-cc)); platform[tmp2-cc+len]=0; if (shortplatform[0]=='i' && shortplatform[2]=='8' && shortplatform[3]=='6') shortplatform[1]='3'; } else { @@ -291,6 +296,9 @@ dest=newargv; *dest++=argv[1]; + if (strcmp(argv[1],"ccache") == 0) { + *dest++=argv[2]; + } if (argv[2]) { if (!strcmp(argv[2],"-V")) { *dest++=argv[2]; @@ -300,9 +308,9 @@ } else if (!memcmp(argv[2],"-V",2)) { *dest++=argv[2]; ++argv; - --argc; } } + #ifndef __DYN_LIB if (_link) { *dest++=(char*)nostdlib; *dest++=dashstatic; *dest++=dashL; } #else @@ -320,7 +328,15 @@ #ifdef WANT_DYNAMIC if (_link) { *dest++=d; } #endif - for (i=2; i<argc; ++i) { + if (strcmp(argv[1],"ccache") == 0) { + i=3; + } else { + i=2; + } + for (i; i<argc; ++i) { + if (strstr(argv[i],"isystem") != NULL) + continue; + if (!strcmp(argv[i],"-pthread")) { *dest++="-D_REENTRANT"; if (_link) *dest++="-lpthread"; @@ -333,6 +349,8 @@ continue; } *dest++=argv[i]; + *dest--; + *dest++; } #ifndef __DYN_LIB if (compile || _link) {