[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Question on BIGGEST_ALIGNMENT in GCC on NetBSD/m68k



On Mon, 2025-06-16 at 10:45 +0200, Geert Uytterhoeven wrote:
> The Linux kernel also knows m68k has an alignment of 2 bytes.

Yes, we have identified (some of) these parts yet. I suggested to add a
kernel option for m68k to allow 4 bytes alignment there.

> > > And yet it works without any problems so far. Please try the Gentoo chroot yourself.
> > 
> > Because most of the structures are correctly aligned by default, but
> > some of them not. You must run glibc test suite and LTP to be sure there
> > is no regression.
> 
> Indeed.
> 
> > In QEMU, alignment is defined here:
> > 
> > include/user/abitypes.h
> > 
> > for m68k the values to change are:
> > 
> > #ifdef TARGET_M68K
> > #define ABI_INT_ALIGNMENT 2
> > #define ABI_LONG_ALIGNMENT 2
> > #define ABI_LLONG_ALIGNMENT 2
> > #endif
> 
> Note that it also used to have:
> 
>     #ifdef TARGET_CRIS
>     #define ABI_SHORT_ALIGNMENT 1
>     #define ABI_INT_ALIGNMENT 1
>     #define ABI_LONG_ALIGNMENT 1
>     #define ABI_LLONG_ALIGNMENT 1
>     #endif
> 
> and still has:
> 
>     #if (defined(TARGET_I386) && !defined(TARGET_X86_64)) \
>         || defined(TARGET_SH4) \
>         || defined(TARGET_OPENRISC) \
>         || defined(TARGET_MICROBLAZE) \
>         || defined(TARGET_NIOS2)
>     #define ABI_LLONG_ALIGNMENT 4
>     #endif
> 
> which will probably become the next victim of the 64-bit little-endian
> natural-alignment monoculture...

Geert, I think this sentiment is not fair. As I we have previously discussed, the
2 bytes alignment on Linux/m68k was never intended by the SysV ELF ABI designers
and it's based on a historical mistake.

I don't understand why it's considered to be such an unorthodox change to make
when even Commodore's own Amiga Unix uses 4 bytes alignment on the Amiga.

You know that I am the last person on the planet to lobby for deprecating old
and exotic architectures and ABIs. The motivation for this ABI change is the
result of a decade-long frustration with alignment issues on Debian/m68k which
I simply want to solve once and for all.

> > And there will be a problem with binfmt_misc because we can't rely on
> > the ELF signature to know which qemu-user to run, the one with 2byte
> > alignment or the one with 4byte alignment?
> 
> Exactly.

We could use PT_NOTE [1] for this purpose.

Adrian

> [1] https://github.com/search?q=repo%3Aqemu%2Fqemu%20PT_NOTE&type=code

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


Reply to: