CURRENT: Changes in lib/msun/math.h make ports to fail
Ulrich Spörlein
uqs at FreeBSD.org
Fri Jul 12 15:40:32 UTC 2013
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.
More information about the freebsd-current
mailing list