Bug#950653: guile-3.0: Please include patch to fix build on ia64

John Paul Adrian Glaubitz <[email protected]>
Newsgroups gmane.linux.debian.ports.ia64
Message-ID <158082363236.3353502.10709568455597734716.reportbug__618.188262318142$1580823945$gmane$org@z6.physik.fu-berlin.de>
Source: guile-3.0
Severity: normal
Tags: patch
User: [email protected]
Usertags: ia64

Hi!

Similar to hppa, the build of guile-3.0 is currently failing on ia64 due to
a regression.

I have created a patch to fix the issue and submitted it upstream [1].

Please include it in the next upload.

Thanks,
Adrian

> [1] https://lists.gnu.org/archive/html/guile-devel/2020-02/msg00022.html

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [email protected]
`. `'   Freie Universitaet Berlin - [email protected]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
0001-Fix-build-on-ia64.patch (text/plain, 2.1 KB)
>From 48bf85af0f02111a0e075b8128f4acefaf43eec0 Mon Sep 17 00:00:00 2001
From: John Paul Adrian Glaubitz <[email protected]>
Date: Tue, 4 Feb 2020 13:30:09 +0100
Subject: [PATCH] Fix build on ia64

  * libguile/continuations.c (capture_auxiliary_stack): Fix
    logic in preprocessor code when checking for ia64 host;
    fix dereferencing of ctx variable.
  * libguile/threads.h (struct scm_thread): Add missing member
    SCM_STACKITEM *auxiliary_stack_base.
---
 libguile/continuations.c | 6 +++---
 libguile/threads.h       | 5 +++++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/libguile/continuations.c b/libguile/continuations.c
index 67a47d38c..b8b6e1dca 100644
--- a/libguile/continuations.c
+++ b/libguile/continuations.c
@@ -143,7 +143,7 @@ static void
 capture_auxiliary_stack (scm_thread *thread, scm_t_contregs *continuation)
 {
 #if SCM_HAVE_AUXILIARY_STACK
-# if !(defined __ia64 or defined __ia64__)
+# if !defined __ia64 || !defined __ia64__
 # error missing auxiliary stack implementation for architecture
 # endif
   char *top;
@@ -155,9 +155,9 @@ capture_auxiliary_stack (scm_thread *thread, scm_t_contregs *continuation)
 #if defined __hpux
   __uc_get_ar_bsp (ctx, (uint64_t *) &top);
 #elif defined linux
-  top = (char *) ctx->uc_mcontext.sc_ar_bsp;
+  top = (char *) ctx.uc_mcontext.sc_ar_bsp;
 #elif defined __FreeBSD__
-  top = (char *)(ctx->uc_mcontext.mc_special.bspstore
+  top = (char *)(ctx.uc_mcontext.mc_special.bspstore
                  + ctx->uc_mcontext.mc_special.ndirty);
 #else
 #error missing auxiliary stack implementation for ia64 on this OS
diff --git a/libguile/threads.h b/libguile/threads.h
index 337dc83a9..e6a60e96b 100644
--- a/libguile/threads.h
+++ b/libguile/threads.h
@@ -118,6 +118,11 @@ struct scm_thread {
   /* Stack base.  Used when checking for C stack overflow.  */
   SCM_STACKITEM *base;
 
+#if SCM_HAVE_AUXILIARY_STACK
+  /* Auxiliary stack base. */
+  SCM_STACKITEM *auxiliary_stack_base;
+#endif
+
   /* JIT state; NULL until this thread needs to JIT-compile something.  */
   struct scm_jit_state *jit_state;
 };
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.