Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150106175005.GL4574@brightrain.aerifal.cx>
Date: Tue, 6 Jan 2015 12:50:05 -0500
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: musl-llvm-clang-libc++

On Tue, Jan 06, 2015 at 05:43:13PM +0100, Szabolcs Nagy wrote:
> * Tomasz Sterna <tomek@...oka.com> [2015-01-06 15:31:43 +0100]:
> > You might be interested to know, that I managed to build a
> > musl + LLVM (clang, libc++) based, self hosted system.
> > 
> > The hardest part was to scrub libgcc and libstdc++ dependencies.
> > Using instructions from Wiki[1] and hints from this list[2] and LLVM
> > bugtracker[3] I finally managed to get a self-hosting system able to
> > rebuild itself clean without any GCC help.
> 
> nice
> 
> > It requires a bit arm-twisting to LLVM compiler and libs, but it looks
> > like it works just fine. The musl/libc++/clang++ env is able to build
> > working libc++ and clang++, which I consider GoodEnough(TM) test case.
> 
> i ran http://repo.or.cz/w/libc-test.git on it and it turned up
> some float bugs:
> 
> - musl's FLT_ROUND is wrong: it should reflect the current rounding mode
> (i found this because clang float.h was used when comiling the tests
> instead of musl's which may or may not be a problem)

This behavior is copied from GCC. We'll need to define a new ABI for
the header to provide a runtime-variable value I think. The definition
should probably be removed from bits files _except_ on archs without
fenv; then, the top-level float.h can define it to use the new
runtime-variable value unless it's already defined as a constant by
the bits file.

> - clang does not support c99 fenv and -frounding-math flag so fenv tests
> are broken, but i didnt see incorrect results because of this

GCC is pretty similar here. It doesn't properly support them (even
though it sort of claims to) but things "mostly work" unless you get
unlucky...

> - long double is broken for some reason: strtod, and most long double
> math functions give bad results in some cases, needs more investigation..

That's really ugly/bad... :( Hopefully we can find the cause and get
it fixed soon. Unless this is just a build failure, future
documentation versions (arg, docs are way out of date!) will probably
need to mention that non-latest clang doesn't work for x86[_64] due to
major floating point bugs.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.