Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Jan 2011 20:51:28 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r216977 - in head/libexec/rtld-elf: amd64 i386
Message-ID:  <201101042051.p04KpSGk054564@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Tue Jan  4 20:51:28 2011
New Revision: 216977
URL: http://svn.freebsd.org/changeset/base/216977

Log:
  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

Modified:
  head/libexec/rtld-elf/amd64/Makefile.inc
  head/libexec/rtld-elf/i386/Makefile.inc

Modified: head/libexec/rtld-elf/amd64/Makefile.inc
==============================================================================
--- head/libexec/rtld-elf/amd64/Makefile.inc	Tue Jan  4 20:38:52 2011	(r216976)
+++ head/libexec/rtld-elf/amd64/Makefile.inc	Tue Jan  4 20:51:28 2011	(r216977)
@@ -1,5 +1,6 @@
 # $FreeBSD$
 
+CFLAGS+=	-mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow -msoft-float
 # Uncomment this to build the dynamic linker as an executable instead
 # of a shared library:
 #LDSCRIPT=	${.CURDIR}/${MACHINE_CPUARCH}/elf_rtld.x

Modified: head/libexec/rtld-elf/i386/Makefile.inc
==============================================================================
--- head/libexec/rtld-elf/i386/Makefile.inc	Tue Jan  4 20:38:52 2011	(r216976)
+++ head/libexec/rtld-elf/i386/Makefile.inc	Tue Jan  4 20:51:28 2011	(r216977)
@@ -1,5 +1,6 @@
 # $FreeBSD$
 
+CFLAGS+=	-mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow -msoft-float
 # Uncomment this to build the dynamic linker as an executable instead
 # of a shared library:
 #LDSCRIPT=	${.CURDIR}/${MACHINE_CPUARCH}/elf_rtld.x



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101042051.p04KpSGk054564>