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

Re: Question on BIGGEST_ALIGNMENT in GCC on NetBSD/m68k



On Fri, 2025-06-06 at 20:20 +1000, Finn Thain wrote:
> Whereas, the ability to use old binaries is proof that we care about rule 
> #1 don't break userspace.

Who is "we"? The official(!) ABI says that pointers are supposed to be aligned
with 4 bytes, not 2 bytes. It's the current implementation that violates the
ABI, not what I want to achieve which is make Linux/m68k adhere to the official
specification.

Furthermore, we're still talking about a hobbyist platform here which hasn't been
in production use for more than ten years. It doesn't really matter whether we break
the ABI or not.

And it's not like there isn't strong case for making this change. As I have tirelessly
explained, the current port with 2 bytes alignment is simply no longer feasible since
an increasing number of packages either require 4 bytes alignment or require Rust.

These include more and more fundamental packages such as coreutils, the kernel or various
Python packages such as python-cryptography. It's simply not an option to continue on
the current path as it has become a dead-end.

I don't see the point in maintaining something that becomes increasingly useless because
more and more packages are no longer buildable. If kernel people think that usefulness
is already established when you can boot busybox and type some commands, then you might
be able to continue on that path.

But I'm a distribution maintainer and distributions consist of way more packages than
the kernel, busybox and the toolchain. And even the toolchain doesn't even fully build
on Linux/m68k anymore because it requires 4 bytes alignment for LLVM, gccgo and mold.

So, whatever we currently have that we would break compatibility with, I do not think
that it's worth the effort to keep it alive.

> Having said that, I agree that there is scope for a better ABI. 
> Users/developers will eventually want solutions to the Y2038 problem.

This has already been addressed in Debian and surprisingly, no started a fight over it.

I don't see why it shouldn't be possible to do the same with the alignment. We have the
full source available. We can rebuild everything and I have already created an initial
4 bytes alignment bootstrap with the help of Helmut Grohne's fantastic rebootstrap project.

So far, it works as expected and multiple packages that previously didn't build because
of the 2 bytes alignment, just built fine and without any further patches. This is
exactly what I want.

> > > BTW, looking into the history of __ADDR_BND_PKEY_PAD() (which is 
> > > overkill on m68k, as __alignof__(void *) = 2, but might still be 
> > > useful for anyone wanting to revive CRIS support ;-), I ran into 
> > > Andreas' explanation why the minimal alignment is still 2 bytes: 
> > > https://lore.kernel.org/all/87y3i442w1.fsf@linux-m68k.org/.
> > 
> > This post just proves that it's always a bad idea to keep historical 
> > burden instead of fixing it.
> > 
> > Again, can you please bring up a convincing argument why it would be a 
> > hard problem to break the ABI for Linux on 40-year-old hardware? And who 
> > would be affected by it?
> > 
> 
> I think Arnd already answered those questions: 
> https://lore.kernel.org/all/383faec7-8987-4680-920d-8f802e1bea34@app.fastmail.com/
> 
> Moreover, "what's wrong with my idea" is the wrong question. The right 
> question is, "what's wrong with my patches?"

Finn, again, you haven't contributed any useful input to help alleviate the
original problem. I don't really understand why you think it's acceptable to
constantly bombard my efforts with such comments. How does this help?

Please re-read what John Klos wrote on this matter as he already pointed out
why your comments to this discussion aren't moving us any further here.

> > The ABI isn't set in stone and if need to break it to fix fundamental 
> > problems, then be it.
> 
> Well, that's a value judgement you're free to make regarding your systems. 
> It's easy to find fault in other peoples' systems but it's also pointless. 
> It won't get us closer to a consensus that will hold for another 30 years.

I'm not seeing how violating the official ABI was ever agreed upon. It seems
that Andreas took this decision in his own hand while the NetBSD people were
courageous enough to switch the default alignment when switching the executable
format.

Adrian

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


Reply to: