This question already has an answer here:
The license (I pick GPLv3 as an example) says:
The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work.
However, it's not clear to me what constitutes a general-purpose tool. Should it be commercially available at the time of licensing? For how long? Should it be available from an independent vendor, or could it be available only from me?
For example, imagine I've built a compiler which doesn't quite respect the language standard (e.g. makes no difference between single and double precision, or treats
(1+2)*3). I could then take a GPL program, modify it to be compatible with my compiler and distribute the binaries along with the source code. Only the source code would be useless, as anyone trying to build it with a standard compiler would not be able to produce a working program. I could even make my compiler commercially available if I have to. Either way, my evil goal is achieved: you will be unable to modify a GPL program, or will have to pay me for the privilege of doing so.
Is this how GPL works, or am I missing something in my argument?