From 81dc3d6865b32daf9690f5dc9e187f66b7d65a9d Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Tue, 25 Jul 2017 01:12:50 +0200 Subject: [PATCH] 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 Gbp-Pq: Name 0009-A-memory-alignment-problem-causing-m68k-failures-has.patch --- 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)) -- 2.30.2