In GCC 4.3.3, libgcc was licensed under GPLv2-or-later with extra
permissions.

http://gcc.gnu.org/viewcvs/tags/gcc_4_3_3_release/gcc/config/i386/linux-unwind.h?revision=143643&view=markup

In the recent GCC 4.4 branch, this has been changed to
GPLv3-or-later with the rather complicated GCC Runtime Library
Exception version 3.1.  The future GCC 4.4.0 release seems likely
to be under these terms.

http://gcc.gnu.org/viewcvs/branches/gcc-4_4-branch/gcc/config/i386/linux-unwind.h?revision=145866&view=markup
http://gcc.gnu.org/viewcvs/branches/gcc-4_4-branch/COPYING.RUNTIME?revision=145866&view=markup
http://www.gnu.org/licenses/gcc-exception.html
http://www.gnu.org/licenses/gcc-exception-faq.html

Now suppose we build ELinks with GCC 4.4.0 and the Compilation
Process is Eligible as described in the GCC exception.  With the
GCC exception, the Free Software Foundation then appears to give
permission to distribute the resulting binary under terms of our
choice.  ELinks being licensed under GPLv2 only, those terms
would have to be GPLv2.

However, it seems to me that subsection 3. a) of GPLv2 requires
all the source code corresponding to the binary to be available
under GPLv2.  If some of the source code comes from libgcc and
that is under GPLv3-or-later, then that requirement of GPLv2
becomes difficult to satisfy.  The GCC exception only gives
permission to propagate output from the compiler; it does not
grant any permission on the source code.

GPLv2 section 3 has the "major components" exception but I don't
see how that could apply when ELinks and GCC are being
distributed as part of the same operating system.

What to do?

(a) Find some creative interpretation that allows binaries to be
    distributed.

(b) Stop distributing binaries.  Well we don't have any at
    http://elinks.cz/ anyway.

(c) Keep compiling ELinks with older versions of GCC.

(d) Switch to some other compiler entirely.  Perhaps TCC, or the
    pcc in NetBSD, or LLVM.

(e) Relicense ELinks so it becomes GPLv3 compatible: most likely
    under GPLv2-or-later.  This would also allow using
    libsmbclient.  In the process, it might be feasible to add an
    exception for OpenSSL too.  (There are notes in AUTHORS about
    some people already allowing such relicensing.)

(f) Relicense ELinks so it becomes GCC compatible even though not
    GPLv3 compatible in general.  For example, add an exception
    saying that ELinks binaries can be distributed even if they
    contain compiler-specific library code whose source is not
    available under GPLv2, as long as that source is available
    under some other version of GPL.

(g) Convince the FSF to allow distributing GCC runtime library
    sources under some GPLv2 compatible licence.  I guess it
    can't be the same licence as in GCC 4.3.3 because of the
    perceived problem with plugins.  Plain GPLv2 without
    exceptions might have the best chance of being accepted by
    the FSF but it would also nullify any OpenSSL exception added
    to ELinks in the future.

(h) Make sure that ELinks does not use any libraries from GCC.
    With "gcc -Wl,-M", I'm seeing __divdi3, __moddi3, and
    __udivdi3 from libgcc.a; __do_global_dtors_aux from
    crtbegin.o; and __do_global_ctors_aux from crtend.o.

Attachment: pgpyWc8n9zRlB.pgp
Description: PGP signature

_______________________________________________
elinks-dev mailing list
elinks-dev@linuxfromscratch.org
http://linuxfromscratch.org/mailman/listinfo/elinks-dev

Reply via email to