[Bug 262706] Build on arm64 fails to find libclang_rt.asan-aarch64.a
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 21 Mar 2022 20:20:34 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262706
Dimitry Andric <dim@FreeBSD.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dim@FreeBSD.org
--- Comment #2 from Dimitry Andric <dim@FreeBSD.org> ---
Yep, upstream doesn't yet support aarch64 for the sanitizers. If I attempt to
build it on an aarch64 machine, I see:
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1811:23:
error: field has incomplete type 'struct _aarch64_ctx'
struct _aarch64_ctx head;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1811:10:
note: forward declaration of '__sanitizer::_aarch64_ctx'
struct _aarch64_ctx head;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1817:35:
error: no member named '__reserved' in '__mcontext'
u8 *aux = ucontext->uc_mcontext.__reserved;
~~~~~~~~~~~~~~~~~~~~~ ^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1820:12:
error: member access into incomplete type '__sanitizer::_aarch64_ctx'
if (ctx->size == 0) break;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1811:10:
note: forward declaration of '__sanitizer::_aarch64_ctx'
struct _aarch64_ctx head;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1821:12:
error: member access into incomplete type '__sanitizer::_aarch64_ctx'
if (ctx->magic == kEsrMagic) {
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1811:10:
note: forward declaration of '__sanitizer::_aarch64_ctx'
struct _aarch64_ctx head;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1825:15:
error: member access into incomplete type '__sanitizer::_aarch64_ctx'
aux += ctx->size;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1811:10:
note: forward declaration of '__sanitizer::_aarch64_ctx'
struct _aarch64_ctx head;
^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2055:31:
error: no member named 'pc' in '__mcontext'
*pc = ucontext->uc_mcontext.pc;
~~~~~~~~~~~~~~~~~~~~~ ^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2056:31:
error: no member named 'regs' in '__mcontext'
*bp = ucontext->uc_mcontext.regs[29];
~~~~~~~~~~~~~~~~~~~~~ ^
/home/dim/src/main/contrib/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:2057:31:
error: no member named 'sp' in '__mcontext'
*sp = ucontext->uc_mcontext.sp;
~~~~~~~~~~~~~~~~~~~~~ ^
8 errors generated.
`_aarch64_ctx` is a Linux-specific context struct from
/usr/include/aarch64-linux-gnu/asm/sigcontext.h:
/*
* Header to be used at the beginning of structures extending the user
* context. Such structures must be placed after the rt_sigframe on the stack
* and be 16-byte aligned. The last structure must be a dummy one with the
* magic and size set to 0.
*/
struct _aarch64_ctx {
__u32 magic;
__u32 size;
};
but obviously it doesn't exist in FreeBSD. Similarly, struct ucontext and
mcontext have different members, and aren't generally compatible.
I think the only way to get this implemented is to have somebody with aarch64
knowledge, who can attempt to fix them up and submit reviews upstream.
--
You are receiving this mail because:
You are the assignee for the bug.