After researching GNAT's Ada compiler licensing, I'm very confused. I understand AdaCore's GPL 3 license requires distributing the source if it's linked to the runtime, while FSF's GPL 1 offers an exemption from the restriction, as described below:
GPL (no linking exception)
gnat-ce - GNAT Community edition. A release of AdaCore GNAT for free software developers, hobbyists, and students. The run-time libraries provided with GNAT Community are licensed under GPLv3 without linking exception. It supports Ada 2012 only.
GPL (with linking exception)
fsf-gnat - Free Software Foundation compiler for the Ada programming language which forms part of the GNU Compiler Collection. It supports all versions of the language, i.e. Ada 2012, Ada 2005, Ada 95 and Ada 83.
It's unclear to me, however, if the two distributions code bases are the same or different for Ada 2012. To add to the confusion, I've encountered BSD distributions of GNAT, which is odd since BSD has its own license. If the code bases are different, to what extent are the differences?
If they're the same, how can the two licenses seemingly contradict each other? Specifically, how is it possible to change the runtime restriction by another party by merely redistributing the same code under another license? I was under the impression that only the copyright holder can do so, which leads to my last question. What stops any developer from changing the license?