On Friday, 5 February 2016 at 00:03:56 UTC, Chris Wright wrote:
Doing this sort of validation requires build system integration (track the command line arguments that went into producing this object file; find which object files are combined into which targets; run the analysis on that) and costs as much time as compiling the whole project from scratch.

There is no need to take "as much time as compiling the whole project from scratch".

The necessary information is already gathered during the normal course of compilation; all that is required is to actually save it somewhere until link-time, instead of throwing it away.

The time required for the check should be at most O(N log(N)), where N is the number of function and global variable declarations in the project. The space required for the table is O(N). In both cases the constant factors should be quite small.

Developing such a system is nontrivial, so it's not a matter of
conjuring excuses; rather, someone would have to put in
considerable effort to make it work.

Adding any interesting feature to a build system is usually nontrivial, but I still think you're overestimating the cost of this one.

Again, the hard part (finding all the signatures and processing them into a semantically meaningful form) is already being done by the compiler. The results just need to be saved, sorted, and scanned for conflicts.

Reply via email to