Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Oct 2018 19:54:58 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        David Chisnall <theraven@FreeBSD.org>
Cc:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>
Subject:   Re: GPL requirements vs. "some of which are compiled with GCC" terms in special exceptions?
Message-ID:  <F39B293E-1E88-4378-A3E4-38F5FB470571@yahoo.com>
In-Reply-To: <D57DACD6-1523-4D56-B8F1-F85B23693E77@yahoo.com>
References:  <5449BAA6-E022-4DE4-870A-8AE132A6F9FA@yahoo.com> <61B6C299-2F93-4678-8928-3CABDFED6623@FreeBSD.org> <D57DACD6-1523-4D56-B8F1-F85B23693E77@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help


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:
>=20
>> 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.
>=20
> 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=E2=80=99t believe that we are using any of those files on =
platforms where clang is the default system compiler.  LLVM=E2=80=99s =
libUnwind should be able to handle PowerPC on Linux, so it=E2=80=99s =
worth checking if this is the case on FreeBSD.
>=20
> 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=3D215039 . There =
was also
> the llvm submittal 31590.
>=20
> 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.)
>=20
> 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.
>=20
>>> On 13 Oct 2018, at 18:12, Mark Millard via freebsd-toolchain =
<freebsd-toolchain@freebsd.org> wrote:
>>>=20
>>> 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 :
>>>=20
>>> /* 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.  */
>>>=20
>>> 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.)
>>>=20
>>> For me this has no real implications: I do not distribute
>>> my experiments. But I was surprised by what I read.
>>>=20
>>> Looking I find:
>>>=20
>>> # 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,
>>=20


=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F39B293E-1E88-4378-A3E4-38F5FB470571>