gnu-misc-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Microsoft's Linux Kernel Code Drop Result of GPL Violation


From: Hyman Rosen
Subject: Re: Microsoft's Linux Kernel Code Drop Result of GPL Violation
Date: Tue, 28 Jul 2009 18:44:05 -0400
User-agent: Thunderbird 2.0.0.22 (Windows/20090605)

Alexander Terekhov wrote:
> Try reading the GPLv3. Do you understand it?

Yes, of course.

Hyman Rosen wrote:
Florian Weimer wrote:
Unless the component accompanies the executable.
I still don't know what this means.

I don't know what FW means when he says "unless..." and how
this applies to the system library exception.

"The “System Libraries” of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, ..."

The canonical representative of this is libc. This definition of
a system library describes a library (a set of compiled object
files) which implement access to the services of an operating
system component. The operating system component itself does not
use this library, but other programs which want to use the services
of the component link with this library and request the services
through function calls to the routines in this library.

For example, the system call "write" in UNIX is described in the
C programming language as 'int write(int fd, char *buffer, int len)'
meaning that it takes three arguments - an integer representing the
output device or file to which to write, the address of a buffer
containing the data to be written, and an integer giving the number
of bytes of data to write - and returns an integer representing the
number of bytes actually written.

This function is implemented by one of the object files in libc. A
typical implementation (at least in the old days) would be to move
the three parameters into machine registers, put a code representing
the 'write' system call into another register, then execute a
machine 'trap' instruction, which causes a fault that invokes a
handler within the operating system. That handler examines the
machine registers, discovers that a 'write' has been requested,
carries out the operation, sets up a register with the return value,
and returns control back to the program.

Notice that the 'write' routine in libc has no idea of how to do
any actual writing to devices. It merely serves as a vehicle for
the program to interface with the operating system.

“aggregate”

This is the GPL shovelware exception. It says that GPLed programs
can be included in collective works such as GNU/Linux distributions.
It has nothing to do with the system library exception or any sort
of program linking.

"A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be included
in conveying the object code work."

Going back to the system library exception, when you distribute a
GPLed work that links with a system library, you don't have to ship
that system library along with the other pieces. The presumption is
that the system library is already present on the target system, so
anyone who wants to build the program there can do so. Copyright
would anyway forbid you from shipping this library unless it was
permitted by its rights holder.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]