From: Andreas Schwab Date: Mon, 24 Jul 2017 23:12:50 +0000 (+0200) Subject: A memory alignment problem causing m68k failures has been fixed X-Git-Tag: archive/raspbian/1%26.1+1-3+rpi1~1^2~6 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=81dc3d6865b32daf9690f5dc9e187f66b7d65a9d;p=emacs.git 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 --- 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))