New 'as' port: GPL requirements?

Simon Richter Simon.Richter@hogyros.de
Mon Nov 7 18:25:00 GMT 2005
Hello,

John Moran wrote:

> Summary: I want to modify an existing GPL-ed program (gas) such that it 
> makes calls to proprietary library 'A'. I'm not the copyright holder of 
> 'A', and there is no chance that the copyright holder will allow 'A' to 
> be GPL'ed. 'A' is linked dynamically at runtime. Question: does the GPL 
> allow me to do this (or, to be precise, does it allow me to distribute 
> the modified 'gas')?

No, as you cannot offer the complete source code to the modified 'gas' 
binary to anyone who has obtained a binary.

> So, for a dynamic call to library A, this points to combination rather 
> than aggregation. However, 'linked together in a shared address space' 
> is not well-defined, and 'almost surely' is not helpful.

Well, in order to be able to make calls into the library, you need to 
map it into your process's address space, which it then shares with the 
library. Whether that mapping results as a result of a linker combining 
the objects and creating loader instructions or as a result of the 
program opening the file and telling the kernel to mmap() it at some 
address does not matter in this context.

> This is more interesting. In this case, two-way communication is 
> impossible, since I can't modify library 'A'. gas makes function calls 
> to 'A', and not vice-versa. There are no shared data structures.

There are, namely the ones you pass parameters and return values in.

> In fact, the idea that making a call from a GPL'ed 
> program into a library somehow converts the library into an extension of 
> the GPL'ed program seems, to me anyway, to be utterly bizarre. The 
> library is an independent entity that is unrelated to the calling 
> program. We've all written code that calls, for example, 'fopen' - does 
> that mean that we've all extended 'fopen'?

Most likely you have created an extended version of fopen() that is able 
to open a specific type of file and provides higher-level functions to 
access the data contained within the file in a structured manner. So 
basically, the answer is yes, your program is an extension (which is why 
the GNU C library has a different license that allows programs to link 
it without imposing restrictions on the license of the program).

You may want to think about this from the POV of the GNU developers. The 
goal is to create an operating system for which the entire source code 
is available and licensed such that noone can ever retroactively shut 
down access to it (once it's out, it's out). If it were acceptable to 
link closed-source libraries, then this would no longer be true.

    Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 307 bytes
Desc: OpenPGP digital signature
URL: <https://sourceware.org/pipermail/binutils/attachments/20051107/f27bc3a4/attachment.sig>


More information about the Binutils mailing list