This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 2/7] Don't disable SSE in x86-64 ld.so
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Roland McGrath <roland at hack dot frob dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Tue, 25 Aug 2015 14:30:00 -0700
- Subject: Re: [PATCH 2/7] Don't disable SSE in x86-64 ld.so
- Authentication-results: sourceware.org; auth=none
- References: <20150825122223 dot GA1588 at gmail dot com> <20150825183521 dot 2898C2C3A73 at topped-with-meat dot com> <CAMe9rOrGNoUMu9=yhp3xrXTcy2CqG-BgVR26qw4O0pry_azM7g at mail dot gmail dot com> <20150825210854 dot AF8382C3A94 at topped-with-meat dot com>
On Tue, Aug 25, 2015 at 2:08 PM, Roland McGrath <roland@hack.frob.com> wrote:
> I meant comments in sysdeps/i386/Makefile.
Here is the updated patch. OK for master?
--
H.J.
From 92ca9e8d613f9f891e12e3e59d7e9a5855cb129c Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 28 Jul 2015 18:56:18 -0700
Subject: [PATCH] Don't disable SSE in x86-64 ld.so
Since x86-64 ld.so preserves vector registers now, we can use SSE in
x86-64 ld.so. We should run tst-ld-sse-use.sh only on i386.
* sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os,
tests-special, $(objpfx)tst-ld-sse-use.out): Moved to ...
* sysdeps/i386/Makefile [$(subdir) == elf] (CFLAGS-.os,
tests-special, $(objpfx)tst-ld-sse-use.out): Here. Update
comments.
* sysdeps/x86_64/Makefile [$(subdir) == elf] (CFLAGS-.os): Add
-mno-mmx for $(all-rtld-routines).
* sysdeps/x86/tst-ld-sse-use.sh: Moved to ...
* sysdeps/i386/tst-ld-sse-use.sh: Here. Replace x86-64 with
i386.
---
sysdeps/i386/Makefile | 14 ++++++++++++++
sysdeps/{x86 => i386}/tst-ld-sse-use.sh | 2 +-
sysdeps/x86/Makefile | 11 -----------
sysdeps/x86_64/Makefile | 3 +++
4 files changed, 18 insertions(+), 12 deletions(-)
rename sysdeps/{x86 => i386}/tst-ld-sse-use.sh (97%)
diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
index 717d8e7..4f83c82 100644
--- a/sysdeps/i386/Makefile
+++ b/sysdeps/i386/Makefile
@@ -83,3 +83,17 @@ endif
ifeq ($(subdir),csu)
gen-as-const-headers += tlsdesc.sym
endif
+
+ifeq ($(subdir),elf)
+CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+ -mno-sse -mno-mmx)
+
+tests-special += $(objpfx)tst-ld-sse-use.out
+# Make sure no code in ld.so uses xmm/ymm/zmm registers on i386 since
+# the first 3 xmm/ymm/zmm registers are used to pass vector parameters
+# which must be preserved.
+$(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)
+endif
diff --git a/sysdeps/x86/tst-ld-sse-use.sh b/sysdeps/i386/tst-ld-sse-use.sh
similarity index 97%
rename from sysdeps/x86/tst-ld-sse-use.sh
rename to sysdeps/i386/tst-ld-sse-use.sh
index 839de18..85a0651 100755
--- a/sysdeps/x86/tst-ld-sse-use.sh
+++ b/sysdeps/i386/tst-ld-sse-use.sh
@@ -1,5 +1,5 @@
#! /bin/bash
-# Make sure no code in ld.so uses xmm/ymm/zmm registers on x86-64.
+# Make sure no code in ld.so uses xmm/ymm/zmm registers on i386.
# Copyright (C) 2009-2015 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
diff --git a/sysdeps/x86/Makefile b/sysdeps/x86/Makefile
index c262fdf..0de4f42 100644
--- a/sysdeps/x86/Makefile
+++ b/sysdeps/x86/Makefile
@@ -1,14 +1,3 @@
-ifeq ($(subdir),elf)
-CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
- -mno-sse -mno-mmx)
-
-tests-special += $(objpfx)tst-ld-sse-use.out
-$(objpfx)tst-ld-sse-use.out: ../sysdeps/x86/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)
-endif
-
ifeq ($(subdir),csu)
gen-as-const-headers += cpu-features-offsets.sym rtld-global-offsets.sym
endif
diff --git a/sysdeps/x86_64/Makefile b/sysdeps/x86_64/Makefile
index e50bcad..7bcfd87 100644
--- a/sysdeps/x86_64/Makefile
+++ b/sysdeps/x86_64/Makefile
@@ -19,6 +19,9 @@ gen-as-const-headers += locale-defines.sym
endif
ifeq ($(subdir),elf)
+CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+ -mno-mmx)
+
sysdep-dl-routines += tlsdesc dl-tlsdesc
tests += ifuncmain8
--
2.4.3