On Tue, Feb 11 2020, George Koehler <kern...@gmail.com> wrote:
> On Tue, 11 Feb 2020 15:20:00 +0100
> Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
>
>> fwiw I'm already ok with the diff George sent for ports/devel/llvm.
>> I'm mostly ok with this one but it would be nice to know whether
>> base-clang can rebuild itself.  :)
>
> base-clang can't rebuild itself in the normal way.  I have been
> exchanging mails with Todd Mortimer, who has been testing my diff with
> a faster macppc machine.  The diff changes the ABI between
> /usr/bin/clang and /usr/lib/libc++.so.3.0, so when we install a new
> libc++ built by clang -msvr4-struct-return, but still have a clang
> built as if by -maix-struct-return, then clang crashes and can't
> rebuild itself!  It might be possible to use a static-link clang to
> cross the ABI change.
>
> A backtrace from clang pointed to a function in libc++ that returns a
> std::string::iterator, a small struct where sizeof(iterator) == 4.

So the steps would be:
- build and install a new clang
- bump the major of libc++, build and install it
- rebuild and reinstall clang
- build new snap

Assuming those steps are correct, you could ask Theo to handle the ABI
break.  A note in current.html could be useful too.

> This was not a problem with ports-clang, because we use ports-gcc to
> build ports-clang; and ports-clang uses libestdc++ (from ports-gcc),
> not libc++ (from base).  Both ports-clang and libestdc++ got built by
> gcc -msvr4-struct-return.  --George

Yep.

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to