Fix memory alignment problem causing FTBS on m68k
authorRob Browning <rlb@defaultvalue.org>
Fri, 28 Jul 2017 17:06:14 +0000 (12:06 -0500)
committerRob Browning <rlb@defaultvalue.org>
Fri, 28 Jul 2017 17:06:39 +0000 (12:06 -0500)
Thanks to John Paul Adrian Glaubitz for reporting the problem and
providing an earlier fix.

Closes: 868868
1  2 
debian/.git-dpm
debian/patches/0009-A-memory-alignment-problem-causing-m68k-failures-has.patch
debian/patches/series

diff --cc debian/.git-dpm
index 717aabd62a635160c97e7b615917e4076aeafb3a,0000000000000000000000000000000000000000..8cc1ea193cadd9e5f086f57f605dfe485f80323a
mode 100644,000000..100644
--- /dev/null
@@@ -1,8 -1,0 +1,8 @@@
- 47583d9d9a27fe9fa4fe96a932501497dc27af56
- 47583d9d9a27fe9fa4fe96a932501497dc27af56
 +# see git-dpm(1) from git-dpm package
++e0103758d20a59363b6a356e8d50d28cf25616b1
++e0103758d20a59363b6a356e8d50d28cf25616b1
 +09a20fd582947ca08f0e80bc5353ae8abfe1e5ed
 +09a20fd582947ca08f0e80bc5353ae8abfe1e5ed
 +emacs25_25.2+1.orig.tar.xz
 +655de53b3ee88f19a7c85005636fa8851a6f71b1
 +23189972
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6e68511361d769db53a0740a5a6e7060a33cc3cd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,65 @@@
++From e0103758d20a59363b6a356e8d50d28cf25616b1 Mon Sep 17 00:00:00 2001
++From: Andreas Schwab <schwab@linux-m68k.org>
++Date: Tue, 25 Jul 2017 01:12:50 +0200
++Subject: A memory alignment problem causing m68k failures has been fixed
++
++This patch has been backported from upstream to fix m68k build
++failures:
++
++  Properly align global lispsym
++
++  * lib-src/make-docfile.c (close_emacs_globals): Wrap struct
++  Lisp_Symbols inside struct.
++  * src/alloc.c (sweep_symbols): Update use of lispsym.
++  * src/lisp.h (builtin_lisp_symbol): Likewise.
++
++Origin: backport, commit: 7a4d9f6304cffa39642507609605bcbfa40d4675
++Bug-Debian: http://bugs.debian.org/868868
++Forwarded: not-needed
++---
++ lib-src/make-docfile.c | 4 +++-
++ src/alloc.c            | 2 +-
++ src/lisp.h             | 2 +-
++ 3 files changed, 5 insertions(+), 3 deletions(-)
++
++diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
++index 29061b76b26..bd268553248 100644
++--- a/lib-src/make-docfile.c
+++++ b/lib-src/make-docfile.c
++@@ -667,7 +667,9 @@ close_emacs_globals (ptrdiff_t num_symbols)
++         "#ifndef DEFINE_SYMBOLS\n"
++         "extern\n"
++         "#endif\n"
++-        "struct Lisp_Symbol alignas (GCALIGNMENT) lispsym[%td];\n"),
+++        "struct {\n"
+++        "  struct Lisp_Symbol alignas (GCALIGNMENT) s;\n"
+++        "} lispsym[%td];\n"),
++        num_symbols);
++ }
++ 
++diff --git a/src/alloc.c b/src/alloc.c
++index 68bee7728c0..9a96a425071 100644
++--- a/src/alloc.c
+++++ b/src/alloc.c
++@@ -6823,7 +6823,7 @@ sweep_symbols (void)
++   symbol_free_list = NULL;
++ 
++   for (int i = 0; i < ARRAYELTS (lispsym); i++)
++-    lispsym[i].gcmarkbit = 0;
+++    lispsym[i].s.gcmarkbit = 0;
++ 
++   for (sblk = symbol_block; sblk; sblk = *sprev)
++     {
++diff --git a/src/lisp.h b/src/lisp.h
++index 5aee80cea11..08c40dc3795 100644
++--- a/src/lisp.h
+++++ b/src/lisp.h
++@@ -1110,7 +1110,7 @@ make_lisp_symbol (struct Lisp_Symbol *sym)
++ INLINE Lisp_Object
++ builtin_lisp_symbol (int index)
++ {
++-  return make_lisp_symbol (lispsym + index);
+++  return make_lisp_symbol (&lispsym[index].s);
++ }
++ 
++ #define XSETINT(a, b) ((a) = make_number (b))
index 0945aeefcb512bcb01cf4bb77dde17f04fb792a1,0000000000000000000000000000000000000000..4fc609b1aeefb3cbcfb50e6aafe4f99d73718e04
mode 100644,000000..100644
--- /dev/null
@@@ -1,8 -1,0 +1,9 @@@
 +0001-Prefer-usr-share-info-emacs-MAJORVERSION.patch
 +0002-Run-debian-startup-and-set-debian-emacs-flavor.patch
 +0003-Remove-files-that-appear-to-be-incompatible-with-the.patch
 +0004-Adjust-documentation-references-for-Debian.patch
 +0005-Modify-the-output-of-version-to-indicate-Debian-modi.patch
 +0006-Don-t-try-to-build-src-macuvs.h-via-IVD_Sequences.tx.patch
 +0007-Kill-gpg-agent-in-package-test.el-to-avoid-a-race.patch
 +0008-Don-t-provide-openssl-s_client-as-an-option-for-ssl-.patch
++0009-A-memory-alignment-problem-causing-m68k-failures-has.patch