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
>>> <[email protected]> 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)
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "[email protected]"