This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Results of "downloading compressed program images" request


In article <Pine.BSF.3.96.980109073907.9587B-100000.cygnus.crossgcc@vespucci.advicom.net> you write:
>I still have to ask, "If the GPL or LGPL can be satisfied by an
>application (embedded or otherwise) without any special considerations by
>the developers, then why do libgcc and the gnat run-time have special
>exceptions?"

This is because libgcc is fundamentally different than an application or an
end-user library.  It is a support library for an application.  Applications
are GPLed.  End-user libraries are LGPLed.  And application support code
(such as libgcc, bison parser skeleton, etc) get the libgcc licence.

The intent here is that we do not want to put any restrictions on users of
a GPLed application who just want to run the program.  libgcc is linked with
all programs compiled by gcc.  If libgcc was GPLed, then this would mean
that any program compiled by gcc would fall under the GPL because it was linked
with GPLed code.  This is clearly not useful.  If libgcc was LGPLed, then this
would mean that any program compiled by gcc would fall under the LGPL because
it was linked with LGPLed code.  This is also clearly not useful.  Hence, we
have a special licence for libgcc so that people who use gcc just to compile
programs do not have to worry about license restrictions.  A similar argument
applies to the bison parser skeleton, which is linked with any program that
uses bison to create a parser.

Things are less clear for runtime libraries.  The GNAT runtime for instance
could be either LGPLed or have the libgcc license.  GNU libc could be either
LPGLed or have the libgcc license.  The FSF prefers the LGPL for libraries,
because it benefits the FSF.  People using libraries in commercial applications
prefer the libgcc license, because it makes it easier to use the libraries
in commercial environments.  Over time, there has been a shift from GPL to LGPL
to libgcc license for some of those libraries which get the most commercial
use.  The C++ runtime for instance started out with the GPL and now has the
libgcc license.  Similarly, I would expect the GNAT runtime to have the libgcc
license.  GNU libc still has the LGPL I believe, but it is not commonly used in
commercial environments.  Neither Cygnus nor RTEMS use GNU libc for instance.
They use a BSD derived library to avoid problems with using the LGPL in
embedded applications.

By the way, the LGPL is not convenient for embedded applications.  The
example I like to use is washing machines, because there exist washing machines
whose control code was compiled by gcc.  If any LGPL code was used in them,
then the manufacturer would have to distribute a floppy disk containing an
unlinked version of the control program.  This would be very confusing to
the end customer, to get a floppy disk along with their brand new washing
machine.  It is best to avoid this problem by never using any LGPL libraries
in embedded applications.

Jim