Date: Tue, 4 Jan 2011 20:51:28 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/libexec/rtld-elf/amd64 Makefile.inc src/libexec/rtld-elf/i386 Makefile.inc Message-ID: <201101042051.p04Kpm6w082807@repoman.freebsd.org>
index | next in thread | raw e-mail
dim 2011-01-04 20:51:28 UTC
FreeBSD src repository
Modified files:
libexec/rtld-elf/amd64 Makefile.inc
libexec/rtld-elf/i386 Makefile.inc
Log:
SVN rev 216977 on 2011-01-04 20:51:28Z by dim
On amd64 and i386, tell the compiler to refrain from generating SSE,
3DNow, MMX and floating point instructions in rtld-elf.
Otherwise, _rtld_bind() (and whatever it calls) could possibly clobber
function arguments that are passed in SSE/3DNow/MMX/FP registers,
usually floating point values. This can happen, for example, when clang
generates SSE code for memset() or memcpy() calls.
One symptom of this is sshd dying early on amd64 with "PRNG not seeded",
which is ultimately caused by libcrypto.so.6 calling RAND_add() with a
double parameter. That parameter is passed via %xmm0, which gets wiped
out by an SSE memset() in _rtld_bind().
Reviewed by: kib, kan
Revision Changes Path
1.4 +1 -0 src/libexec/rtld-elf/amd64/Makefile.inc
1.4 +1 -0 src/libexec/rtld-elf/i386/Makefile.inc
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101042051.p04Kpm6w082807>
