Open aur3l14no opened 11 months ago
I'm not sure how much the LibCXX instructions are still up to date. If you followed the instructions in docs/C++.txt you used the current git version of the LLVM project? There may be breaking changes. Can you try compiling against LLVM-16 or 15 ? We should support those versions.
An alternative is to rely on the docker files libcxx seem to work there (although I see there are issues with the symcc_fuzzing_helper but this is another problem)
I actually was using LLVM-16 (16.0.6), which is built and installed via
cmake -DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DLLVM_TARGETS_TO_BUILD="X86" \
-G Ninja /workspace/llvm-project/llvm
cmake --build .
cmake --build . --target install
Oh... I realized that I even failed to build cxx with clang. I think it's not an issue with symcc then. Sorry for bothering.
No problem, I'll close it for now, let us know if you succeed to build the libcxx with SymCC.
Hey @aurelf I'd like to update that I have built libcxx successfully, but with somewhat different configs.
cmake -G Ninja -S /workspace/llvm-project/runtimes \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DCMAKE_INSTALL_PREFIX=/home/vscode/libcxx_symcc \
-DCMAKE_C_COMPILER=symcc \
-DCMAKE_CXX_COMPILER=sym++
ninja cxx cxxabi unwind
ninja install-cxx install-cxxabi install-unwind
Please note that the source directory is changed to runtimes
. It seems that with llvm
as source dir, I can only perform a 2-stage build (build clang first then runtimes), and I can't just stick a compiled clang (symcc) to replace the first stage otherwise there will be errors (maybe related to cmake files but I didn't investigate further).
Anyways, I followed the guide here (https://releases.llvm.org/16.0.0/projects/libcxx/docs/BuildingLibcxx.html#the-default-build) and came up with the above build command. And it worked.
Also, I had to tweak this line in sym++
, otherwise I would see similar errors as in #104
stdlib_cflags="-isystem ${!libcxx_var}/include/c++/v1 -nostdinc++ -nostdlib++"
Going through all that, I finally managed to symbolize the sample.cpp. However, it failed to generate the alternative input although the constraints did somewhat show the answer...
(assert ...)
(assert ...)
(assert (and (= stdin0 #x72) (= stdin1 #x6f) (= stdin2 #x6f) (= stdin3 #x74)))
# the result is unsat
I noticed in the README that, with QSYM, the output is named "xxx_optimistic". Does it mean the result rely on optimistic (underconstrained) solving to become SAT? I haven't been able to build the QSYM backend so I couldn't test it out.
Thanks for the investigation ! Reopening. Looks like the port to LLVM 16 was not complete, the CI tests need to be improved in that respect :) Unfortunately, I don't have time to look this more before a while. @sebastianpoeplau if you do, could you have a look ?
SymCC is compiled successfully. But building libcxx got me these errors (during configuration).
Kindly, any advice on how to fix this error would be appreciated.