diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-07-18 15:16:11 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-07-18 15:16:24 -0700 |
commit | d957c4d3fa48d685ff2726c605c988127ef99395 (patch) | |
tree | 5a685d949970ee49e0ad65443ad1001b967b2135 | |
parent | 41d036588230253487e94bf2608f5213a23c7fb2 (diff) | |
download | glibc-d957c4d3fa48d685ff2726c605c988127ef99395.tar.gz glibc-d957c4d3fa48d685ff2726c605c988127ef99395.tar.xz 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).
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | sysdeps/i386/Makefile | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 855032f0ed..b587b40b01 100644 --- 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> 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 |