Re: [GIT PULL] siginfo fix for v4.16-rc5

From: Andreas Schwab
Date: Tue Apr 03 2018 - 13:27:04 EST


On Apr 03 2018, Josh Juran <jjuran@xxxxxxxxx> wrote:

> On Apr 3, 2018, at 10:27 AM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote:
>
>> Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> writes:
>>
>>> On Mon, Apr 2, 2018 at 10:17 PM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote:
>>>
>>>> A 2-byte alignment for 4 byte pointers. That is a new one to me.
>>>
>>> Not just for pointers, also for int and long.
>>
>> The smallest I have seen previously has been 64bit integers having
>> 32bit alignment. 32bit entities having only 16bit alignment on a 32bit
>> arch was simply a surprise. Even when it works there tend to be good
>> reasons not to do that by default.
>
> The 68K architecture began as 16-bit with the 68000. Rather than tightening requirements, the 68020 not only maintained compatibility with 16-bit alignment, but also forgave byte-misaligned data accesses (albeit with a performance penalty). Jumping to an odd address is still an error, though.

The m68k-linux gcc port started as a clone of the Sun3 port, which has a
history dating back to the 68000, which is why it has a maximum of
16-bit alignment. When I implemented ELF support for m68k-linux I
wanted to follow the SVR4 ABI (which has 32-bit alignment), but there
were too many UAPI structures (esp. struct stat) that would have become
incompatible (it would have made it impossible to run ELF binaries on an
a.out kernel or vice-versa), so I had to keep the historical mistake.

Andreas.

--
Andreas Schwab, schwab@xxxxxxxxxxxxxx
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."