[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#977223: guile-3.0: FTBFS on hppa - segmentation faults



John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> writes:

> Could you include this patch or a possible better version in the next guile-3.0 upload?

As mentioned, I'm working on 3.0.8, and the bootstrap process has
changed somewhat to support reproducible builds.  So I went ahead and
uploaded 3.0.8-1 without this patch, and then I hoped, if you have time,
you might be able to test that and see if we need to make adjustments to
the fix.  In particular, guile now has
{bootstrap,stage0,stage1,stage2}/Makefile.am.

It may be that we only need to adjust a subset of these (say bootstrap
and/or stage0)...

Oh, and I'm not sure it's working exactly right yet, but I'd been toying
with a more selective approach that works with automake's if/then
restrictions via an AM_CONDITIONAL.  Of course we'll still need to
figure out which Makefiles we need to adjust.

commit 6c1173b3a96d65159062b2ba82afb7264a01591e
Author: Rob Browning <rlb@defaultvalue.org>
Date:   Sun Feb 27 12:55:42 2022 -0600

    Adjust GUILE_OPTIMIZATION to avoid 32-bit BE build crashes

diff --git a/bootstrap/Makefile.am b/bootstrap/Makefile.am
index a4634c447..0aa548c26 100644
--- a/bootstrap/Makefile.am
+++ b/bootstrap/Makefile.am
@@ -22,7 +22,14 @@
 
 
 GUILE_WARNINGS = -W0
-GUILE_OPTIMIZATIONS = -O1
+
+if !DEB_GUILE_32_BIT_BIG_ENDIAN
+  $(info Note: not adjusting GUILE_OPTIMIZATIONS for 32-bit big-endian architecture)
+  GUILE_OPTIMIZATIONS = -O1
+else
+  $(info Note: adjusting GUILE_OPTIMIZATIONS for 32-bit big-endian architecture)
+  GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps
+endif
 
 include $(top_srcdir)/am/bootstrap.am
 
diff --git a/configure.ac b/configure.ac
index 827e1c09d..dec060414 100644
--- a/configure.ac
+++ b/configure.ac
@@ -369,6 +369,9 @@ else
 fi
 AC_SUBST([SCM_I_GSC_T_PTRDIFF])
 
+AM_CONDITIONAL([DEB_GUILE_32_BIT_BIG_ENDIAN],
+  [test "$ac_cv_words_bigendian" && test "$ac_cv_sizeof_void_p" -lt 8])
+
 AC_CHECK_HEADERS([stdatomic.h])
 
 AC_MSG_CHECKING([for which prebuilt binary set to use during bootstrap])
diff --git a/stage0/Makefile.am b/stage0/Makefile.am
index 12029fb45..4228f607d 100644
--- a/stage0/Makefile.am
+++ b/stage0/Makefile.am
@@ -22,7 +22,15 @@
 
 
 GUILE_WARNINGS = -W0
-GUILE_OPTIMIZATIONS = -O1
+
+if !DEB_GUILE_32_BIT_BIG_ENDIAN
+  $(info Note: not adjusting GUILE_OPTIMIZATIONS for 32-bit big-endian architecture)
+  GUILE_OPTIMIZATIONS = -O1
+else
+  $(info Note: adjusting GUILE_OPTIMIZATIONS for 32-bit big-endian architecture)
+  GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps
+endif
+
 GUILE_BOOTSTRAP_STAGE = stage0
 
 include $(top_srcdir)/am/bootstrap.am
Oh, and you should be able to see those $(info ...) messages in the
build output, so we'll be able to see if it's picking the right setting.
(I just verified that it picks the right one for amd64, at least.)

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4

Reply to: