CTSRD-CHERI / llvm-project

Fork of LLVM adding CHERI support
48 stars 40 forks source link

compiler-rt does not build for CheriBSD Morello hybrid #662

Open zintown opened 1 year ago

zintown commented 1 year ago

I have tried to add -LLVM_ENABLE_RUNTIMES=compiler-rt in morello-llvm-project-morello-hybrid-for-purecap-rootfs-build compile flags, but it failed with the below messages.

Whether morello-llvm-project-morello-hybrid-for-purecap-rootfs supports llvm-compile-rt modules in cheribsd? Or do I need to add some system header files to solve this error?

[46/601] Building CXX object compiler-rt/lib/sanitizer_co...Files/RTSanitizerCommon.aarch64.dir/sanitizer_linux.cpp.o

FAILED: compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.aarch64.dir/sanitizer_linux.cpp.o 

/home/ciyan/phd_proj/cheri/output/morello-sdk/bin/clang++ --target=aarch64-unknown-freebsd13 --sysroot=/home/ciyan/phd_proj/cheri/output/rootfs-morello-purecap -DHAVE_RPC_XDR_H=0 -D_DEBUG -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/.. -resource-dir=/home/ciyan/phd_proj/cheri/build/morello-llvm-project-morello-hybrid-for-purecap-rootfs-build/./lib/clang/13.0.0 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wmisleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -Wall -std=c++14 -Wno-unused-parameter -O3 -DNDEBUG  -march=armv8-a -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -Werror=thread-safety -Werror=thread-safety-reference -Werror=thread-safety-beta -O3 -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -nostdinc++ -fno-rtti -Wframe-larger-than=570 -Wglobal-constructors -UNDEBUG -MD -MT compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.aarch64.dir/sanitizer_linux.cpp.o -MF compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.aarch64.dir/sanitizer_linux.cpp.o.d -o compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.aarch64.dir/sanitizer_linux.cpp.o -c /home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1448:30: error: use of undeclared identifier '__NR_clone'

                         "i"(__NR_clone), "i"(__NR_exit)

                             ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1814:23: error: field has incomplete type 'struct _aarch64_ctx'

  struct _aarch64_ctx head;

                      ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1814:10: note: forward declaration of '__sanitizer::_aarch64_ctx'

  struct _aarch64_ctx head;

         ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1820:35: error: no member named '__reserved' in '__mcontext'

  u8 *aux = ucontext->uc_mcontext.__reserved;

            ~~~~~~~~~~~~~~~~~~~~~ ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1823:12: error: member access into incomplete type '__sanitizer::_aarch64_ctx'

    if (ctx->size == 0) break;

           ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1814:10: note: forward declaration of '__sanitizer::_aarch64_ctx'

  struct _aarch64_ctx head;

         ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1824:12: error: member access into incomplete type '__sanitizer::_aarch64_ctx'

    if (ctx->magic == kEsrMagic) {

           ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1814:10: note: forward declaration of '__sanitizer::_aarch64_ctx'

  struct _aarch64_ctx head;

         ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1828:15: error: member access into incomplete type '__sanitizer::_aarch64_ctx'

    aux += ctx->size;

              ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1814:10: note: forward declaration of '__sanitizer::_aarch64_ctx'

  struct _aarch64_ctx head;

         ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2058:31: error: no member named 'pc' in '__mcontext'

  *pc = ucontext->uc_mcontext.pc;

        ~~~~~~~~~~~~~~~~~~~~~ ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2059:31: error: no member named 'regs' in '__mcontext'

  *bp = ucontext->uc_mcontext.regs[29];

        ~~~~~~~~~~~~~~~~~~~~~ ^

/home/ciyan/phd_proj/cheri/morello-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2060:31: error: no member named 'sp' in '__mcontext'

  *sp = ucontext->uc_mcontext.sp;

        ~~~~~~~~~~~~~~~~~~~~~ ^

9 errors generated.

[63/601] Building CXX object compiler-rt/lib/sanitizer_co...ermination.aarch64.dir/sanitizer_deadlock_detector1.cpp.o

ninja: build stopped: subcommand failed.
arichardson commented 1 year ago

I am seeing the same errors and it shouldn't be too hard to get compiler-rt to compile for CheriBSD (I thought there was upstream FreeBSD support but apparently not quite). However, this is a problem with Morello LLVM and not really a cheribuild issue.