Re: git: 7ecd99fa424d - main - Build compiler-rt against libunwind, not libcxxrt

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Wed, 09 Mar 2022 22:55:05 UTC
On 9 Mar 2022, at 23:50, Dimitry Andric <dim@FreeBSD.org> wrote:
> 
> On 9 Mar 2022, at 22:45, John Baldwin <jhb@FreeBSD.org> wrote:
>> 
>> On 3/9/22 1:30 PM, Dimitry Andric wrote:
>>> The branch main has been updated by dim:
>>> URL: https://cgit.FreeBSD.org/src/commit/?id=7ecd99fa424df001028c5cddc52d25b29232f1af
>>> commit 7ecd99fa424df001028c5cddc52d25b29232f1af
>>> Author:     Dimitry Andric <dim@FreeBSD.org>
>>> AuthorDate: 2022-03-09 21:23:35 +0000
>>> Commit:     Dimitry Andric <dim@FreeBSD.org>
>>> CommitDate: 2022-03-09 21:23:35 +0000
>>>    Build compiler-rt against libunwind, not libcxxrt
>>>         Parts of compiler-rt are also built for libgcc_eh and libgcc_s, and
>>>    these were already pointing to the libunwind unwind.h. For the sake of
>>>    consistency, also build compiler-rt itself against the libunwind
>>>    unwind.h, not the libcxxrt one.
>> 
>> Do we even need the explicit -I at all now that we install unwind.h into /usr/include?
> 
> That depends on the build order; if libcompiler_rt is built before libunwind's headers are installed into ${WORLDTMP}, it might look at the wrong file?
> 
> I guess this is just a 'better safe than sorry' approach. That said, for libcxxrt we used to have the unwind headers only in the C++ include path, so maybe this was a way to get that to work?

Btw, I was triggered by Conrad's comment in contrib/llvm-project/compiler-rt/lib/builtins/gcc_personality_v0.c (added in https://cgit.freebsd.org/src/commit/?id=c8b5e3de39bcf):

/*
 * XXX On FreeBSD, this file is compiled into three libraries:
 *   - libcompiler_rt
 *   - libgcc_eh
 *   - libgcc_s
 *
 * In the former, the include path points to the contrib/libcxxrt/unwind-arm.h
 * copy of unwind.h.  In the latter, the include path points to the
 * contrib/libunwind/include/unwind.h header (LLVM libunwind).
 *
 * Neither (seemingly redundant) variant of unwind.h needs the redefinitions
 * provided in the "helpful" header below, and libcxxrt's unwind-arm.h provides
 * *no* useful distinguishing macros, so just forcibly disable the helper
 * header on FreeBSD.
 */

So at least there is no more inconsistency now! Whether commit c8b5e3de39bcf can be reverted is another matter, though.

-Dimitry