On Mon, 09 Dec 2019 13:10:11 +0300, Konstantin Andreev said: > The universal approach that always works in this and many similar cases is just > to replace the instrumented binary by your interception shell script. > E.g. rename gcc to gcc.hide (generally, moving into another location may not > work) and setup 'gcc' script that does what you want: replaces `-c' with the > `-E', replaces `-o' argument, etc ..., calls gcc.hide to preprocess source then > calls gcc.hide with original non-modified command line. > This is cumbersome process, you can break some things, And in fact, what you may want to do is have your script invoke gcc *twice*, once with -E, and then a second time with -c, because otherwise the build will die the first time it tries to link together two or more non-existent .o files. Using 'make -k' *might* also work, but will leave the build log output littered with a *lot* of error messages. Or explain why you're doing this - there may be a simpler way to achieve your goal. For instance, if you're trying to build a cross-reference of what .c files include what .h directly or indirectly, there's already specialized tools for doing that sort of thing, such as 'cxref'.