From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp38.i.mail.ru (smtp38.i.mail.ru [94.100.177.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 46B874765E0 for ; Tue, 29 Dec 2020 19:15:32 +0300 (MSK) Date: Tue, 29 Dec 2020 19:15:29 +0300 From: "Alexander V. Tikhonov" Message-ID: <20201229161529.GB41108@hpalx> References: <20201228193622.652307-1-gorcunov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201228193622.652307-1-gorcunov@gmail.com> Subject: Re: [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: Cyrill Gorcunov Cc: tarantool-patches@dev.tarantool.org Hi Cyrill, thanks for the patch, as I see no new degradation found in gitlab-ci testing commit criteria pipeline [1], patch LGTM. [1] - https://gitlab.com/tarantool/tarantool/-/pipelines/235181553 On Mon, Dec 28, 2020 at 10:36:22PM +0300, Cyrill Gorcunov via Tarantool-patches wrote: > 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 >