svn commit: r323187 - stable/11/lib/libcompiler_rt
Dimitry Andric
dim at FreeBSD.org
Tue Sep 5 16:59:21 UTC 2017
Author: dim
Date: Tue Sep 5 16:59:19 2017
New Revision: 323187
URL: https://svnweb.freebsd.org/changeset/base/323187
Log:
MFC r323001:
In compiler-rt, a few assembler implementations for i386 floating point
conversion functions use SSE2 instructions, but these are not guarded by
#ifdef __SSE2__, and there is no implementation using general purpose
registers. For these functions, use the generic C variants instead,
otherwise they will cause SIGILL on older processors.
Reported by: bsdpr at phoe.frmug.org
PR: 221733
Modified:
stable/11/lib/libcompiler_rt/Makefile.inc
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/lib/libcompiler_rt/Makefile.inc
==============================================================================
--- stable/11/lib/libcompiler_rt/Makefile.inc Tue Sep 5 15:21:34 2017 (r323186)
+++ stable/11/lib/libcompiler_rt/Makefile.inc Tue Sep 5 16:59:19 2017 (r323187)
@@ -55,18 +55,12 @@ SRCF+= fixunsxfsi
SRCF+= fixunsxfti
SRCF+= fixxfdi
SRCF+= fixxfti
-SRCF+= floatdidf
-SRCF+= floatdisf
SRCF+= floatditf
-SRCF+= floatdixf
SRCF+= floatsitf
SRCF+= floattidf
SRCF+= floattisf
SRCF+= floattixf
-SRCF+= floatundidf
-SRCF+= floatundisf
SRCF+= floatunditf
-SRCF+= floatundixf
SRCF+= floatunsidf
SRCF+= floatunsisf
SRCF+= floatuntidf
@@ -122,6 +116,23 @@ SRCF+= udivmodti4
SRCF+= udivti3
SRCF+= umoddi3
SRCF+= umodti3
+
+# Avoid using SSE2 instructions on i386.
+.if ${MACHINE_CPUARCH} == "i386"
+SRCS+= floatdidf.c
+SRCS+= floatdisf.c
+SRCS+= floatdixf.c
+SRCS+= floatundidf.c
+SRCS+= floatundisf.c
+SRCS+= floatundixf.c
+.else
+SRCF+= floatdidf
+SRCF+= floatdisf
+SRCF+= floatdixf
+SRCF+= floatundidf
+SRCF+= floatundisf
+SRCF+= floatundixf
+.endif
# __cpu_model support, only used on x86
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
More information about the svn-src-stable
mailing list