This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] i386: Do not attempt to change stack alignment
- From: fweimer at redhat dot com (Florian Weimer)
- To: libc-alpha at sourceware dot org
- Date: Tue, 22 May 2018 10:19:27 +0200
- Subject: [PATCH] i386: Do not attempt to change stack alignment
All supported GCC versions handle stack alignment as expected.
2018-05-22 Florian Weimer <fweimer@redhat.com>
i386: Do not attempt to change stack alignment. All supported GCC
versions handle stack alignment as expected.
* sysdeps/i386/Makefile [$(subdir) == math] (sysdep-CFLAGS): Do
not add -mpreferred-stack-boundary=4.
[$(subdir) == csu] (sysdep-CFLAGS): Likewise.
(stack-align-test-flags): Likewise.
[$(subdir) == stdlib] (CFLAGS-exit.c, CFLAGS-cxa_finalize.c):
Likewise.
[$(subdir) == elf] (CFLAGS-dl-init.c, CFLAGS-dl-fini.c)
(CFLAGS-dl-open.c, CFLAGS-dl-close.c, CFLAGS-dl-error.c): Likewise.
[$(subdir) == dlfcn] (CFLAGS-dlopen.c, CFLAGS-dlopenold.c)
(CFLAGS-dlclose.c, CFLAGS-dlerror.c): Likewise.
* sysdeps/i386/nptl/Makefile [$(subdir) == nptl]
(CFLAGS-pthread_create.c, CFLAGS-tst-align.c)
(CFLAGS-tst-align2.c): Likewise.
diff --git a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
index a1500454e5..1682394e76 100644
--- a/sysdeps/i386/Makefile
+++ b/sysdeps/i386/Makefile
@@ -19,46 +19,10 @@ CFLAGS-dl-load.c += -Wno-unused
CFLAGS-dl-reloc.c += -Wno-unused
endif
-# Most of the glibc routines don't ever call user defined callbacks
-# nor use any FPU or SSE* and as such don't need bigger %esp alignment
-# than 4 bytes.
-# Lots of routines in math will use FPU, so make math subdir an exception
-# here.
-# In gcc 4.6 (and maybe earlier?) giving -mpreferred-stack-boundary=2 is
-# an error, so don't try to reduce it here like we used to. We still
-# explicit set -mpreferred-stack-boundary=4 the places where it matters,
-# in case an older compiler defaulted to 2.
-ifeq ($(subdir),math)
-sysdep-CFLAGS += -mpreferred-stack-boundary=4
-else
ifeq ($(subdir),csu)
-sysdep-CFLAGS += -mpreferred-stack-boundary=4
gen-as-const-headers += link-defines.sym
else
-# Likewise, any function which calls user callbacks
-uses-callbacks += -mpreferred-stack-boundary=4
-# Likewise, any stack alignment tests
-stack-align-test-flags += -malign-double -mpreferred-stack-boundary=4
-endif
-endif
-
-# And a couple of other routines
-ifeq ($(subdir),stdlib)
-CFLAGS-exit.c += -mpreferred-stack-boundary=4
-CFLAGS-cxa_finalize.c += -mpreferred-stack-boundary=4
-endif
-ifeq ($(subdir),elf)
-CFLAGS-dl-init.c += -mpreferred-stack-boundary=4
-CFLAGS-dl-fini.c += -mpreferred-stack-boundary=4
-CFLAGS-dl-open.c += -mpreferred-stack-boundary=4
-CFLAGS-dl-close.c += -mpreferred-stack-boundary=4
-CFLAGS-dl-error.c += -mpreferred-stack-boundary=4
-endif
-ifeq ($(subdir),dlfcn)
-CFLAGS-dlopen.c += -mpreferred-stack-boundary=4
-CFLAGS-dlopenold.c += -mpreferred-stack-boundary=4
-CFLAGS-dlclose.c += -mpreferred-stack-boundary=4
-CFLAGS-dlerror.c += -mpreferred-stack-boundary=4
+stack-align-test-flags += -malign-double
endif
ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS)))
diff --git a/sysdeps/i386/nptl/Makefile b/sysdeps/i386/nptl/Makefile
index 93a6d30b44..73024033ee 100644
--- a/sysdeps/i386/nptl/Makefile
+++ b/sysdeps/i386/nptl/Makefile
@@ -18,9 +18,3 @@
ifeq ($(subdir),csu)
gen-as-const-headers += tcb-offsets.sym
endif
-
-ifeq ($(subdir),nptl)
-CFLAGS-pthread_create.c += -mpreferred-stack-boundary=4
-CFLAGS-tst-align.c += -mpreferred-stack-boundary=4
-CFLAGS-tst-align2.c += -mpreferred-stack-boundary=4
-endif