future of sparc64 (was: Making C++11 a hard requirement for FreeBSD)

Ngie Cooper (yaneurabeya) yaneurabeya at gmail.com
Mon Oct 30 08:38:18 UTC 2017


> On Oct 23, 2017, at 13:39, Marius Strobl <marius at freebsd.org> wrote:
> 
> On Sun, Oct 22, 2017 at 10:47:03PM -0700, Ngie Cooper (yaneurabeya) wrote:
>> 
>>> On Oct 10, 2017, at 14:14, Marius Strobl <marius at freebsd.org> wrote:
>>> 
>>> On Sat, Oct 07, 2017 at 12:41:24PM -0500, Mark Linimon wrote:
>>>> 
>>>> All gccs > 4.9 fail to build.  Looking at the logs AFAICT the failure
>>>> is a floating-point exception as soon as the first built binary is run
>>>> during the internal testing.
>>> 
>>> The most plausible cause for that is executables and/or dynamic libraries
>>> not installing the user trap handlers as specified by the libc 64 psABI,
>>> i. e. not call __sparc_utrap_setup(). Do the ports GCCs use their own CRT
>>> nowadays? Do they no longer link libc last? Please provide their linker
>>> invocation. Also, please provide the backtrace of a minimal program
>>> exhibiting that problem.
>> 
>> An idea occurred to me (after having dealt with building things over, and over, and over, this weekend): since we can?t rely on the ABI on ^/head to be stable, why don?t we produce working dynamic/static toolchains on HEAD-1 in ports, then require them for the areas that can?t bootstrap (yet, or at all?) with clang? We?ve already done that with some of our code that?s been deorbited from base (like rsh, etc). I don?t see why making a toolchain based on a stable ABI for architectures that will migrate or will be killed off needs to be a huge undertaking (politically), and needs to hold us back from making progress using a compiler that implements an almost 7 year old C++ spec.
> 
> To be honest, I've no idea what your proposal has to do with the above,
> what it actually is about or why rsh(1) would be a viable example in
> this case given that rsh(1) hardly is a bootstrapping tool. However,
> ABI changes (the above wasn't about a change in ABI, btw.) are just
> one good example why an external toolchain would be a PITA as system
> compiler. Think of when we e. g. turned on TLS in the base compiler
> configurations after having added TLS support to rtld(1). The next
> buildworld ensured that not only the compiler used TLS, but also that
> an rtld(1) capable of TLS will be in place. Now with a similar future
> change and an external toolchain built on HEAD - 1, some additional
> magic would be needed to ensure that binaries built for HEAD use the
> expected ABI and all HEAD components are in sync.
> 
> Generally, I'm fine with moving to an external toolchain for the
> system compiler, but only if it will also be the default for x86
> so the life of tier-2 architectures won't become even harder - both
> politically and technically - as it is now.

(Replying to single-message in thread, since the rest seem to follow the same flow of expressed confusion)

Distilling down my scatterbrained message before: I was suggesting building a cross-compiler with an appropriate target/host tuple as a package, then allowing users to install that package, instead of building the toolchain from scratch every time. This is what you suggested is being worked on by bapt at .

Someone should have realized that gcc 4.2.1 is a dead end at the point anyhow, and clang will need to be bootstrapped from a c++11 capable compiler (which gcc 4.2.1 is not by any means), right? Which means that making binary packages work for the toolchain is a must for 2nd tier architectures if clang is the target compiler (MK_CLANG_BOOTSTRAP==yes), which is the eventual end-goal.

Cheers,
-Ngie
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-sparc64/attachments/20171030/7542eb65/attachment.sig>


More information about the freebsd-sparc64 mailing list