Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/amd64/include Bump STACK_ALIGNBYTES to (16 - 1) to ...



details:   https://anonhg.NetBSD.org/src/rev/965460f0aaf8
branches:  trunk
changeset: 997615:965460f0aaf8
user:      rin <rin%NetBSD.org@localhost>
date:      Sat Mar 16 11:50:48 2019 +0000

description:
Bump STACK_ALIGNBYTES to (16 - 1) to satisfy requirement by AMD64
System V ABI in kernel level. This is because

(1) for LLDB, we want to bypass libc/csu (and therefore manual stack
    alignment in _start), and

(2) rtld in glibc >= 2.23 for Linux/x86_64 requires it.

Fix SEGV for Linux/x86_64 binaries with glibc >= 2.23, reported as
PR port-amd64/54052.

diffstat:

 sys/arch/amd64/include/param.h |  9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diffs (23 lines):

diff -r 42362fc3132b -r 965460f0aaf8 sys/arch/amd64/include/param.h
--- a/sys/arch/amd64/include/param.h    Sat Mar 16 11:43:40 2019 +0000
+++ b/sys/arch/amd64/include/param.h    Sat Mar 16 11:50:48 2019 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: param.h,v 1.29 2019/02/11 14:59:32 cherry Exp $        */
+/*     $NetBSD: param.h,v 1.30 2019/03/16 11:50:48 rin Exp $   */
 
 #ifdef __x86_64__
 
@@ -23,6 +23,13 @@
 
 #define ALIGNED_POINTER(p,t)   1
 
+/*
+ * Align stack as required by AMD64 System V ABI. This is because
+ * (1) we want to bypass libc/csu in LLDB, and
+ * (2) rtld in glibc >= 2.23 for Linux/x86_64 requires it.
+ */
+#define STACK_ALIGNBYTES       (16 - 1)
+
 #define ALIGNBYTES32           (sizeof(int) - 1)
 #define ALIGN32(p)             (((u_long)(p) + ALIGNBYTES32) &~ALIGNBYTES32)
 



Home | Main Index | Thread Index | Old Index