[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-amd64/54052: bump STACK_ALIGNBYTES for COMPAT_LINUX
On 2019/03/12 7:54, Joerg Sonnenberger wrote:
On Mon, Mar 11, 2019 at 05:50:00AM +0000, rokuyama.rk%gmail.com@localhost wrote:
Linux binaries with glibc >= 2.23 randomly crashes in dynamic linker.
By bisectioning, the cause turns out to be this commit
So the real problem is that ld.so doesn't do what any normal startup
code does by aligning the stack explicitly. *sigh*
I don't get what you means...
(1) The bottom of stack (i.e., %rsp = &argc) is required to be aligned
to 16-byte boundary by "System V ABI - AMD64 Architecture Processor
(see pp. 29-30).
(2) However, we align it to only 8-byte boundary; we don't define
STACK_ALIGNBYTES for amd64, and __ALIGNBYTES = (8 - 1) is used instead:
1394 static size_t
1395 calcstack(struct execve_data * restrict data, const size_t gaplen)
1415 /* make the stack "safely" aligned */
1416 return STACK_LEN_ALIGN(stacklen, STACK_ALIGNBYTES);
(3) If the bottom of stack is aligned to 16-byte boundary, ld.so for
Linux works fine.
Therefore, I think that ld.so is legal within System V ABI. Isn't it?
Main Index |
Thread Index |