Open
Description
I try to support --enable-llvm for musl : #1718
but build fail with
[ 95%] Building CXX object libcxxabi/src/CMakeFiles/cxxabi_static_objects.dir/fallback_malloc.cpp.o
[ 95%] Building CXX object libcxxabi/src/CMakeFiles/cxxabi_static_objects.dir/private_typeinfo.cpp.o
[ 95%] Building CXX object libcxxabi/src/CMakeFiles/cxxabi_static_objects.dir/stdlib_new_delete.cpp.o
[ 95%] Building CXX object libcxxabi/src/CMakeFiles/cxxabi_static_objects.dir/cxa_noexception.cpp.o
[ 95%] Building CXX object libcxxabi/src/CMakeFiles/cxxabi_static_objects.dir/cxa_thread_atexit.cpp.o
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/llvm/libcxxabi/src/cxa_demangle.cpp:24:
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/functional:552:
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__functional/boyer_moore_searcher.h:27:
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/vector:325:
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__format/formatter_bool.h:19:
In file included from /home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__format/formatter_integral.h:35:
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:437:4: error: unknown rune table for this platform -- do you mean to define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE?
437 | # error unknown rune table for this platform -- do you mean to define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE?
| ^
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:439:16: error: unknown type name 'mask'
439 | static const mask alnum = alpha | digit;
| ^
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:439:29: error: use of undeclared identifier 'alpha'
439 | static const mask alnum = alpha | digit;
| ^
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:439:37: error: use of undeclared identifier 'digit'
439 | static const mask alnum = alpha | digit;
| ^
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:440:16: error: unknown type name 'mask'
440 | static const mask graph = alnum | punct;
| ^
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/__locale:440:37: error: use of undeclared identifier 'punct'; did you mean 'putc'?
440 | static const mask graph = alnum | punct;
| ^~~~~
| putc
/home/mark/workspace/public_riscv-gnu-toolchain/riscv-gnu-toolchain/build_musl_llvm/build-llvm-musl/runtimes/runtimes-riscv64-unknown-linux-musl-bins/compiler-rt/lib/fuzzer/libcxx_fuzzer_riscv64/include/c++/v1/cstdio:139:9: note: 'putc' declared here
139 | using ::putc _LIBCPP_USING_IF_EXISTS;
It looks like I need to configure LIBCXX_HAS_MUSL_LIBC=On, but I couldn't find a way to do that in Makefile.in
To confirm the impact of LIBCXX_HAS_MUSL_LIBC, I made a change to the llvm source code, which did resolve the compile error:
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index 674082c7d178..35a43b8ac6cb 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -291,7 +291,7 @@ option(LIBCXX_ENABLE_THREADS "Build libc++ with support for threads." ON)
option(LIBCXX_ENABLE_MONOTONIC_CLOCK
"Build libc++ with support for a monotonic clock.
This option may only be set to OFF when LIBCXX_ENABLE_THREADS=OFF." ON)
-option(LIBCXX_HAS_MUSL_LIBC "Build libc++ with support for the Musl C library" OFF)
+option(LIBCXX_HAS_MUSL_LIBC "Build libc++ with support for the Musl C library" ON)
option(LIBCXX_HAS_PTHREAD_API "Ignore auto-detection and force use of pthread API" OFF)
Are there any suggestions on how to properly configure LIBCXX_HAS_MUSL_LIBC for compiler-rt in Makefile.in?
Metadata
Metadata
Assignees
Labels
No labels