[Bug 274706] The C++ header 'execution' is missing
- In reply to: bugzilla-noreply_a_freebsd.org: "[Bug 274706] The C++ header 'execution' is missing"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 27 Oct 2023 06:49:27 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=274706
--- Comment #4 from Mark Millard <marklmi26-fbsd@yahoo.com> ---
(In reply to Mark Millard from comment #3)
The file "execution" is not missing from 13.2-STABLE as of what I just checked.
It is in an expected sort of place:
# uname -apKU
FreeBSD generic 13.2-STABLE FreeBSD 13.2-STABLE stable/13-n256634-c4dfacd0b3c3
GENERIC arm64 aarch64 1302508 1302508
# find /usr/include -name '*execution*' -print
/usr/include/c++/v1/execution
The actual "problem" looks to be that other files are missing:
# grep -r _LIBCPP_HAS_PARALLEL_ALGORITHMS /usr/include
/usr/include/c++/v1/algorithm:#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) &&
_LIBCPP_STD_VER >= 17
/usr/include/c++/v1/execution:#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) &&
_LIBCPP_STD_VER >= 17
/usr/include/c++/v1/memory:#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) &&
_LIBCPP_STD_VER >= 17
/usr/include/c++/v1/numeric:#if defined(_LIBCPP_HAS_PARALLEL_ALGORITHMS) &&
_LIBCPP_STD_VER >= 17
/usr/include/c++/v1/__config_site:/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */
and has /usr/include/c++/v1/__config_site with:
#ifndef _LIBCPP___CONFIG_SITE
#define _LIBCPP___CONFIG_SITE
#define _LIBCPP_ABI_VERSION 1
#define _LIBCPP_ABI_NAMESPACE __1
/* #undef _LIBCPP_ABI_FORCE_ITANIUM */
/* #undef _LIBCPP_ABI_FORCE_MICROSOFT */
/* #undef _LIBCPP_HAS_NO_THREADS */
/* #undef _LIBCPP_HAS_NO_MONOTONIC_CLOCK */
/* #undef _LIBCPP_HAS_MUSL_LIBC */
/* #undef _LIBCPP_HAS_THREAD_API_PTHREAD */
/* #undef _LIBCPP_HAS_THREAD_API_EXTERNAL */
/* #undef _LIBCPP_HAS_THREAD_API_WIN32 */
/* #undef _LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL */
/* #undef _LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS */
#define _LIBCPP_HAS_NO_VENDOR_AVAILABILITY_ANNOTATIONS
/* #undef _LIBCPP_NO_VCRUNTIME */
/* #undef _LIBCPP_TYPEINFO_COMPARISON_IMPLEMENTATION */
/* #undef _LIBCPP_HAS_NO_FILESYSTEM_LIBRARY */
/* #undef _LIBCPP_HAS_PARALLEL_ALGORITHMS */
/* #undef _LIBCPP_HAS_NO_RANDOM_DEVICE */
/* #undef _LIBCPP_HAS_NO_LOCALIZATION */
/* #undef _LIBCPP_HAS_NO_FSTREAM */
/* #undef _LIBCPP_HAS_NO_WIDE_CHARACTERS */
#define _LIBCPP_ENABLE_ASSERTIONS_DEFAULT 0
/* #undef _LIBCPP_ENABLE_DEBUG_MODE */
. . .
#endif // _LIBCPP___CONFIG_SITE
so _LIBCPP_HAS_PARALLEL_ALGORITHMS is not defined by default. That
in turn disables execution's content.
(That source looks to predate the -fexperimental-library
mechanism.)
# c++ -std=c++17 -D_LIBCPP_HAS_PARALLEL_ALGORITHMS execution_test.cpp
In file included from execution_test.cpp:1:
In file included from /usr/include/c++/v1/mutex:192:
In file included from /usr/include/c++/v1/__mutex_base:20:
In file included from /usr/include/c++/v1/system_error:154:
In file included from /usr/include/c++/v1/string:576:
In file included from /usr/include/c++/v1/string_view:1025:
/usr/include/c++/v1/algorithm:1909:12: fatal error: '__pstl_algorithm' file not
found
# include <__pstl_algorithm>
^~~~~~~~~~~~~~~~~~
1 error generated.
# find /usr/include -name '*pstl*' -print
#
But:
# grep -r pstl /usr/include/c++/v1/
/usr/include/c++/v1/algorithm:# include <__pstl_algorithm>
/usr/include/c++/v1/execution:# include <__pstl_execution>
/usr/include/c++/v1/memory:# include <__pstl_memory>
/usr/include/c++/v1/numeric:# include <__pstl_numeric>
So it is the __pstl_* material that is missing, not execution itself.
I've not checked, but it may be that the c++ language was updated
to LLVM16 without updating libc++ to also be based on LLVM16's
assoicated libc++ source.
I will note that:
# uname -apKU
FreeBSD CA72-16Gp-ZFS 15.0-CURRENT FreeBSD 15.0-CURRENT #120
main-n266130-d521abdff236-dirty: Tue Oct 24 18:26:23 PDT 2023
root@CA72-16Gp-ZFS:/usr/obj/BUILDs/main-CA72-nodbg-clang/usr/main-src/arm64.aarch64/sys/GENERIC-NODBG-CA72
arm64 aarch64 1500002 1500002
has the same basic status:
# find /usr/include -name '*pstl*' -print
#
# grep -r pstl /usr/include/c++/v1/
/usr/include/c++/v1/numeric:# include <__pstl_numeric>
/usr/include/c++/v1/memory:# include <__pstl_memory>
/usr/include/c++/v1/algorithm:# include <__pstl_algorithm>
/usr/include/c++/v1/execution:# include <__pstl_execution>
--
You are receiving this mail because:
You are the assignee for the bug.