Subject: bug#44531: 27.1; Emacs 27 fails to build from source on m68k (regression)

From: Pip Cet <[email-masked]>
Date: Sat, 23 Jul 2022 14:42:58 +0000

On Sat, Jul 2, 2022 at 7:29 PM Stefan Monnier via Bug reports for GNU
Emacs, the Swiss army knife of text editors <[email-masked]>
wrote:
> > dumping fingerprint: 7b5c59c589dc151eb1e4269bd83fbe809616b5cb9bb5c80014d5b560b391dfb6
> > dump relocation out of range
>
> This error message basically says that the relation is not a multiple of
> the minimum expected alignment.  So it seems to be a direct consequence
> of the 16bit alignment used on m68k combined with the following from
> pdumper.el:

pdumper.c, I think :-)

>    [...]
>    DUMP_RELOC_ALIGNMENT_BITS = 2,
>
>    /* Minimum alignment required by dump file format.  */
>    DUMP_RELOCATION_ALIGNMENT = 1 << DUMP_RELOC_ALIGNMENT_BITS,
>    [...]
>
> I can't see anything in the code which explains what this alignment
> requirement is about.  You can try lowering DUMP_RELOC_ALIGNMENT_BITS
> to 1 and see if that works (long shot).

IIUC, the top (DUMP_RELOC_TYPE_BITS - DUMP_RELOC_ALIGNMENT_BITS) of
the relocation offsets stored by pdumper must be 0. That means we can
only address the first 512 MB of the dump in ordinary 32-bit pdumper
builds, and 256 MB on m68k with your fix. I'm not sure how useful a
data point this is without real silicon, but I tried on an m68k
emulator (qemu), could reproduce the bug, and your fix works there.

Pip