svn commit: r355569 - head/sys/amd64/linux32

John Baldwin jhb at FreeBSD.org
Mon Dec 9 23:28:27 UTC 2019


On 12/9/19 12:01 PM, Joerg Sonnenberger wrote:
> On Mon, Dec 09, 2019 at 07:18:06PM +0000, John Baldwin wrote:
>> Author: jhb
>> Date: Mon Dec  9 19:18:05 2019
>> New Revision: 355569
>> URL: https://svnweb.freebsd.org/changeset/base/355569
>>
>> Log:
>>   Use 4 byte stack alignment instead of 8 byte.
>>   
>>   This was an old bug prior to r355373 and mostly harmless as it would
>>   waste at most a handful of bytes on the stack.
> 
> Doesn't Linux assume 128bit alignment for i386 nowadays?

If it does, that is separate.  This is about individual things
we copy out onto the stack such as the path to the executable
name, and random bytes for AT_RANDOM, etc. being aligned on a 4
byte boundary.  It used 'rounddown()' with 'sizeof(void *)'
before r355373 because that was copy and pasted from
sys/i386/linux/linux_sysvec.c.  But void * is 8 bytes on amd64,
not 4 bytes as on i386.

If Linux/i386 needs 16 byte alignment for the initial stack
pointer, then it needs something like the change to align vectp
in sys/amd64/linux/linux_sysent.c:linux_copyout_strings both in this file
and in sys/i386/linux/linux_sysent.c before writing out the argv
array.

-- 
John Baldwin


More information about the svn-src-all mailing list