i386: Compile rtld-*.os with -mno-sse -mno-mmx -mfpmath=387
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 18 Jul 2016 22:16:11 +0000 (15:16 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 18 Jul 2016 22:16:24 +0000 (15:16 -0700)
Compile i386 rtld-*.os with -mno-sse -mno-mmx -mfpmath=387 so that no
code in ld.so uses mm/xmm/ymm/zmm registers on i386 since the first 3
mm/xmm/ymm/zmm registers are used to pass vector parameters which must
be preserved.

* sysdeps/i386/Makefile (rtld-CFLAGS): New.
[subdir == elf] (CFLAGS-.os): Replace -mno-sse -mno-mmx
-mfpmath=387 with $(rtld-CFLAGS).
[subdir != elf] (CFLAGS-.os): Compile rtld-*.os with
$(rtld-CFLAGS).

ChangeLog
sysdeps/i386/Makefile

index 855032f..b587b40 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-07-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/i386/Makefile (rtld-CFLAGS): New.
+       [subdir == elf] (CFLAGS-.os): Replace -mno-sse -mno-mmx
+       -mfpmath=387 with $(rtld-CFLAGS).
+       [subdir != elf] (CFLAGS-.os): Compile rtld-*.os with
+       $(rtld-CFLAGS).
+
 2016-07-18   Ross Burton  <ross.burton@intel.com>
             Khem Raj  <raj.khem@gmail.com>
 
index 6c91842..e94f2cb 100644 (file)
@@ -84,17 +84,20 @@ ifeq ($(subdir),csu)
 gen-as-const-headers += tlsdesc.sym
 endif
 
-ifeq ($(subdir),elf)
 # Make sure no code in ld.so uses mm/xmm/ymm/zmm registers on i386 since
 # the first 3 mm/xmm/ymm/zmm registers are used to pass vector parameters
 # which must be preserved.
 # With SSE disabled, ensure -fpmath is not set to use sse either.
+rtld-CFLAGS = -mno-sse -mno-mmx -mfpmath=387
+ifeq ($(subdir),elf)
 CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
-                  -mno-sse -mno-mmx -mfpmath=387)
+                  $(rtld-CFLAGS))
 
 tests-special += $(objpfx)tst-ld-sse-use.out
 $(objpfx)tst-ld-sse-use.out: ../sysdeps/i386/tst-ld-sse-use.sh $(objpfx)ld.so
        @echo "Checking ld.so for SSE register use.  This will take a few seconds..."
        $(BASH) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@; \
        $(evaluate-test)
+else
+CFLAGS-.os += $(if $(filter rtld-%.os,$(@F)), $(rtld-CFLAGS))
 endif