I notice that libobjc have a different exception than all of the other ones
which have an exception to the GPL. Is there is a reason behind this?
The different between the libobjc exception and the one in libgcc/ libstdc++ is that
the exception only takes into account when all sources were compiled with GCC.
I believe if you researched this, you would find that the derive from a common ancestor, and that libobjc just fell behind.
Here is rcsdiff -r1.1 -r1.158 libgcc2.c from oldgcc:
< /* As a special exception, if you link this library with files
< compiled with GCC to produce an executable, this does not cause
< the resulting executable to be covered by the GNU General Public License.
---
> /* As a special exception, if you link this library with other files,
> some of which are compiled with GCC, to produce an executable,
> this library does not by itself cause the resulting executable
> to be covered by the GNU General Public License.
which shows some of the history.
You can update to the current canonical spelling in libgcc2.c.