svn commit: r336299 - in head: include lib/msun lib/msun/ld128 lib/msun/ld80 lib/msun/man lib/msun/src

Mark Millard marklmi at yahoo.com
Fri Sep 21 02:03:36 UTC 2018


[I've got a historical WERROR= used in my amd64-gcc based builds.]

On 2018-Sep-20, at 6:05 PM, Mark Millard <marklmi at yahoo.com> wrote:


> Li-Wen Hsu lwhsu at freebsd.org wrote on
> Thu Sep 20 22:10:19 UTC 2018 :
> 
>> On Thu, Sep 20, 2018 at 10:06 PM Mark Johnston <markj at freebsd.org> wrote:
>>> 
>>> On Thu, Sep 20, 2018 at 09:39:24AM -0700, John Baldwin wrote:
>>>> On 9/20/18 8:54 AM, Mark Johnston wrote:
>>>>> On Sun, Jul 15, 2018 at 12:23:11AM +0000, Matt Macy wrote:
>>>>>> Author: mmacy
>>>>>> Date: Sun Jul 15 00:23:10 2018
>>>>>> New Revision: 336299
>>>>>> URL: https://svnweb.freebsd.org/changeset/base/336299
>>>>>> 
>>>>>> Log:
>>>>>>  msun: add ld80/ld128 powl, cpow, cpowf, cpowl from openbsd
>>>>>> 
>>>>>>  This corresponds to the latest status (hasn't changed in 9+
>>>>>>  years) from openbsd of ld80/ld128 powl, and source cpowf, cpow,
>>>>>>  cpowl (the complex power functions for float complex, double
>>>>>>  complex, and long double complex) which are required for C99
>>>>>>  compliance and were missing from FreeBSD. Also required for
>>>>>>  some numerical codes using complex numbered Hamiltonians.
>>>>>> 
>>>>>>  Thanks to jhb for tracking down the issue with making
>>>>>>  weak_reference compile on powerpc.
>>>>>> 
>>>>>>  When asked to review, bde said "I don't like it" - but
>>>>>>  provided no actionable feedback or superior implementations.
>>>>>> 
>>>>>>  Discussed with: jhb
>>>>>>  Submitted by: jmd
>>>>>>  Differential Revision: https://reviews.freebsd.org/D15919
>>>>> 
>>>>> This seems to have broken the gcc build:
>>>>> https://ci.freebsd.org/job/FreeBSD-head-amd64-gcc/
>>>>> 
>>>>> /workspace/src/lib/msun/ld80/e_powl.c:275:1: error: floating constant exceeds range of 'long double' [-Werror=overflow]
>>>>>  if( y >= LDBL_MAX )
>>>>>  ^~
>>>> 
>>>> Which architecture?  i386 doesn't get build with i386-xtoolchain-gcc pending
>>>> some patches I haven't yet posted for review related to the weirdness we do
>>>> with floating point on i386.
>>> 
>>> This is the -m32 build on amd64.  I haven't tested it myself, but Mark
>>> Millard noted that the issue might be fixed by a gcc update.
>>> 
>> 
>> I suspect this.  Each build is in a fresh created jail with the latest
>> branch of packages from pkg.freebsd.org.
>> 
>> At the beginning of (warning: 56MB file)
>> https://ci.freebsd.org/job/FreeBSD-head-amd64-gcc/7262/consoleText
>> 
>> There is:
>> 
>> New packages to be INSTALLED:
>>        amd64-xtoolchain-gcc: 0.4_1
>>        amd64-gcc: 6.4.0_2
>>        mpfr: 4.0.1
>>        gmp: 6.1.2
>>        mpc: 1.1.0_1
>>        amd64-binutils: 2.30_5,1
>> 
>> Number of packages to be installed: 6
>> 
>> Or is there a newer version of devel/amd64-gcc I am not aware?
> 
> I wonder when ci.freebsd.org started using "amd64-gcc: 6.4.0_2".
> Looking: https://ci.freebsd.org/job/FreeBSD-head-amd64-gcc/6665/consoleText
> from back on 2018-Jul-26. This suggests being based on
> -r475319 (2018-Jul-25) for devel/powerpc-gcc (the master
> port).
> 
> Looks like -r475290 (the float.h removal) is the first version
> with PORT_REVISION being 2, as are all later versions at
> this point. Technically -r476273 (2018-Aug-2) removed a typo from
> -r475290 but at the time the typo seemed to not make an operational
> difference. Still, ci.freebsd.org seems to not be
> using the version with the typo fixed.
> 
> Looks like system head being built was -r338831. (I'm only at
> -r338675 so far.)
> 
> I've started a buildworld buildkernel based -on head -r3338675
> and based on master port:
> 
> # svnlite diff /usr/ports/devel/powerpc64-gcc/ | more
> Index: /usr/ports/devel/powerpc64-gcc/Makefile
> ===================================================================
> --- /usr/ports/devel/powerpc64-gcc/Makefile     (revision 480180)
> +++ /usr/ports/devel/powerpc64-gcc/Makefile     (working copy)
> @@ -16,7 +16,8 @@
> LIB_DEPENDS=   libgmp.so:math/gmp \
>                libmpfr.so:math/mpfr \
>                libmpc.so:math/mpc
> -BUILD_DEPENDS= ${BU_PREFIX}-as:devel/${PKGNAMEPREFIX}binutils
> +BUILD_DEPENDS= ${BU_PREFIX}-as:devel/${PKGNAMEPREFIX}binutils \
> +               objdump:devel/binutils
> RUN_DEPENDS=   ${BU_PREFIX}-as:devel/${PKGNAMEPREFIX}binutils
> 
> USES=  gmake iconv libtool tar:xz makeinfo compiler
> 
> which does not have -r478209 involved ( un-breaking
> devel/aarch64-none-elf-gcc ).
> 
> # svnlite diff /usr/ports/devel/amd64-gcc/ | more
> #
> 
> So no differences there (relative to -r480180).
> 
> 
> (The objdump is from having built systems based on
> WITHOUT_BINUTILS and WITHOUT_BINUTILS_BOOTSTRAP at times
> but some devel/*-gcc builds trying to use objdump in the
> configuration part of gcc's build.)
> 
> My past builds using at or after -r475290 for various system
> head revisions have completed without being stopped by an
> error but it has been a while. I will see for this one, but
> it is only into building lib32 so far.
> 
> (Note: My port builds are via devel/poudriere-devel tied to
> my /usr/ports/ and to my
> /usr/obj/DESTDIRs/clang-amd64-installworld-poud/ that is installed
> from the same build that I install and boot from, just with
> distrib-dirs distribution DB_FROM_SRC=1 also involved with the
> installworld .)
> 

The build completed.

The difference in what I get as a result is that I get:

/usr/src/lib/msun/ld80/e_powl.c: In function 'powl':
/usr/src/lib/msun/ld80/e_powl.c:275:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:286:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:297:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:321:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c: In function 'powil':
/usr/src/lib/msun/ld80/e_powl.c:577:3: warning: floating constant exceeds range of 'long double' [-Woverflow]
. . .
/usr/src/lib/msun/ld80/e_powl.c: In function 'powl':
/usr/src/lib/msun/ld80/e_powl.c:275:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:286:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:297:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:321:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c: In function 'powil':
/usr/src/lib/msun/ld80/e_powl.c:577:3: warning: floating constant exceeds range of 'long double' [-Woverflow]
. . .
/usr/src/lib/msun/ld80/e_powl.c: In function 'powl':
/usr/src/lib/msun/ld80/e_powl.c:275:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:286:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:297:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c:321:1: warning: floating constant exceeds range of 'long double' [-Woverflow]
/usr/src/lib/msun/ld80/e_powl.c: In function 'powil':
/usr/src/lib/msun/ld80/e_powl.c:577:3: warning: floating constant exceeds range of 'long double' [-Woverflow]

from my (historically driven) use of:

# Avoid db_trace.o getting:
#   calling '__builtin_frame_address' with a nonzero argument is unsafe
# as an error? Other such points as well.
WERROR=

in my equivalent of src.conf : src.conf.amd64-xtoolchain-gcc.amd64-host .

I had given up on avoiding use of WERROR for fairly-modern-gcc-based
long ago. May be things are better now and I should disable that.

Anyway, the messages in both types of builds seem to fit with John
Baldwin's notes about his proposed patch of sys/x86/include/float.h :
overflow by lack of truncation making the value bigger.

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the svn-src-head mailing list