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:  [email protected]
  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"
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to