Re: CURRENT: Changes in lib/msun/math.h make ports to fail

From: Ulrich Spörlein <uqs_at_FreeBSD.org>
Date: Fri, 12 Jul 2013 17:40:29 +0200
On Fri, 2013-07-12 at 09:02:31 +0200, O. Hartmann wrote:
> 
> Updating CURRENT from r253216 to r253252 triggers an updating of
> several ports to fail, namely, for instance,
> 
> www/firefox
> graphiks/webkit-gtk2
> deskuitls/fbreader
> graphics/gdal
> 
> The error is in all ports when compiled with CLANG 3.3 -std=c++11
> -stdlib=libc++ similar, routing to math.h. I will show the error for
> www/firefox:
> 
> [...]
> In file included from ./../../dist/include/mozilla/MathAlgorithms.h:15:
> /usr/include/c++/4.2/cmath:468:44: error: __builtin_types_compatible_p
> is not valid in C++ __capture_fpclassify(_Tp __f) { return
> fpclassify(__f); } ^~~~~~~~~~~~~~~
> /usr/include/math.h:104:2: note: expanded from macro 'fpclassify'
>         __fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl)
>         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/math.h:91:2: note: expanded from macro '__fp_type_select'
>         __builtin_types_compatible_p(__typeof(x), long double),
>         ld(x),
> 
> 
> [...]
> 
> I was wondering why /usr/include/c++/4.2/cmath gets included and not
> the header provided for CLANG. I guess this is a typo/bug. I did do dig
> deeper into it.
> 
> Hope someone can fix this.

It also breaks a simple buildworld. Coverity Scan broke like this:

===> gnu/lib/libstdc++ (all)
c++   -O2 -pipe -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/data/src/freebsd-head/gnu/lib/libstdc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/gcc -I/data/src/fre
c++   -O2 -pipe -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/data/src/freebsd-head/gnu/lib/libstdc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/gcc -I/data/src/fre
c++   -O2 -pipe -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/data/src/freebsd-head/gnu/lib/libstdc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/gcc -I/data/src/fre
c++   -O2 -pipe -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/data/src/freebsd-head/gnu/lib/libstdc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/gcc -I/data/src/fre
c++   -O2 -pipe -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H -I/data/src/freebsd-head/gnu/lib/libstdc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/libsupc++ -I/data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/gcc -I/data/src/fre
In file included from /data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/src/compatibility.cc:53:
/usr/obj/data/src/freebsd-head/tmp/usr/include/c++/4.2/cmath:468:44: error: __builtin_types_compatible_p is not valid in C++
    __capture_fpclassify(_Tp __f) { return fpclassify(__f); }
                                           ^~~~~~~~~~~~~~~
/usr/obj/data/src/freebsd-head/tmp/usr/include/math.h:104:2: note: expanded from macro 'fpclassify'
        __fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/obj/data/src/freebsd-head/tmp/usr/include/math.h:91:2: note: expanded from macro '__fp_type_select'
        __builtin_types_compatible_p(__typeof(x), long double), ld(x),    \
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /data/src/freebsd-head/gnu/lib/libstdc++/../../../contrib/libstdc++/src/compatibility.cc:53:
/usr/obj/data/src/freebsd-head/tmp/usr/include/c++/4.2/cmath:472:42: error: __builtin_types_compatible_p is not valid in C++
    __capture_isfinite(_Tp __f) { return isfinite(__f); }
                                         ^~~~~~~~~~~~~
/usr/obj/data/src/freebsd-head/tmp/usr/include/math.h:105:21: note: expanded from macro 'isfinite'
#define isfinite(x) __fp_type_select(x, __isfinitef, __isfinite, __isfinitel)
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/obj/data/src/freebsd-head/tmp/usr/include/math.h:91:2: note: expanded from macro '__fp_type_select'
        __builtin_types_compatible_p(__typeof(x), long double), ld(x),    \
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


and many more.
Received on Fri Jul 12 2013 - 13:40:32 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:39 UTC