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