> Все их GPL_ONLY и пр. комментарии и #pragma существуют лишь в программном
> коде. Когда ты передаёшь управление бинарному модулю по абсолютному адресу (вызов
> функции) никаких GPL_ONLY не существует.Если ты вызываешь функцию - ты с ней линкуешься, увы. Единственный случай когда возможны поблажки - syscalls. Потому что програмеры решили что считать это линковкой будет слишком уж жестоко. Но это их собственное решение. GPL не запрещает дать дополнительные права, как то - вызов GPLного кода через интерфейс syscalls без требования сорцов программы.
Или ты хочешь сказать что ты можешь взять у MS винду, вгрузить их библы в память и забить на EULA, если ты сам адреса посчитал? Удачи, юридический отдел тебе объяснит в чем ты не прав.
> И нет никакой юридической возможности запретить передачу управления бинарному коду из другого
> бинарного кода, написав про лицензии, применяемые к исходному коду.
Эти выеживания не дают прав на сторонний код и его вызовы. Единственное что разрешает использовать код - лицензия. И там написано то что написано. Если тебе это не нравится - ну не используй тогда этот код.
> Т.е. нельзя написать что-то в духе "запрещено вызывать функции скомпилированного
> GPL-кода из скомпилированного не-GPL-кода".
Закон об авторских правах запрещает ВООБЩЕ ВСЕ, по умолчанию. Поэтому дописывать не требуется. Если автор явно не разрешил - извини, но...
> GPL_ONLY относится к исходному коду, компонуемому в одну программу.
Авторское право распостраняется и на исходники и на бинари. Более того, термин "линковка" к исходным текстам технически неприменим. Линкер оперирует именно бинарными файлами, как раз решая какие символы по каким адресам будут. С чего ты взял что динамическая линковка дает тебе какие-то бонусные права - неизвестно. Но GPL_ONLY - это такой формальный индикатор что у разработчиков нулевая терпимость и ты можешь быть вызван ими в суд. Нвидии есть что терять, поэтому они предпочли сами написать свои реализации функций помеченных как GPL_ONLY.
> Напр. ядро Линукс монолитное. После компиляции получается один большой бинарник.
А модули - динамическая линковка с этим бинарником. Сюрприз. С чего ты решил что уровень индирекции дает какие-то права на линковку - не очень понятно.
> в виде блоба, который на этапе компоновки объединяется с остальным кодом,
> что позволяет из блоба обращаться к функциям ядра.
Он насколько я помню поставляется все-таки в виде сорцов, но с проприетарной лицензией. И таким гражданам GPL_ONLY функции недоступны, потому что разработчики считают это нарушением их лицензий. Ты конечно можешь попробовать на халяву проскочить, но если тебя засудят за это - извини.
> на этапе компоновке возникает ошибка "GPL-incompatible module nvidia.ko uses GPL-only
> symbol KERNEL_FUNCTION_NAME".
Ну то-есть линковка все-таки происходила и была попытка нарушить лицензию. Скажите спасибо что ядро зарубило, иначе разработчики могли бы с чистой совестью тащить проклятого пирата в суд, как описано в законах об авторских правах.
> По сути, nVidia поставили перед выбором: или открыть драйвера или перестать поддерживать
> Линукс. Зачем? Хороший вопрос...
Затем что проприетарщики понимают только тем же калибром по тому же месту.