https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296041
Bug ID: 296041
Summary: libc++: __locale fails to compile due to missing
isascii declaration on FreeBSD 15.0
Product: Base System
Version: 15.0-RELEASE
Hardware: amd64
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: bin
Assignee: [email protected]
Reporter: [email protected]
I am trying to build the latest Protobuf v35.1 on FreeBSD (v34.2 builds fine),
but it seems the new release triggers a bug inside libc++ internal headers:
FAILED: [code=1]
CMakeFiles/libprotobuf.dir/Release/src/google/protobuf/io/zero_copy_stream_impl.cc.o
/usr/bin/c++ -DGOOGLE_PROTOBUF_CMAKE_BUILD -DGOOGLE_PROTOBUF_NO_RTTI=1
-DHAVE_ZLIB -DCMAKE_INTDIR=\"Release\"
-I/tmp/WickHopper-XXXXXX.KaVLQW729E/build
-I/home/mamadou/WickHopper/third-party/protobuf
-I/tmp/WickHopper-XXXXXX.KaVLQW729E/build/src
-I/home/mamadou/WickHopper/third-party/protobuf/src
-I/home/mamadou/WickHopper/third-party/protobuf/third_party/utf8_range -isystem
/tmp/WickHopper-XXXXXX.KaVLQW729E/zlib-stage/include -isystem
/tmp/WickHopper-XXXXXX.KaVLQW729E/abseil-stage/include -O3 -DNDEBUG
-fvisibility=hidden -fvisibility-inlines-hidden -MD -MT
CMakeFiles/libprotobuf.dir/Release/src/google/protobuf/io/zero_copy_stream_impl.cc.o
-MF
CMakeFiles/libprotobuf.dir/Release/src/google/protobuf/io/zero_copy_stream_impl.cc.o.d
-o
CMakeFiles/libprotobuf.dir/Release/src/google/protobuf/io/zero_copy_stream_impl.cc.o
-c
/home/mamadou/WickHopper/third-party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc
In file included from
/home/mamadou/WickHopper/third-party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc:24:
In file included from /usr/include/c++/v1/istream:164:
In file included from /usr/include/c++/v1/__ostream/basic_ostream.h:24:
In file included from /usr/include/c++/v1/ios:220:
/usr/include/c++/v1/__locale:530:12: error: use of undeclared identifier
'isascii'
530 | return isascii(__c) ? (__tab_[static_cast<int>(__c)] & __m) != 0 :
false;
| ^
I've already reported it to Protobufs's developers here
https://github.com/protocolbuffers/protobuf/issues/27942 but it seems this is
not a bug in Protobuf. Rather a libc++ internal header or GNU extensions
compatibility issue, where that header is trying to use a GNU extension, which
will break when compiled with Clang enforcing that the GNU extensions are not
available.
I'm not sure whether this is the right place to report the issue or it's best
to report to LLVM libc++ team. But, checking the libc++ version on FreeBSD:
mamadou@freebsd-dev:~ $ cat p.cpp
#include <iostream>
#include <__config>
int main()
{
#ifdef _LIBCPP_VERSION
std::cout << "_LIBCPP_VERSION = " << _LIBCPP_VERSION << '\n';
#else
std::cout << "_LIBCPP_VERSION not defined\n";
#endif
}
mamadou@freebsd-dev:~ $ clang++ -o p p.cpp
mamadou@freebsd-dev:~ $ ./p
_LIBCPP_VERSION = 190107
mamadou@freebsd-dev:~ $
It seems libc++ on the latest FreeBSD 15-RELEASE is not the latest version. I
am not sure if I can, or if I can how to install a newer libc++ on FreeBSD to
see if I can reproduce before reporting to the LLVM team.
More info about this issue can be found here:
https://github.com/protocolbuffers/protobuf/issues/27942
--
You are receiving this mail because:
You are the assignee for the bug.