Skip to content

[BUG] Simple -fmodules usage broke with some C++ wchar.h changes since NDK 29 #2230

@finagolfin

Description

@finagolfin

Description

The Swift stdlib and testsuite has been seeing this issue since NDK 29, which I was finally able to reproduce with a C++ header alone:

# RUN: at line 21
/home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target x86_64-unknown-linux-android -fmodules-cache-path='/home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-android/clang-module-cache' -isystem /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIE -fobjc-runtime=ios-5.0 -std=c++11 --std=gnu++14 -I/home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/./lib/swift  -fsyntax-only -x c++-header /home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/test-android-x86_64/Interop/CxxToSwiftToCxx/Output/bridge-cxx-struct-back-to-cxx.swift.tmp/full-cxx-swift-cxx-bridging.h -std=gnu++17 -c -fmodules -fcxx-modules -I /home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/test-android-x86_64/Interop/CxxToSwiftToCxx/Output/bridge-cxx-struct-back-to-cxx.swift.tmp
# executed command: /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target x86_64-unknown-linux-android -fmodules-cache-path=/home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/swift-test-results/x86_64-unknown-linux-android/clang-module-cache -isystem /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/sysroot -fPIE -fobjc-runtime=ios-5.0 -std=c++11 --std=gnu++14 -I/home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/./lib/swift -fsyntax-only -x c++-header /home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/test-android-x86_64/Interop/CxxToSwiftToCxx/Output/bridge-cxx-struct-back-to-cxx.swift.tmp/full-cxx-swift-cxx-bridging.h -std=gnu++17 -c -fmodules -fcxx-modules -I /home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/test-android-x86_64/Interop/CxxToSwiftToCxx/Output/bridge-cxx-struct-back-to-cxx.swift.tmp
# .---command stderr------------
# | clang++: warning: argument unused during compilation: '-c' [-Wunused-command-line-argument]
# | While building module 'std' imported from /home/finagolfin/build/swift-project/Ninja-Release/swift-linux-x86_64/test-android-x86_64/Interop/CxxToSwiftToCxx/Output/bridge-cxx-struct-back-to-cxx.swift.tmp/full-cxx-swift-cxx-bridging.h:31:
# | In file included from <module-includes>:1:
# | In file included from /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1856:
# | In file included from /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
# | In file included from /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:118:
# | /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:142:39: error: redefinition of '__libcpp_wcschr'
# |   142 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {
# |       |                                       ^
# | /home/finagolfin/android-ndk-r30-beta1/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:142:39: note: previous definition is here

Reducing that to the minimum reproducer, I get the following single-line header and command:

> cat foo.h
#include <cstddef>

# works fine with NDK 28
> /home/finagolfin/android-ndk-r28c/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target aarch64-unknown-linux-android35 -isystem /home/finagolfin/android-ndk-r28c/toolchains/llvm/prebuilt/linux-x86_64/sysroot -x c++-header foo.h -fmodules

# breaks from NDK 29 onwards
> /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ -target aarch64-unknown-linux-android35 -isystem /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/sysroot -x c++-header foo.h -fmodules
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:141:39: error: redefinition of '__libcpp_wcschr'
  141 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {
      |                                       ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:141:39: note: previous definition is here
  141 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {
      |                                       ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:144:72: error: redefinition of 'wcschr'
  144 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {
      |                                                                        ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:144:72: note: previous definition is here
  144 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {
      |                                                                        ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:147:66: error: redefinition of 'wcschr'
  147 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcschr(wchar_t* __s, wchar_t __c) {
      |                                                                  ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:147:66: note: previous definition is here
  147 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcschr(wchar_t* __s, wchar_t __c) {
      |                                                                  ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:151:39: error: redefinition of '__libcpp_wcspbrk'
  151 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {
      |                                       ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:151:39: note: previous definition is here
  151 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {
      |                                       ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:155:1: error: redefinition of 'wcspbrk'
  155 | wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {
      | ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:155:1: note: previous definition is here
  155 | wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {
      | ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:158:66: error: redefinition of 'wcspbrk'
  158 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcspbrk(wchar_t* __s1, const wchar_t* __s2) {
      |                                                                  ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:158:66: note: previous definition is here
  158 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcspbrk(wchar_t* __s1, const wchar_t* __s2) {
      |                                                                  ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:162:39: error: redefinition of '__libcpp_wcsrchr'
  162 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcsrchr(const wchar_t* __s, wchar_t __c) {
      |                                       ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:162:39: note: previous definition is here
  162 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcsrchr(const wchar_t* __s, wchar_t __c) {
      |                                       ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:165:72: error: redefinition of 'wcsrchr'
  165 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {
      |                                                                        ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:165:72: note: previous definition is here
  165 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {
      |                                                                        ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:168:66: error: redefinition of 'wcsrchr'
  168 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcsrchr(wchar_t* __s, wchar_t __c) {
      |                                                                  ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:168:66: note: previous definition is here
  168 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcsrchr(wchar_t* __s, wchar_t __c) {
      |                                                                  ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:172:39: error: redefinition of '__libcpp_wcsstr'
  172 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcsstr(const wchar_t* __s1, const wchar_t* __s2) {
      |                                       ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:172:39: note: previous definition is here
  172 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wcsstr(const wchar_t* __s1, const wchar_t* __s2) {
      |                                       ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:176:1: error: redefinition of 'wcsstr'
  176 | wcsstr(const wchar_t* __s1, const wchar_t* __s2) {
      | ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:176:1: note: previous definition is here
  176 | wcsstr(const wchar_t* __s1, const wchar_t* __s2) {
      | ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:179:66: error: redefinition of 'wcsstr'
  179 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcsstr(wchar_t* __s1, const wchar_t* __s2) {
      |                                                                  ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:179:66: note: previous definition is here
  179 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wcsstr(wchar_t* __s1, const wchar_t* __s2) {
      |                                                                  ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:183:39: error: redefinition of '__libcpp_wmemchr'
  183 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {
      |                                       ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:183:39: note: previous definition is here
  183 | inline _LIBCPP_HIDE_FROM_ABI wchar_t* __libcpp_wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {
      |                                       ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:187:1: error: redefinition of 'wmemchr'
  187 | wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {
      | ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:187:1: note: previous definition is here
  187 | wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {
      | ^
While building module 'std' imported from foo.h:1:
In file included from <module-includes>:1:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/algorithm:1849:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__algorithm/find.h:32:
In file included from /home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/cwchar:117:
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:190:66: error: redefinition of 'wmemchr'
  190 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wmemchr(wchar_t* __s, wchar_t __c, size_t __n) {
      |                                                                  ^
/home/finagolfin/android-ndk-r29/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/wchar.h:190:66: note: previous definition is here
  190 | inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_PREFERRED_OVERLOAD wchar_t* wmemchr(wchar_t* __s, wchar_t __c, size_t __n) {
      |                                                                  ^
foo.h:1:10: fatal error: could not build module 'std'
    1 | #include <cstddef>
      |  ~~~~~~~~^
16 errors generated.

Removing the -fmodules flag gets it to not error again, reproducible with NDK 30 beta 1 also.

I am using a supported NDK

  • I have checked and the NDK I'm using is currently supported

Affected versions

r29, r30

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions