GPL requirements vs. "some of which are compiled with GCC" terms in special exceptions?
Mark Millard
marklmi at yahoo.com
Sun Oct 14 02:55:10 UTC 2018
On 2018-Oct-13, at 7:40 PM, Mark Millard <marklmi at yahoo.com> wrote:
> On 2018-Oct-13, at 10:15 AM, David Chisnall <theraven at FreeBSD.org> wrote:
>
>> This is a known problem with the GCC runtime libraries. GCC 4.3 and later have a much better exemption (which talks about any eligible compilation process, rather than being compiled with GCC), but those are GPLv3 and so unacceptable for FreeBSD.
>
> I see. Good to know.
Hmm. As of head -r339076 the src.conf man page says:
WITHOUT_LLVM_LIBUNWIND
Set to use GCC's stack unwinder (instead of LLVM's libunwind).
This is a default setting on arm/arm, arm/armv6, arm/armv7,
powerpc/powerpc, powerpc/powerpc64, powerpc/powerpcspe and
sparc64/sparc64.
I believe arm/armv7, arm/armv6, and arm/arm are using clang for such
vintages:
WITH_CLANG_BOOTSTRAP
Set to build the Clang C/C++ compiler during the bootstrap phase
of the build.
This is a default setting on amd64/amd64, arm/arm, arm/armv6,
arm/armv7, arm64/aarch64 and i386/i386.
But may be the man page is just out of date for WITHOUT_LLVM_LIBUNWIND ?
>> I don’t believe that we are using any of those files on platforms where clang is the default system compiler. LLVM’s libUnwind should be able to handle PowerPC on Linux, so it’s worth checking if this is the case on FreeBSD.
>
> Last I tried llvm's libunwind for powerpc64 was back in 2016-Dec/2017-Jan.
> See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=215039 . There was also
> the llvm submittal 31590.
>
> I might try it again at some point. But clang and llvm have other issues for
> use for buildworld buildkernel as well as I understand. (But I'm doing some
> new experiments these days.)
>
> I've no clue if llvm's libunwind is intended to be compliant with the
> powerpc64 and powerpc ABIs that FreeBSD bases itself on for the powerpc
> family.
>
>>> On 13 Oct 2018, at 18:12, Mark Millard via freebsd-toolchain <freebsd-toolchain at freebsd.org> wrote:
>>>
>>> While investigating powerpc64 C++ exception handling for
>>> builds under devel/powerpc64-gcc I ran into the following
>>> in /usr/src/contrib/gcc/unwind-dw2-fde-glibc.c :
>>>
>>> /* As a special exception, if you link this library with other files,
>>> some of which are compiled with GCC, to produce an executable,
>>> this library does not by itself cause the resulting executable
>>> to be covered by the GNU General Public License.
>>> This exception does not however invalidate any other reasons why
>>> the executable file might be covered by the GNU General Public License. */
>>>
>>> So in contexts were clang/llvm is used to exclusion . . . are
>>> any such files in use? (I happen to be using devel/powerpc64-gcc at
>>> the moment.)
>>>
>>> For me this has no real implications: I do not distribute
>>> my experiments. But I was surprised by what I read.
>>>
>>> Looking I find:
>>>
>>> # grep -r "some of which are compiled with GCC" /usr/src/* | more
>>> /usr/src/contrib/gcc/config/i386/gthr-win32.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/crtend.asm: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/fde-glibc.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/crtbegin.asm: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/lib1funcs.asm: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/crtfastmath.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/ia64/unwind-ia64.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/mips/mips16.S: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/config/vxlib.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/libgcc2.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-posix95.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-posix.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-posix.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gbl-ctors.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-gnat.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-rtems.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-vxworks.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-dce.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-nks.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-tpf.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-aix.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-lynx.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-solaris.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gcov-io.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-gnat.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-single.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/gthr-win32.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/tsystem.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/typeclass.h: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/unwind-dw2-fde-glibc.c: some of which are compiled with GCC, to produce an executable,
>>> /usr/src/contrib/gcc/unwind-dw2-fde-darwin.c: some of which are compiled with GCC, to produce an executable,
>>
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-toolchain
mailing list