Module Name: src
Committed By: matt
Date: Wed Dec 11 17:31:56 UTC 2013
Modified Files:
src/tests/lib/csu: Makefile.check_stack
Added Files:
src/tests/lib/csu/arch/alpha: h_initfini_align.S
src/tests/lib/csu/arch/arm: h_initfini_align.S
src/tests/lib/csu/arch/mips: h_initfini_align.S
src/tests/lib/csu/arch/powerpc: h_initfini_align.S
src/tests/lib/csu/arch/vax: h_initfini_align.S
Log Message:
Add stack alignment checks for alpha, arm, mips, powerpc, and vax.
Fix makefile to support MACHINE_CPU
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/csu/Makefile.check_stack
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/alpha/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/arm/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/mips/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/powerpc/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/vax/h_initfini_align.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/lib/csu/Makefile.check_stack
diff -u src/tests/lib/csu/Makefile.check_stack:1.1 src/tests/lib/csu/Makefile.check_stack:1.2
--- src/tests/lib/csu/Makefile.check_stack:1.1 Tue Nov 30 18:38:53 2010
+++ src/tests/lib/csu/Makefile.check_stack Wed Dec 11 17:31:55 2013
@@ -1,9 +1,14 @@
-# $NetBSD: Makefile.check_stack,v 1.1 2010/11/30 18:38:53 joerg Exp $
+# $NetBSD: Makefile.check_stack,v 1.2 2013/12/11 17:31:55 matt Exp $
.include <bsd.own.mk>
+.if exists(${.PARSEDIR}/arch/${MACHINE_ARCH})
CSU_ARCHDIR= ${.PARSEDIR}/arch/${MACHINE_ARCH}
.PATH: ${CSU_ARCHDIR}
+.elif exists(${.PARSEDIR}/arch/${MACHINE_CPU})
+CSU_ARCHDIR= ${.PARSEDIR}/arch/${MACHINE_CPU}
+.PATH: ${CSU_ARCHDIR}
+.endif
.if exists(${CSU_ARCHDIR}/h_initfini_align.S)
SRCS_CHECK_STACK= h_initfini_align.S
CPPFLAGS_CHECK_STACK+= -DCHECK_STACK_ALIGNMENT
Added files:
Index: src/tests/lib/csu/arch/alpha/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/alpha/h_initfini_align.S:1.1
--- /dev/null Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/alpha/h_initfini_align.S Wed Dec 11 17:31:55 2013
@@ -0,0 +1,16 @@
+/* $NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:55 matt Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:55 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+LEAF_NOPROFILE(check_stack_alignment, 0)
+ ldiq v0, 0
+ and sp, 7, t0
+ cmoveq t0, 1, v0
+ ret
+END(check_stack_alignment)
Index: src/tests/lib/csu/arch/arm/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/arm/h_initfini_align.S:1.1
--- /dev/null Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/arm/h_initfini_align.S Wed Dec 11 17:31:56 2013
@@ -0,0 +1,20 @@
+/* $NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+ARM_ENTRY(check_stack_alignment)
+#ifdef __ARM_EABI__
+ tst sp, #7
+#else
+ tst sp, #3
+#endif
+ movne r0, #0
+ moveq r0, #1
+ RET
+END(check_stack_alignment)
Index: src/tests/lib/csu/arch/mips/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/mips/h_initfini_align.S:1.1
--- /dev/null Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/mips/h_initfini_align.S Wed Dec 11 17:31:56 2013
@@ -0,0 +1,19 @@
+/* $NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+LEAF_NOPROFILE(check_stack_alignment)
+#ifdef __mips_o32
+ andi v1,sp,3
+#else
+ andi v1,sp,7
+#endif
+ sltiu v0,v1,1
+ jr ra
+END(check_stack_alignment)
Index: src/tests/lib/csu/arch/powerpc/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/powerpc/h_initfini_align.S:1.1
--- /dev/null Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/powerpc/h_initfini_align.S Wed Dec 11 17:31:56 2013
@@ -0,0 +1,17 @@
+/* $NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+_ENTRY(check_stack_alignment)
+ li %r3,0
+ andis. %r0,%r1,15
+ bnelr %cr0
+ li %r3,1
+ blr
+END(check_stack_alignment)
Index: src/tests/lib/csu/arch/vax/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/vax/h_initfini_align.S:1.1
--- /dev/null Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/vax/h_initfini_align.S Wed Dec 11 17:31:56 2013
@@ -0,0 +1,17 @@
+/* $NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+_ENTRY(check_stack_alignment, 0)
+ clrl %r0
+ bitl $3,%sp
+ bneq 1f
+ incl %r0
+1: ret
+END(check_stack_alignment)