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)