forked from OSchip/llvm-project
[compiler-rt] Add the common FreeBSD AArch64 support
Reviewed by: vitalybuka Differential Revision: https://reviews.llvm.org/D125756
This commit is contained in:
parent
d97d930d92
commit
9496e39b4a
|
@ -1793,7 +1793,7 @@ void *internal_start_thread(void *(*func)(void *), void *arg) { return 0; }
|
|||
void internal_join_thread(void *th) {}
|
||||
#endif
|
||||
|
||||
#if defined(__aarch64__)
|
||||
#if SANITIZER_LINUX && defined(__aarch64__)
|
||||
// Android headers in the older NDK releases miss this definition.
|
||||
struct __sanitizer_esr_context {
|
||||
struct _aarch64_ctx head;
|
||||
|
@ -1814,6 +1814,11 @@ static bool Aarch64GetESR(ucontext_t *ucontext, u64 *esr) {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
#elif SANITIZER_FREEBSD && defined(__aarch64__)
|
||||
// FreeBSD doesn't provide ESR in the ucontext.
|
||||
static bool Aarch64GetESR(ucontext_t *ucontext, u64 *esr) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
using Context = ucontext_t;
|
||||
|
@ -2039,10 +2044,17 @@ static void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) {
|
|||
*bp = ucontext->uc_mcontext.arm_fp;
|
||||
*sp = ucontext->uc_mcontext.arm_sp;
|
||||
#elif defined(__aarch64__)
|
||||
# if SANITIZER_FREEBSD
|
||||
ucontext_t *ucontext = (ucontext_t*)context;
|
||||
*pc = ucontext->uc_mcontext.mc_gpregs.gp_elr;
|
||||
*bp = ucontext->uc_mcontext.mc_gpregs.gp_x[29];
|
||||
*sp = ucontext->uc_mcontext.mc_gpregs.gp_sp;
|
||||
# else
|
||||
ucontext_t *ucontext = (ucontext_t*)context;
|
||||
*pc = ucontext->uc_mcontext.pc;
|
||||
*bp = ucontext->uc_mcontext.regs[29];
|
||||
*sp = ucontext->uc_mcontext.sp;
|
||||
# endif
|
||||
#elif defined(__hppa__)
|
||||
ucontext_t *ucontext = (ucontext_t*)context;
|
||||
*pc = ucontext->uc_mcontext.sc_iaoq[0];
|
||||
|
|
|
@ -19,7 +19,8 @@
|
|||
# define SYSCALL(name) __NR_ ## name
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_APPLE)
|
||||
#if (defined(__x86_64__) && (SANITIZER_FREEBSD || SANITIZER_APPLE)) || \
|
||||
(defined(__aarch64__) && SANITIZER_FREEBSD)
|
||||
# define internal_syscall __syscall
|
||||
# else
|
||||
# define internal_syscall syscall
|
||||
|
|
Loading…
Reference in New Issue