From owner-cvs-src-old@FreeBSD.ORG Tue Jan 4 20:51:48 2011 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 916001065675 for ; Tue, 4 Jan 2011 20:51:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 648FF8FC19 for ; Tue, 4 Jan 2011 20:51:48 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.4/8.14.4) with ESMTP id p04KpmSn082808 for ; Tue, 4 Jan 2011 20:51:48 GMT (envelope-from dim@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.4/8.14.4/Submit) id p04Kpm6w082807 for cvs-src-old@freebsd.org; Tue, 4 Jan 2011 20:51:48 GMT (envelope-from dim@repoman.freebsd.org) Message-Id: <201101042051.p04Kpm6w082807@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to dim@repoman.freebsd.org using -f From: Dimitry Andric Date: Tue, 4 Jan 2011 20:51:28 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/libexec/rtld-elf/amd64 Makefile.inc src/libexec/rtld-elf/i386 Makefile.inc X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Jan 2011 20:51:48 -0000 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