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