Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 May 2025 09:21:06 GMT
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: cab029073dc6 - stable/14 - libc++: fix compiling <locale> with -fmodules
Message-ID:  <202505250921.54P9L6r5021583@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/14 has been updated by dim:

URL: https://cgit.FreeBSD.org/src/commit/?id=cab029073dc6cb5814df44556e585b8fdb1c9846

commit cab029073dc6cb5814df44556e585b8fdb1c9846
Author:     Jordan Gordeev <jgopensource@proton.me>
AuthorDate: 2025-05-18 19:55:05 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2025-05-25 09:20:32 +0000

    libc++: fix compiling <locale> with -fmodules
    
    In /usr/include/c++/v1/__locale_dir/locale_base_api.h, xlocale.h is
    included without first including stdio.h and stdlib.h, which causes
    functions like strtoll_l() or sscanf_l() to not be declared.
    
    When compiling with -fmodules, locale_base_api.h is processed separately
    due to a declaration in /usr/include/c++/v1/module.modulemap, and this
    will cause errors due to the above undeclared symbols.
    
    Meanwhile, upstream has substantially reorganized this part of libc++'s
    headers, so apply a minimalistic workaround: specifically when compiling
    with -fmodules, add includes of stdio.h and stdlib.h.
    
    PR:             286342
    MFC after:      1 week
    
    (cherry picked from commit c809b0184d0a6543bc5327d4252fa56a07ce4689)
---
 .../llvm-project/libcxx/include/__locale_dir/locale_base_api.h    | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/contrib/llvm-project/libcxx/include/__locale_dir/locale_base_api.h b/contrib/llvm-project/libcxx/include/__locale_dir/locale_base_api.h
index 8c000c558c52..e43e87375069 100644
--- a/contrib/llvm-project/libcxx/include/__locale_dir/locale_base_api.h
+++ b/contrib/llvm-project/libcxx/include/__locale_dir/locale_base_api.h
@@ -25,7 +25,13 @@
 #  include <__locale_dir/locale_base_api/fuchsia.h>
 #elif defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC)
 #  include <__locale_dir/locale_base_api/musl.h>
-#elif defined(__APPLE__) || defined(__FreeBSD__)
+#elif defined(__APPLE__)
+#  include <xlocale.h>
+#elif defined(__FreeBSD__)
+#  if __has_feature(modules)
+#    include <stdio.h>
+#    include <stdlib.h>
+#  endif
 #  include <xlocale.h>
 #endif
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505250921.54P9L6r5021583>