On 07/19/2017 06:51 PM, Andreas Schwab wrote:
>> emacs25 currently fails to build from source on m68k because the struct
>> Lisp_Object in src/lisp.h has incorrect alignment which results in the
>> tagged pointers used by the Lisp VM being corrupted.  This happens because
>> the native alignment on m68k is 16-bit such that the total size of 
>> List_Object
>> is not dividable by 8.
> 
> That cannot be the source of the problem since Lisp_Object is not 8-byte
> aligned on any 32-bit platform.

Quoting Michael Karcher who tracked down the issue:

"sizeof(struct Lisp_Symbol) is 22 bytes on m68k, but the code expects the
 size of the object to be dividable by 8."

And from src/lisp.h:

/***** Select the tagging scheme.  *****/
/* The following option controls the tagging scheme:
   - USE_LSB_TAG means that we can assume the least 3 bits of pointers are
     always 0, and we can thus use them to hold tag bits, without
     restricting our addressing space.

   If ! USE_LSB_TAG, then use the top 3 bits for tagging, thus
   restricting our possible address range.

   USE_LSB_TAG not only requires the least 3 bits of pointers returned by
   malloc to be 0 but also needs to be able to impose a mult-of-8 alignment
   on the few static Lisp_Objects used: lispsym, all the defsubr, and
   the two special buffers buffer_defaults and buffer_local_symbols.  */

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaub...@debian.org
`. `'   Freie Universitaet Berlin - glaub...@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913

Reply via email to