Module Name:    src
Committed By:   matt
Date:           Fri Nov 30 23:32:14 UTC 2012

Modified Files:
        src/lib/csu/arch/arm [matt-nb6-plus]: Makefile.inc crt0.S crti.S crtn.S
Added Files:
        src/lib/csu/arch/arm [matt-nb6-plus]: crtbegin.S crtend.S

Log Message:
Pull from HEAD.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.1.10.1 src/lib/csu/arch/arm/Makefile.inc \
    src/lib/csu/arch/arm/crt0.S src/lib/csu/arch/arm/crti.S \
    src/lib/csu/arch/arm/crtn.S
cvs rdiff -u -r0 -r1.4.6.2 src/lib/csu/arch/arm/crtbegin.S
cvs rdiff -u -r0 -r1.2.6.2 src/lib/csu/arch/arm/crtend.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/csu/arch/arm/Makefile.inc
diff -u src/lib/csu/arch/arm/Makefile.inc:1.1 src/lib/csu/arch/arm/Makefile.inc:1.1.10.1
--- src/lib/csu/arch/arm/Makefile.inc:1.1	Sat Aug  7 18:01:33 2010
+++ src/lib/csu/arch/arm/Makefile.inc	Fri Nov 30 23:32:14 2012
@@ -1,5 +1,3 @@
-# $NetBSD: Makefile.inc,v 1.1 2010/08/07 18:01:33 joerg Exp $
+# $NetBSD: Makefile.inc,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $
 
 CPPFLAGS+=	-DELFSIZE=32
-
-
Index: src/lib/csu/arch/arm/crt0.S
diff -u src/lib/csu/arch/arm/crt0.S:1.1 src/lib/csu/arch/arm/crt0.S:1.1.10.1
--- src/lib/csu/arch/arm/crt0.S:1.1	Sat Aug  7 18:01:33 2010
+++ src/lib/csu/arch/arm/crt0.S	Fri Nov 30 23:32:14 2012
@@ -1,11 +1,12 @@
-/*	$NetBSD: crt0.S,v 1.1 2010/08/07 18:01:33 joerg Exp $	*/
+/*	$NetBSD: crt0.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $	*/
 
-/*
- * Copyright (C) 1997 Mark Brinicombe
- * Copyright (C) 1995 Wolfgang Solfrank.
- * Copyright (C) 1995 TooLs GmbH.
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
  *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -14,43 +15,41 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by TooLs GmbH.
- * 4. The name of TooLs GmbH may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
  */
-#include <machine/asm.h>
 
-RCSID("$NetBSD: crt0.S,v 1.1 2010/08/07 18:01:33 joerg Exp $")
+#include <arm/asm.h>
+
+RCSID("$NetBSD: crt0.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $")
 
 STRONG_ALIAS(_start,__start)
 
 _ENTRY(__start)
-	mov	r5, r2		/* cleanup */
-	mov	r4, r1		/* obj_main */
-	mov	r3, r0		/* ps_strings */
-	/* Get argc, argv, and envp from stack */
-	ldr	r0, [sp, #0x0000]
-	add	r1, sp, #0x0004
-	add	r2, r1, r0, lsl #2
-	add	r2, r2, #0x0004
+	/*
+	 * We need to swap ps_strings and cleanup
+ 	 */
+	mov	ip, r0		/* ps_strings -> tmp */
+	mov	r0, r2		/* cleanup -> ps_strings */
+	mov	r2, ip		/* tmp -> ps_strings */
 
 	/* Ensure the stack is properly aligned before calling C code. */
 	bic	sp, sp, #7
-	sub	sp, sp, #8
-	str	r5, [sp, #4]
-	str	r4, [sp, #0]
+
+	/*
+	 * void ___start(void (*cleanup)(void),
+	 *    const Obj_Entry *obj,
+	 *    struct ps_strings *ps_strings);
+	 */
 
 	b	___start
Index: src/lib/csu/arch/arm/crti.S
diff -u src/lib/csu/arch/arm/crti.S:1.1 src/lib/csu/arch/arm/crti.S:1.1.10.1
--- src/lib/csu/arch/arm/crti.S:1.1	Sat Aug  7 18:01:33 2010
+++ src/lib/csu/arch/arm/crti.S	Fri Nov 30 23:32:14 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: crti.S,v 1.1 2010/08/07 18:01:33 joerg Exp $ */
+/* $NetBSD: crti.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $ */
 
 /*-
  * Copyright (c) 2001 Ross Harvey
@@ -35,21 +35,23 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: crti.S,v 1.1 2010/08/07 18:01:33 joerg Exp $")
+RCSID("$NetBSD: crti.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $")
 
 #include "sysident.S"
 
-	.section ".init", "ax", @progbits
+	.section ".init", "ax", %progbits
 	.align 0
 	.globl _init
+	.type _init,%function
 _init:
 	mov	ip, sp
 	stmfd	sp!, {fp, ip, lr, pc}
 	sub	fp, ip, #4
 
-	.section ".fini", "ax", @progbits
+	.section ".fini", "ax", %progbits
 	.align 0
 	.globl _fini
+	.type _fini,%function
 _fini:
 	mov	ip, sp
 	stmfd	sp!, {fp, ip, lr, pc}
Index: src/lib/csu/arch/arm/crtn.S
diff -u src/lib/csu/arch/arm/crtn.S:1.1 src/lib/csu/arch/arm/crtn.S:1.1.10.1
--- src/lib/csu/arch/arm/crtn.S:1.1	Sat Aug  7 18:01:33 2010
+++ src/lib/csu/arch/arm/crtn.S	Fri Nov 30 23:32:14 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: crtn.S,v 1.1 2010/08/07 18:01:33 joerg Exp $ */
+/* $NetBSD: crtn.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $ */
 
 /*-
  * Copyright (c) 2001 Ross Harvey
@@ -35,10 +35,10 @@
 
 #include <machine/asm.h>
 
-RCSID("$NetBSD: crtn.S,v 1.1 2010/08/07 18:01:33 joerg Exp $")
+RCSID("$NetBSD: crtn.S,v 1.1.10.1 2012/11/30 23:32:14 matt Exp $")
 
-	.section ".init", "ax", @progbits
+	.section ".init", "ax", %progbits
 	ldmea	fp, {fp, sp, pc}
 
-	.section ".fini", "ax", @progbits
+	.section ".fini", "ax", %progbits
 	ldmea	fp, {fp, sp, pc}

Added files:

Index: src/lib/csu/arch/arm/crtbegin.S
diff -u /dev/null src/lib/csu/arch/arm/crtbegin.S:1.4.6.2
--- /dev/null	Fri Nov 30 23:32:14 2012
+++ src/lib/csu/arch/arm/crtbegin.S	Fri Nov 30 23:32:14 2012
@@ -0,0 +1,293 @@
+/*	$NetBSD: crtbegin.S,v 1.4.6.2 2012/11/30 23:32:14 matt Exp $	*/
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <arm/asm.h>
+
+RCSID("$NetBSD: crtbegin.S,v 1.4.6.2 2012/11/30 23:32:14 matt Exp $")
+
+	.section	.ctors, "aw", %progbits
+	.p2align 2
+__CTOR_LIST__:
+	.word -1
+
+	.section	.dtors, "aw", %progbits
+	.p2align 2
+__DTOR_LIST__:
+	.word -1
+
+	.section	.eh_frame, "a", %progbits
+	.p2align 2
+__EH_FRAME_LIST__:
+
+	.section	.jcr, "aw", %progbits
+	.p2align 2
+__JCR_LIST__:
+
+	.section	.data.rel, "aw", %progbits
+	.p2align 2
+	.type	__dso_handle, %object
+	.size	__dso_handle, 4
+	.globl	__dso_handle
+	.hidden	__dso_handle
+__dso_handle:
+#ifdef SHARED
+	.word	__dso_handle
+#else
+	.word	0
+#endif
+
+	.local	__dwarf_eh_object
+	.comm	__dwarf_eh_object,24
+	.local	__initialized
+	.comm	__initialized,1
+	.local	__finished
+	.comm	__finished,1
+
+	.text
+/*
+ * All variables are local to this DSO so we can skip using GOT references
+ * and instead use PCREL references to access them.  We do this regardless
+ * of being PIC since it isn't any additional overhead to do so.
+ *
+ * We don't setup a TOC since all of ours calls are indirect so it isn't
+ * needed.
+ */
+
+	.type __do_global_dtors_aux, %function
+__do_global_dtors_aux:
+	GOT_INIT(r3, .Ldtors_got, .Ldtors) 	/* use r3 temporarily */
+	ldr	r1, .L__finished
+#ifdef PIC
+        ldrb	r0, [r1, r3]!
+#else
+        ldrb	r0, [r1]
+#endif
+	cmp	r0, #0				/* done this already? */
+	RETc(ne)
+	mov	r0, #1
+	strb	r0, [r1]			/* mark it as done */
+
+	mov     ip, sp
+        stmfd   sp!, {r4, r5, r6, r7, fp, ip, lr, pc}
+        sub     fp, ip, #4
+	mov	r7, r3				/* now that r7 is saved ... */
+
+#ifdef SHARED
+	GOT_GET(ip, r7, .L__cxa_finalize)
+	cmp	ip, #0
+	ldrne	r2, .L__dso_handle		/* GOTOFF */
+	ldrne	r0, [r2, r7]			/* load relative to GOT */
+#ifdef _ARM_ARCH_4T
+	blxne	ip
+#else
+	movne	lr, pc
+	movne	pc, ip
+#endif
+#endif /* SHARED */
+
+	/*
+	 * We know the first entry is -1 so skip it.  We use load with
+	 * preincrement to advance the pointer along.
+	 */
+	ldr	r4, .L__DTOR_LIST__
+	ldr	r5, .L__DTOR_LIST_END__
+#ifdef PIC
+	add	r4, r4, r7		/* addr = offset + got */
+	add	r5, r5, r7		/* addr = offset + got */
+#endif
+	add	r4, r4, #4		/* skip first entry */
+1:
+	cmp	r4, r5			/* end of list */
+	ldrne	ip, [r4], #4		/* ip = *r4++; */
+#ifndef SHARED
+        ldmeqfd	sp, {r4, r5, r6, r7, fp, sp, pc} /* restore and return */
+#endif
+	adrne	lr, 1b			/* set up to return to loop start */
+#ifdef _ARM_ARCH_4T
+	bxne	ip			/* call it */
+#else
+	movne	pc, ip			/* call entry */
+#endif
+
+#ifdef SHARED
+	/*
+	 * if (__deregister_frame_info)
+	 *     __deregister_frame_info(&__EH_FRAME_LIST__[0]);
+	 */
+	GOT_GET(ip, r7, .L__deregister_frame_info)
+	cmp	ip, #0
+        ldmeqfd	sp, {r4-r7, fp, sp, pc}		/* restore and return */
+
+	ldr	r1, .L__EH_FRAME_LIST__
+#ifdef PIC
+	add	r0, r1, r7			/* add offset to GOT addr */
+#endif
+        ldmfd	sp, {r4-r7, fp, sp, lr}		/* restore everthing */
+#ifdef _ARM_ARCH_4T
+	bx	ip				/* tail call it */
+#else
+	mov	pc, ip				/* tail call it */
+#endif
+#endif /* SHARED */
+
+	.weak	__deregister_frame_info
+	.weak	__cxa_finalize
+	.hidden	_C_LABEL(__DTOR_LIST_END__)
+
+	.align	2
+	GOT_INITSYM(.Ldtors_got, .Ldtors)
+#ifdef SHARED
+.L__deregister_frame_info:
+        .word   PIC_SYM(_C_LABEL(__deregister_frame_info), GOT)
+.L__cxa_finalize:
+        .word   PIC_SYM(_C_LABEL(__cxa_finalize), GOT)
+.L__dso_handle:
+        .word   PIC_SYM(_C_LABEL(__dso_handle), GOTOFF)
+#endif
+.L__finished:
+        .word   PIC_SYM(_C_LABEL(__finished), GOTOFF)
+.L__DTOR_LIST__:
+        .word   PIC_SYM(_C_LABEL(__DTOR_LIST__), GOTOFF)
+.L__DTOR_LIST_END__:
+        .word   PIC_SYM(_C_LABEL(__DTOR_LIST_END__), GOTOFF)
+.L__EH_FRAME_LIST__:
+        .word   PIC_SYM(_C_LABEL(__EH_FRAME_LIST__), GOTOFF)
+
+
+	.weak	__register_frame_info
+	.weak	_Jv_RegisterClasses
+
+	.type __do_global_ctors_aux, %function
+__do_global_ctors_aux:
+	GOT_INIT(r3, .Lctors_got, .Lctors) 
+	ldr	r1, .L__initialized
+#ifdef PIC
+        ldrb	r0, [r1, r3]!
+#else
+        ldrb	r0, [r1]
+#endif
+	cmp	r0, #0				/* done this already? */
+	RETc(ne)
+	mov	r0, #1
+	strb	r0, [r1]			/* mark it as done */
+
+	mov     ip, sp
+        stmfd   sp!, {r4, r5, r6, r7, fp, ip, lr, pc}
+        sub     fp, ip, #4
+	mov	r7, r3				/* now that r7 is saved ... */
+
+	/*
+	 * if (__register_frame_info)
+	 *     __register_frame_info(&__EH_FRAME_LIST__[0], &__dwarf_eh_object)
+	 */
+	GOT_GET(ip, r7, .L__register_frame_info)
+	cmp	ip, #0
+	beq	1f
+
+	ldr	r0, .L__EH_FRAME_LIST__
+	ldr	r1, .L__dwarf_eh_object
+#ifdef PIC
+	add	r0, r0, r7		/* object addr = got addr + offset */
+	add	r1, r1, r7		/* object addr = got addr + offset */
+#endif
+
+#ifdef _ARM_ARCH_4T
+	blx	ip
+#else
+	mov	lr, pc
+	mov	pc, ip
+#endif
+1:
+	/*
+	 * if (_Jv_RegisterClasses && __JCR_LIST__[0])
+	 *     _Jv_RegisterClasses(&__JCR_LIST__[0]);
+	 */
+	GOT_GET(ip, r7, .L_Jv_RegisterClasses)
+	cmp	ip, #0
+
+	ldrne	r0, .L__JCR_LIST__
+#ifdef PIC
+	ldrne	r2, [r0, r7]!		/* load 1st one, make r0 point to it */
+#else
+	ldrne	r2, [r0]		/* load 1st one */
+#endif
+	cmpne	r2, #0
+#ifdef _ARM_ARCH_4T
+	blxne	ip
+#else
+	movne	lr, pc
+	movne	pc, ip
+#endif
+
+	/*
+	 * Get the start and end of the CTOR list.
+	 */
+	
+	ldr	r4, .L__CTOR_LIST__
+	ldr	r5, .L__CTOR_LIST_END__
+#ifdef PIC
+	add	r4, r4, r7		/* object addr = got addr + offset */
+	add	r5, r5, r7		/* object addr = got addr + offset */
+#endif
+	sub	r5, r5, #4		/* ignore first entry */
+3:
+	cmp	r4, r5			/* at first entry? */
+        ldmeqfd	sp, {r4-r7, fp, sp, pc} /* then return */
+	adr	lr, 3b			/* return to start of loop */
+	ldr	ip, [r5], #-4		/* get entry */
+#ifdef _ARM_ARCH_4T
+	bx	ip
+#else
+	mov	pc, ip				/* get entry */
+#endif
+
+	.hidden	_C_LABEL(__CTOR_LIST_END__)
+
+        .align  2
+	GOT_INITSYM(.Lctors_got, .Lctors)
+.L_Jv_RegisterClasses:
+        .word   PIC_SYM(_C_LABEL(_Jv_RegisterClasses), GOT)
+.L__register_frame_info:
+        .word   PIC_SYM(_C_LABEL(__register_frame_info), GOT)
+.L__initialized:
+        .word   PIC_SYM(_C_LABEL(__initialized), GOTOFF)
+.L__CTOR_LIST__:
+        .word   PIC_SYM(_C_LABEL(__CTOR_LIST__), GOTOFF)
+.L__CTOR_LIST_END__:
+        .word   PIC_SYM(_C_LABEL(__CTOR_LIST_END__), GOTOFF)
+.L__dwarf_eh_object:
+        .word   PIC_SYM(_C_LABEL(__dwarf_eh_object), GOTOFF)
+.L__JCR_LIST__:
+        .word   PIC_SYM(_C_LABEL(__JCR_LIST__), GOTOFF)
+
+	.section	.init, "ax", %progbits
+	bl	__do_global_ctors_aux
+	.section	.fini, "ax", %progbits
+	bl	__do_global_dtors_aux

Index: src/lib/csu/arch/arm/crtend.S
diff -u /dev/null src/lib/csu/arch/arm/crtend.S:1.2.6.2
--- /dev/null	Fri Nov 30 23:32:14 2012
+++ src/lib/csu/arch/arm/crtend.S	Fri Nov 30 23:32:14 2012
@@ -0,0 +1,55 @@
+/*	$NetBSD: crtend.S,v 1.2.6.2 2012/11/30 23:32:14 matt Exp $	*/
+/*-
+ * Copyright (c) 2012 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Matt Thomas of 3am Software Foundry.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <arm/asm.h>
+
+RCSID("$NetBSD: crtend.S,v 1.2.6.2 2012/11/30 23:32:14 matt Exp $")
+
+	.section	.ctors, "aw", %progbits
+	.p2align 2
+	.global		__CTOR_LIST_END__
+	.hidden 	__CTOR_LIST_END__
+__CTOR_LIST_END__:
+	.space	4
+
+	.section	.dtors, "aw", %progbits
+	.p2align 2
+	.global		__DTOR_LIST_END__
+	.hidden 	__DTOR_LIST_END__
+__DTOR_LIST_END__:
+	.space	4
+
+	.section	.eh_frame, "a", %progbits
+	.p2align 2
+	.space	4
+
+	.section	.jcr, "aw", %progbits
+	.p2align 2
+	.space	4

Reply via email to