From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 27AD24765E0 for ; Mon, 28 Dec 2020 22:36:29 +0300 (MSK) Received: by mail-lf1-f46.google.com with SMTP id o17so26182643lfg.4 for ; Mon, 28 Dec 2020 11:36:29 -0800 (PST) From: Cyrill Gorcunov Date: Mon, 28 Dec 2020 22:36:22 +0300 Message-Id: <20201228193622.652307-1-gorcunov@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH] crash: allow to build on non x86-64 machines List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tml Cc: Vladislav Shpilevoy The general purpose registers were optional earlier lets make them optional back allowing the code to be compiled on non x86-64 machines. Signed-off-by: Cyrill Gorcunov --- Guys, obviously I didn't test on real non x86 machine. But since we've been notifying from public chat that people are trying to compile tarantool on arm lets make a quick fix. branch gorcunov/crash-cross-compile src/lib/core/crash.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lib/core/crash.c b/src/lib/core/crash.c index 8397603bc..5b50ed3c4 100644 --- a/src/lib/core/crash.c +++ b/src/lib/core/crash.c @@ -30,10 +30,11 @@ /** Use strlcpy with destination as an array */ #define strlcpy_a(dst, src) strlcpy(dst, src, sizeof(dst)) -#ifdef TARGET_OS_LINUX -#ifndef __x86_64__ -# error "Non x86-64 architectures are not supported" +#if defined(TARGET_OS_LINUX) && defined(__x86_64__) +# define HAS_GREG #endif + +#ifdef HAS_GREG struct crash_greg { uint64_t r8; uint64_t r9; @@ -64,7 +65,7 @@ struct crash_greg { uint64_t fpstate; uint64_t reserved1[8]; }; -#endif /* TARGET_OS_LINUX */ +#endif /* HAS_GREG */ static struct crash_info { /** @@ -76,7 +77,7 @@ static struct crash_info { */ void *context_addr; void *siginfo_addr; -#ifdef TARGET_OS_LINUX +#ifdef HAS_GREG /** * Registers contents. */ @@ -199,7 +200,7 @@ crash_collect(int signo, siginfo_t *siginfo, void *ucontext) backtrace(start, sizeof(cinfo->backtrace_buf)); #endif -#ifdef TARGET_OS_LINUX +#ifdef HAS_GREG /* * uc_mcontext on libc level looks somehow strange, * they define an array of uint64_t where each register @@ -411,7 +412,7 @@ crash_report_stderr(struct crash_info *cinfo) fprintf(stderr, " context: %p\n", cinfo->context_addr); fprintf(stderr, " siginfo: %p\n", cinfo->siginfo_addr); -#ifdef TARGET_OS_LINUX +#ifdef HAS_GREG # define fprintf_reg(__n, __v) \ fprintf(stderr, " %-9s0x%-17llx%lld\n", \ __n, (long long)__v, (long long)__v) @@ -441,7 +442,7 @@ crash_report_stderr(struct crash_info *cinfo) fprintf_reg("oldmask", cinfo->greg.oldmask); fprintf_reg("trapno", cinfo->greg.trapno); # undef fprintf_reg -#endif /* TARGET_OS_LINUX */ +#endif /* HAS_GREG */ fprintf(stderr, "Current time: %u\n", (unsigned)time(0)); fprintf(stderr, "Please file a bug at " -- 2.26.2