This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: New 'as' port: GPL requirements?


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

Attachment: signature.asc
Description: OpenPGP digital signature


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