aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2016-07-18 15:16:11 -0700
committerH.J. Lu <hjl.tools@gmail.com>2016-07-18 15:16:24 -0700
commitd957c4d3fa48d685ff2726c605c988127ef99395 (patch)
tree5a685d949970ee49e0ad65443ad1001b967b2135 /sysdeps/i386
parent41d036588230253487e94bf2608f5213a23c7fb2 (diff)
downloadglibc-d957c4d3fa48d685ff2726c605c988127ef99395.tar
glibc-d957c4d3fa48d685ff2726c605c988127ef99395.tar.gz
glibc-d957c4d3fa48d685ff2726c605c988127ef99395.tar.bz2
glibc-d957c4d3fa48d685ff2726c605c988127ef99395.zip
i386: Compile rtld-*.os with -mno-sse -mno-mmx -mfpmath=387
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).
Diffstat (limited to 'sysdeps/i386')
-rw-r--r--sysdeps/i386/Makefile7
1 files changed, 5 insertions, 2 deletions
diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
index 6c91842b0d..e94f2cbd66 100644
--- a/sysdeps/i386/Makefile
+++ b/sysdeps/i386/Makefile
@@ -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