
In message 46324857.2020904@freescale.com you wrote:
I really don't want to be arguing the GPL, but I am interested in a technical solution to a problem that is also legally permissible.
Merging two binaries into one, so that A can make function calls into B *is* linking if the function of A depends on the results of the function calls of B.
How do you determine "depends"? If B enables the 2nd Ethernet port, but you never actually use it, then A doesn't really depend on B. Takes these two scenarios:
Depends menas: does not work, or only in a restricted way, without it.
- U-Boot runs the binary application that enables Ethernet 2, but it doesn't load the
driver for Ethernet 2. Therefore, the functioning of U-Boot does not depend on the binary.
Yes, it does, as the function of Ethernet 2 obviously depends on this code.
Linux system calls is an explicitely exported interface so it is OK to use this from application code.
So it's okay for a non-GPL binary to call GPL code, but not the other way around?
Please read the specific licenses. Any code that only uses the exported interfaces can be run under control of the Linux operating system. But you must take care about which liraries you link against. They come with their own licenses; for example, glibc comes under LGPL which explicitely allows linking against Non-GPL code.
If GPL code can link against non-GPL stuff obviosly depends on the licensing of that stuff.
Please do yourself a favour and re-read the GPL.
I don't think just reading the GPL is enough to understand it. Some parts of it are vague, and their interpretations are debatable.
Then please ask a lawyer.
Best regards,
Wolfgang Denk