Unbreak Linux binaries linked against new glibc, such as the ones

from recent Ubuntu versions.  Without it they segfault on startup.

Reviewed by:	emaste
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D20687
This commit is contained in:
trasz 2019-09-03 19:48:23 +00:00
parent 97c1567f72
commit 541e57af0b

View File

@ -343,6 +343,12 @@ linux_copyout_strings(struct image_params *imgp)
*/
vectp -= imgp->args->argc + 1 + imgp->args->envc + 1;
/*
* Starting with 2.24, glibc depends on a 16-byte stack alignment.
* One "long argc" will be prepended later.
*/
vectp = (char **)((((uintptr_t)vectp + 8) & ~0xF) - 8);
/* vectp also becomes our initial stack base. */
stack_base = (register_t *)vectp;