| author | |
| committer | |
| log | 4d3a847cd1aaed8587732c1da94e941d6015b050 |
| tree | f3ce1aa044877f8fd7b3a5e129cdf537db3c191a |
| parent | 9f1688653653400b7de3d91cc22dc5036593425a |
| signature |
13 files changed, 1009 insertions(+), 0 deletions(-)
lib/libc/openbsd/lib/csu/aarch64/md_init.h created+83| ... | @@ -0,0 +1,83 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.12 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 37 | 	__asm (".section "#section", \"ax\"		\n" \ | ||
| 38 | 	"	bl " #func "				\n" \ | ||
| 39 | 	"	.previous") | ||
| 40 | |||
| 41 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 42 | 	__asm (					\ | ||
| 43 | 	".section "#sect",\"ax\",%progbits	\n" \ | ||
| 44 | 	"	.globl " #entry_pt "		\n" \ | ||
| 45 | 	"	.type " #entry_pt ",%function	\n" \ | ||
| 46 | 	"	.align 4			\n" \ | ||
| 47 | 	#entry_pt":				\n" \ | ||
| 48 | 	"	bti	c			\n" \ | ||
| 49 | 	"	sub	sp, sp, #16		\n" \ | ||
| 50 | 	"	str	lr, [sp]		\n" \ | ||
| 51 | 	"	/* fall thru */			\n" \ | ||
| 52 | 	"	.previous") | ||
| 53 | |||
| 54 | |||
| 55 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 56 | 	__asm (					\ | ||
| 57 | 	".section "#sect",\"ax\",%progbits	\n" \ | ||
| 58 | 	"	ldr	lr, [sp]		\n" \ | ||
| 59 | 	"	add	sp, sp, #16		\n" \ | ||
| 60 | 	"	ret				\n" \ | ||
| 61 | 	"	.previous") | ||
| 62 | |||
| 63 | |||
| 64 | #define	MD_CRT0_START				\ | ||
| 65 | 	__asm(					\ | ||
| 66 | 	".text					\n" \ | ||
| 67 | 	"	.align	0			\n" \ | ||
| 68 | 	"	.globl	_start			\n" \ | ||
| 69 | 	"	.globl	__start			\n" \ | ||
| 70 | 	"_start:				\n" \ | ||
| 71 | 	"__start:				\n" \ | ||
| 72 | 	"	bti	c			\n" \ | ||
| 73 | 	"	mov	x3, x2	/* cleanup */	\n" \ | ||
| 74 | 	"/* Get argc/argv/envp from stack */	\n" \ | ||
| 75 | 	"	ldr	x0, [sp]		\n" \ | ||
| 76 | 	"	add	x1, sp, #0x0008		\n" \ | ||
| 77 | 	"	add	x2, x1, x0, lsl #3	\n" \ | ||
| 78 | 	"	add	x2, x2, #0x0008		\n" \ | ||
| 79 | 	"					\n" \ | ||
| 80 | 	"	b	___start		\n" \ | ||
| 81 | 	".previous"); | ||
| 82 | |||
| 83 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/amd64/md_init.h created+80| ... | @@ -0,0 +1,80 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.11 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 37 | 	__asm (".section "#section", \"ax\"\n"	\ | ||
| 38 | 	"	call " #func "\n"		\ | ||
| 39 | 	"	.previous") | ||
| 40 | |||
| 41 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 42 | 	__asm (					\ | ||
| 43 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 44 | 	"	.globl " #entry_pt "		\n" \ | ||
| 45 | 	"	.type " #entry_pt ",@function	\n" \ | ||
| 46 | 	"	.align 16			\n" \ | ||
| 47 | 	#entry_pt":				\n" \ | ||
| 48 | 	"	endbr64				\n" \ | ||
| 49 | 	"	subq	$8,%rsp			\n" \ | ||
| 50 | 	"	.previous") | ||
| 51 | |||
| 52 | |||
| 53 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 54 | 	__asm (					\ | ||
| 55 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 56 | 	"	addq	$8,%rsp			\n" \ | ||
| 57 | 	"	ret				\n" \ | ||
| 58 | 	"	.previous") | ||
| 59 | |||
| 60 | |||
| 61 | #define	MD_CRT0_START				\ | ||
| 62 | 	__asm(					\ | ||
| 63 | 	".text					\n" \ | ||
| 64 | 	"	.align	8			\n" \ | ||
| 65 | 	"	.globl	__start			\n" \ | ||
| 66 | 	"	.globl	_start			\n" \ | ||
| 67 | 	"_start:				\n" \ | ||
| 68 | 	"__start:				\n" \ | ||
| 69 | 	"	endbr64				\n" \ | ||
| 70 | 	"	movq	%rdx,%rcx		\n" \ | ||
| 71 | 	"	movq	(%rsp),%rdi		\n" \ | ||
| 72 | 	"	leaq	16(%rsp,%rdi,8),%rdx	\n" \ | ||
| 73 | 	"	leaq	8(%rsp),%rsi		\n" \ | ||
| 74 | 	"	subq	$8,%rsp			\n" \ | ||
| 75 | 	"	andq	$~15,%rsp		\n" \ | ||
| 76 | 	"	addq	$8,%rsp			\n" \ | ||
| 77 | 	"	jmp	___start		\n" \ | ||
| 78 | 	"	.previous") | ||
| 79 | |||
| 80 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/arm/md_init.h created+112| ... | @@ -0,0 +1,112 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.19 2024/08/17 09:48:31 phessler Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | /* | ||
| 37 | * arm overrides these because it uses %progbits instead of @progbits | ||
| 38 | */ | ||
| 39 | #define MD_DATA_SECTION_FLAGS_SYMBOL(section, flags, type, symbol)	\ | ||
| 40 | 	extern __dso_hidden type symbol[];				\ | ||
| 41 | 	__asm("	.section "section",\""flags"\",%progbits		\n" \ | ||
| 42 | 	"	.balign 4						\n" \ | ||
| 43 | 	#symbol":							\n" \ | ||
| 44 | 	"	.previous") | ||
| 45 | #define MD_DATA_SECTION_SYMBOL_VALUE(section, type, symbol, value)	\ | ||
| 46 | 	extern __dso_hidden type symbol[];				\ | ||
| 47 | 	__asm("	.section "section",\"aw\",%progbits			\n" \ | ||
| 48 | 	"	.balign 4						\n" \ | ||
| 49 | 	#symbol":							\n" \ | ||
| 50 | 	"	.int "#value"						\n" \ | ||
| 51 | 	"	.previous") | ||
| 52 | #define MD_DATA_SECTION_FLAGS_VALUE(section, flags, value)		\ | ||
| 53 | 	__asm("	.section "section",\""flags"\",%progbits		\n" \ | ||
| 54 | 	"	.balign 4						\n" \ | ||
| 55 | 	"	.int "#value"						\n" \ | ||
| 56 | 	"	.previous") | ||
| 57 | |||
| 58 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 59 | 	__asm (".section "#section", \"ax\"		\n" \ | ||
| 60 | 	"	movw	r0, #:lower16:" #func "- 1f - 8	\n" \ | ||
| 61 | 	"	movt	r0, #:upper16:" #func "- 1f - 8	\n" \ | ||
| 62 | 	"1:	add	r0, r0, pc			\n" \ | ||
| 63 | 	"	blx	r0				\n" \ | ||
| 64 | 	"	.previous") | ||
| 65 | |||
| 66 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 67 | 	__asm (					\ | ||
| 68 | 	".section "#sect",\"ax\",%progbits	\n" \ | ||
| 69 | 	"	.globl " #entry_pt "		\n" \ | ||
| 70 | 	"	.type " #entry_pt ",%function	\n" \ | ||
| 71 | 	"	.align 4			\n" \ | ||
| 72 | 	#entry_pt":				\n" \ | ||
| 73 | 	"	push	{r4, lr}		\n" \ | ||
| 74 | 	"	/* fall thru */			\n" \ | ||
| 75 | 	"	.previous") | ||
| 76 | |||
| 77 | |||
| 78 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 79 | 	__asm (					\ | ||
| 80 | 	".section "#sect",\"ax\",%progbits	\n" \ | ||
| 81 | 	"	pop	{r4, pc}		\n" \ | ||
| 82 | 	"	.previous") | ||
| 83 | |||
| 84 | |||
| 85 | /* | ||
| 86 | * The definitions of environ and __progname prevent the creation | ||
| 87 | * of COPY relocations for WEAK symbols. | ||
| 88 | */ | ||
| 89 | #define	MD_CRT0_START				\ | ||
| 90 | 	__asm(					\ | ||
| 91 | 	".text					\n" \ | ||
| 92 | 	"	.align	0			\n" \ | ||
| 93 | 	"	.globl	_start			\n" \ | ||
| 94 | 	"	.globl	__start			\n" \ | ||
| 95 | 	"_start:				\n" \ | ||
| 96 | 	"__start:				\n" \ | ||
| 97 | 	"	mov	r3, r0	/* cleanup */	\n" \ | ||
| 98 | 	"/* Get argc/argv/envp from stack */	\n" \ | ||
| 99 | 	"	ldr	r0, [sp, #0]		\n" \ | ||
| 100 | 	"	add	r1, sp, #4		\n" \ | ||
| 101 | 	"	add	r2, r1, r0, lsl #2	\n" \ | ||
| 102 | 	"	add	r2, r2, #4		\n" \ | ||
| 103 | 	"					\n" \ | ||
| 104 | 	"/*					\n" \ | ||
| 105 | 	" * Ensure the stack is properly	\n" \ | ||
| 106 | 	" * aligned before calling C code.	\n" \ | ||
| 107 | 	" */					\n" \ | ||
| 108 | 	"	bic	sp, sp, #7" /*__STRING(STACKALIGNBYTES)*/ "	\n" \ | ||
| 109 | 	"	b	___start		\n" \ | ||
| 110 | 	".previous"); | ||
| 111 | |||
| 112 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/crt0.c created+76| ... | @@ -0,0 +1,76 @@ | ||
| 1 | /*	$OpenBSD: crt0.c,v 1.19 2025/05/24 06:32:12 deraadt Exp $	*/ | ||
| 2 | |||
| 3 | /* | ||
| 4 | * Copyright (c) 1995 Christopher G. Demetriou | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by Christopher G. Demetriou | ||
| 18 | *	for the NetBSD Project. | ||
| 19 | * 4. The name of the author may not be used to endorse or promote products | ||
| 20 | * derived from this software without specific prior written permission | ||
| 21 | * | ||
| 22 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
| 23 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
| 24 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
| 25 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 27 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| 28 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| 29 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 31 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 32 | */ | ||
| 33 | |||
| 34 | #include <sys/syscall.h> | ||
| 35 | #include <stdlib.h> | ||
| 36 | #include <limits.h> | ||
| 37 | |||
| 38 | #include "md_init.h" | ||
| 39 | /* zig patch: no static crt support */ | ||
| 40 | #include "extern.h" | ||
| 41 | |||
| 42 | #define STR(x) __STRING(x)	/* shorter macro name for MD_RCRT0_START */ | ||
| 43 | |||
| 44 | /* some defaults */ | ||
| 45 | #ifndef	MD_START_ARGS | ||
| 46 | #define	MD_START_ARGS	\ | ||
| 47 | 	int argc, char **argv, char **envp, void (*cleanup)(void) | ||
| 48 | #endif | ||
| 49 | static void		___start(MD_START_ARGS) __used; | ||
| 50 | #ifndef	MD_EPROL_LABEL | ||
| 51 | #define	MD_EPROL_LABEL	__asm(" .text\n_eprol:") | ||
| 52 | #endif | ||
| 53 | |||
| 54 | char	***_csu_finish(char **_argv, char **_envp, void (*_cleanup)(void)); | ||
| 55 | |||
| 56 | /* zig patch: no profiling support */ | ||
| 57 | |||
| 58 | #ifdef MD_CRT0_START | ||
| 59 | MD_CRT0_START; | ||
| 60 | #endif | ||
| 61 | |||
| 62 | /* zig patch: no legacy leanup abi support */ | ||
| 63 | |||
| 64 | static void | ||
| 65 | ___start(MD_START_ARGS) | ||
| 66 | { | ||
| 67 | 	size_t size, i; | ||
| 68 | 	char ***environp; | ||
| 69 | #ifdef MD_START_SETUP | ||
| 70 | 	MD_START_SETUP | ||
| 71 | #endif | ||
| 72 | |||
| 73 | 	environp = _csu_finish(argv, envp, cleanup); | ||
| 74 | |||
| 75 | 	exit(main(argc, argv, *environp)); | ||
| 76 | } | ||
lib/libc/openbsd/lib/csu/crtbegin.c created+61| ... | @@ -0,0 +1,61 @@ | ||
| 1 | /*	$OpenBSD: crtbegin.c,v 1.26 2019/01/09 16:42:38 visa Exp $	*/ | ||
| 2 | /*	$NetBSD: crtbegin.c,v 1.1 1996/09/12 16:59:03 cgd Exp $	*/ | ||
| 3 | |||
| 4 | /* | ||
| 5 | * Copyright (c) 1993 Paul Kranenburg | ||
| 6 | * All rights reserved. | ||
| 7 | * | ||
| 8 | * Redistribution and use in source and binary forms, with or without | ||
| 9 | * modification, are permitted provided that the following conditions | ||
| 10 | * are met: | ||
| 11 | * 1. Redistributions of source code must retain the above copyright | ||
| 12 | * notice, this list of conditions and the following disclaimer. | ||
| 13 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 14 | * notice, this list of conditions and the following disclaimer in the | ||
| 15 | * documentation and/or other materials provided with the distribution. | ||
| 16 | * 3. All advertising materials mentioning features or use of this software | ||
| 17 | * must display the following acknowledgement: | ||
| 18 | * This product includes software developed by Paul Kranenburg. | ||
| 19 | * 4. The name of the author may not be used to endorse or promote products | ||
| 20 | * derived from this software without specific prior written permission | ||
| 21 | * | ||
| 22 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
| 23 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
| 24 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
| 25 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
| 26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
| 27 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
| 28 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
| 29 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| 30 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
| 31 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| 32 | */ | ||
| 33 | |||
| 34 | /* | ||
| 35 | * Run-time module for GNU C++ compiled shared libraries. | ||
| 36 | * | ||
| 37 | * The linker constructs the following arrays of pointers to global | ||
| 38 | * constructors and destructors. The first element contains the | ||
| 39 | * number of pointers in each. | ||
| 40 | * The tables are also null-terminated. | ||
| 41 | */ | ||
| 42 | #include <stdlib.h> | ||
| 43 | |||
| 44 | #include "md_init.h" | ||
| 45 | #include "os-note-elf.h" | ||
| 46 | #include "extern.h" | ||
| 47 | |||
| 48 | /* zig patch: no ctors/dtors and init/fini */ | ||
| 49 | |||
| 50 | /* | ||
| 51 | * Include support for the __cxa_atexit/__cxa_finalize C++ abi for | ||
| 52 | * gcc > 2.x. __dso_handle is NULL in the main program and a unique | ||
| 53 | * value for each C++ shared library. For more info on this API, see: | ||
| 54 | * | ||
| 55 | * http://www.codesourcery.com/cxx-abi/abi.html#dso-dtor | ||
| 56 | */ | ||
| 57 | |||
| 58 | void *__dso_handle = NULL; | ||
| 59 | __asm(".hidden __dso_handle"); | ||
| 60 | |||
| 61 | long __guard_local __dso_hidden __attribute__((section(".openbsd.randomdata"))); | ||
lib/libc/openbsd/lib/csu/extern.h created+54| ... | @@ -0,0 +1,54 @@ | ||
| 1 | /* | ||
| 2 | * Copyright (c) 2004 Marc Espie <espie@openbsd.org> | ||
| 3 | * | ||
| 4 | * Permission to use, copy, modify, and distribute this software for any | ||
| 5 | * purpose with or without fee is hereby granted, provided that the above | ||
| 6 | * copyright notice and this permission notice appear in all copies. | ||
| 7 | * | ||
| 8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 15 | */ | ||
| 16 | |||
| 17 | void	__init(void) __dso_hidden; | ||
| 18 | int	main(int argc, char *argv[], char *envp[]); | ||
| 19 | |||
| 20 | typedef const void *dl_cb_cb(int); | ||
| 21 | typedef void (*initarray_f)(int, char **, char **, dl_cb_cb *); | ||
| 22 | typedef void (*init_f)(void); | ||
| 23 | |||
| 24 | /* | ||
| 25 | * Provide default implementations of these. Only archs with weird | ||
| 26 | * ASM stuff (hppa, arm) need to override them | ||
| 27 | */ | ||
| 28 | #ifndef MD_DATA_SECTION_FLAGS_SYMBOL | ||
| 29 | # ifdef __LP64__ | ||
| 30 | # define VALUE_ALIGN		".balign 8" | ||
| 31 | # define VALUE_DIRECTIVE	".quad" | ||
| 32 | # else | ||
| 33 | # define VALUE_ALIGN		".balign 4" | ||
| 34 | # define VALUE_DIRECTIVE	".int" | ||
| 35 | # endif | ||
| 36 | # define MD_DATA_SECTION_FLAGS_SYMBOL(section, flags, type, symbol)	\ | ||
| 37 | 	extern __dso_hidden type symbol[];				\ | ||
| 38 | 	__asm("	.section "section",\""flags"\",@progbits		\n" \ | ||
| 39 | 	"	"VALUE_ALIGN"						\n" \ | ||
| 40 | 	#symbol":							\n" \ | ||
| 41 | 	"	.previous") | ||
| 42 | # define MD_DATA_SECTION_SYMBOL_VALUE(section, type, symbol, value)	\ | ||
| 43 | 	extern __dso_hidden type symbol[];				\ | ||
| 44 | 	__asm("	.section "section",\"aw\",@progbits			\n" \ | ||
| 45 | 	"	"VALUE_ALIGN"						\n" \ | ||
| 46 | 	#symbol":							\n" \ | ||
| 47 | 	"	"VALUE_DIRECTIVE" "#value"				\n" \ | ||
| 48 | 	"	.previous") | ||
| 49 | # define MD_DATA_SECTION_FLAGS_VALUE(section, flags, value)		\ | ||
| 50 | 	__asm("	.section "section",\""flags"\",@progbits		\n" \ | ||
| 51 | 	"	"VALUE_ALIGN"						\n" \ | ||
| 52 | 	"	"VALUE_DIRECTIVE" "#value"				\n" \ | ||
| 53 | 	"	.previous") | ||
| 54 | #endif | ||
lib/libc/openbsd/lib/csu/i386/md_init.h created+83| ... | @@ -0,0 +1,83 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.13 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 37 | 	__asm (".section "#section", \"ax\"\n"	\ | ||
| 38 | 	"	call " #func "\n"		\ | ||
| 39 | 	"	.previous") | ||
| 40 | |||
| 41 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 42 | 	__asm (					\ | ||
| 43 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 44 | 	"	.globl " #entry_pt "		\n" \ | ||
| 45 | 	"	.type " #entry_pt ",@function	\n" \ | ||
| 46 | 	"	.align 16			\n" \ | ||
| 47 | 	#entry_pt":				\n" \ | ||
| 48 | 	"	pushl	%ebp			\n" \ | ||
| 49 | 	"	movl	%esp,%ebp		\n" \ | ||
| 50 | 	"	andl	$~15,%esp		\n" \ | ||
| 51 | 	"	.previous") | ||
| 52 | |||
| 53 | |||
| 54 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 55 | 	__asm (					\ | ||
| 56 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 57 | 	"	leave				\n" \ | ||
| 58 | 	"	ret				\n" \ | ||
| 59 | 	"	.previous") | ||
| 60 | |||
| 61 | |||
| 62 | #define	MD_CRT0_START				\ | ||
| 63 | 	__asm(					\ | ||
| 64 | 	".text					\n" \ | ||
| 65 | 	"	.align	4			\n" \ | ||
| 66 | 	"	.globl	__start			\n" \ | ||
| 67 | 	"	.globl	_start			\n" \ | ||
| 68 | 	"_start:				\n" \ | ||
| 69 | 	"__start:				\n" \ | ||
| 70 | 	"	movl	%esp,%ebp		\n" \ | ||
| 71 | 	"	andl	$~15,%esp	# align stack\n" \ | ||
| 72 | 	"	pushl	%edx		# cleanup\n" \ | ||
| 73 | 	"	movl	0(%ebp),%eax		\n" \ | ||
| 74 | 	"	leal	8(%ebp,%eax,4),%ecx	\n" \ | ||
| 75 | 	"	leal	4(%ebp),%edx		\n" \ | ||
| 76 | 	"	pushl	%ecx			\n" \ | ||
| 77 | 	"	pushl	%edx			\n" \ | ||
| 78 | 	"	pushl	%eax			\n" \ | ||
| 79 | 	"	xorl	%ebp,%ebp	# mark deepest stack frame\n" \ | ||
| 80 | 	"	call	___start		\n" \ | ||
| 81 | 	"	.previous") | ||
| 82 | |||
| 83 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/mips64/md_init.h created+127| ... | @@ -0,0 +1,127 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.22 2023/11/19 00:46:54 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * Copyright (c) 2001 Simon Burge | ||
| 6 | * All rights reserved. | ||
| 7 | * | ||
| 8 | * Redistribution and use in source and binary forms, with or without | ||
| 9 | * modification, are permitted provided that the following conditions | ||
| 10 | * are met: | ||
| 11 | * 1. Redistributions of source code must retain the above copyright | ||
| 12 | * notice, this list of conditions and the following disclaimer. | ||
| 13 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 14 | * notice, this list of conditions and the following disclaimer in the | ||
| 15 | * documentation and/or other materials provided with the distribution. | ||
| 16 | * 3. All advertising materials mentioning features or use of this software | ||
| 17 | * must display the following acknowledgement: | ||
| 18 | * This product includes software developed by the NetBSD | ||
| 19 | * Foundation, Inc. and its contributors. | ||
| 20 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 21 | * contributors may be used to endorse or promote products derived | ||
| 22 | * from this software without specific prior written permission. | ||
| 23 | * | ||
| 24 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 25 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 26 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 27 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 28 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 29 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 30 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 31 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 32 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 33 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 34 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 35 | */ | ||
| 36 | |||
| 37 | /* | ||
| 38 | * Allocate 32 bytes for the stack frame. Store GP at SP+16 (since | ||
| 39 | * this is where code generated by the compiler for fallthru processing | ||
| 40 | * expects it to be), and the RA at SP+24. | ||
| 41 | */ | ||
| 42 | |||
| 43 | /* this is gross... */ | ||
| 44 | |||
| 45 | #ifdef __ABICALLS__ | ||
| 46 | #define MD_FUNCTION_PROLOGUE(entry_pt)			\ | ||
| 47 | 	"	.frame $sp,32,$31		\n"	\ | ||
| 48 | 	"	.set	reorder			\n"	\ | ||
| 49 | 	"	dsubu $sp,$sp,32		\n"	\ | ||
| 50 | 	"	.cpsetup $25, 16, "#entry_pt"	\n"	\ | ||
| 51 | 	"	sd $ra ,24($sp)		\n" | ||
| 52 | #else | ||
| 53 | #define MD_FUNCTION_PROLOGUE(entry_pt)			\ | ||
| 54 | 	" dsubu	$sp,$sp,32		\n"	\ | ||
| 55 | 	" sd	$ra ,24($sp)		\n" | ||
| 56 | #endif | ||
| 57 | |||
| 58 | |||
| 59 | #define MD_SECTION_PROLOGUE(sect, entry_pt)		\ | ||
| 60 | 	__asm (						\ | ||
| 61 | 	".section "#sect",\"ax\",@progbits	\n"	\ | ||
| 62 | 	".align 2				\n"	\ | ||
| 63 | 	".globl "#entry_pt"			\n"	\ | ||
| 64 | 	".type "#entry_pt",@function		\n"	\ | ||
| 65 | 	".ent "#entry_pt"			\n"	\ | ||
| 66 | 	#entry_pt":				\n"	\ | ||
| 67 | 	MD_FUNCTION_PROLOGUE(entry_pt)			\ | ||
| 68 | 	" /* fall thru */			\n"	\ | ||
| 69 | 	".end "#entry_pt"			\n"	\ | ||
| 70 | 	".previous") | ||
| 71 | |||
| 72 | #define MD_SECTION_EPILOGUE(sect) \ | ||
| 73 | 	__asm (						\ | ||
| 74 | 	".section "#sect",\"ax\",@progbits \n"	\ | ||
| 75 | 	"	ld	$ra ,24($sp)		\n"	\ | ||
| 76 | 	" # next should have been a .cpreturn 	\n"	\ | ||
| 77 | 	"	ld	$gp,16($sp)		\n"	\ | ||
| 78 | 	"	.set	noreorder		\n"	\ | ||
| 79 | 	"	j	$ra			\n"	\ | ||
| 80 | 	"	daddu	$sp,$sp,32		\n"	\ | ||
| 81 | 	"	.set	reorder			\n"	\ | ||
| 82 | 	".previous") | ||
| 83 | |||
| 84 | #define MD_SECT_CALL_FUNC(section, func)		\ | ||
| 85 | 	__asm (".section "#section", \"ax\"	\n"	\ | ||
| 86 | 	"	.local	" #func "		\n"	\ | ||
| 87 | 	"	jal	" #func "		\n"	\ | ||
| 88 | 	".previous") | ||
| 89 | |||
| 90 | #define MD_CRT0_START				\ | ||
| 91 | 	__asm(					\ | ||
| 92 | 	".text					\n" \ | ||
| 93 | 	"	.align	3			\n" \ | ||
| 94 | 	"	.globl	__start			\n" \ | ||
| 95 | 	"	.ent	__start			\n" \ | ||
| 96 | 	"	.type	__start, @function	\n" \ | ||
| 97 | 	"__start:				\n" \ | ||
| 98 | 	"	lui	$gp, %hi(%neg(%gp_rel(__start)))	\n" \ | ||
| 99 | 	"	addiu	$gp, $gp, %lo(%neg(%gp_rel(__start)))	\n" \ | ||
| 100 | 	"	daddu	$gp, $gp, $t9		\n" \ | ||
| 101 | 	"	move	$a0, $sp		\n" \ | ||
| 102 | 	"	dsrl	$a1, $sp, 4		\n" /* align stack on a */ \ | ||
| 103 | 	"	dsll	$sp, $a1, 4		\n" /* 16 byte boundary */ \ | ||
| 104 | 	"	move	$a1, $v0		\n" \ | ||
| 105 | 	"	.local	___start		\n" \ | ||
| 106 | 	"	dla	$t9, ___start		\n" \ | ||
| 107 | 	"	jr	$t9			\n" \ | ||
| 108 | 	"	.end	__start			\n" \ | ||
| 109 | 	"	.previous") | ||
| 110 | |||
| 111 | /* zig patch: no static crt support */ | ||
| 112 | |||
| 113 | struct kframe { | ||
| 114 | 	long	kargc; | ||
| 115 | 	char	*kargv[1];	/* size depends on kargc */ | ||
| 116 | 	char	kargstr[1];	/* size varies */ | ||
| 117 | 	char	kenvstr[1];	/* size varies */ | ||
| 118 | }; | ||
| 119 | |||
| 120 | #define	MD_START_ARGS		struct kframe *kfp, void (*cleanup)(void) | ||
| 121 | #define	MD_START_SETUP				\ | ||
| 122 | 	char	**argv, **envp;			\ | ||
| 123 | 	long	argc;				\ | ||
| 124 | 						\ | ||
| 125 | 	argc = kfp->kargc;			\ | ||
| 126 | 	argv = &kfp->kargv[0];			\ | ||
| 127 | 	envp = argv + argc + 1; | ||
lib/libc/openbsd/lib/csu/os-note-elf.h created+19| ... | @@ -0,0 +1,19 @@ | ||
| 1 | /*	$OpenBSD: os-note-elf.h,v 1.5 2009/03/06 23:13:40 kurt Exp $	*/ | ||
| 2 | /* | ||
| 3 | * Contents: | ||
| 4 | * | ||
| 5 | * long Name length | ||
| 6 | * long Description length | ||
| 7 | * long ELF_NOTE_TYPE_OSVERSION (1) XXX - need a define. | ||
| 8 | * "OpenBSD\0" | ||
| 9 | * version? 0 XXX | ||
| 10 | */ | ||
| 11 | |||
| 12 | __asm("	.section \".note.openbsd.ident\", \"a\"\n" | ||
| 13 | "	.p2align 2\n" | ||
| 14 | "	.long	8\n" | ||
| 15 | "	.long	4\n" | ||
| 16 | "	.long	1\n" | ||
| 17 | "	.ascii \"OpenBSD\\0\"\n" | ||
| 18 | "	.long	0\n" | ||
| 19 | "	.previous\n"); | ||
lib/libc/openbsd/lib/csu/powerpc/md_init.h created+80| ... | @@ -0,0 +1,80 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.12 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 37 | 	__asm (".section "#section", \"ax\"\n"	\ | ||
| 38 | 	"	bl " #func "\n"		\ | ||
| 39 | 	"	.previous") | ||
| 40 | |||
| 41 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 42 | 	__asm (					\ | ||
| 43 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 44 | 	"	.globl " #entry_pt "		\n" \ | ||
| 45 | 	"	.type " #entry_pt ",@function	\n" \ | ||
| 46 | 	"	.align 4			\n" \ | ||
| 47 | 	#entry_pt":				\n" \ | ||
| 48 | 	"	stwu	%r1,-16(%r1)		\n" \ | ||
| 49 | 	"	mflr	%r0			\n" \ | ||
| 50 | 	"	stw	%r0,12(%r1)		\n" \ | ||
| 51 | 	"	/* fall thru */			\n" \ | ||
| 52 | 	"	.previous") | ||
| 53 | |||
| 54 | |||
| 55 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 56 | 	__asm (					\ | ||
| 57 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 58 | 	"	lwz	%r0,12(%r1)		\n" \ | ||
| 59 | 	"	mtlr	%r0			\n" \ | ||
| 60 | 	"	addi	%r1,%r1,16		\n" \ | ||
| 61 | 	"	blr				\n" \ | ||
| 62 | 	"	.previous") | ||
| 63 | |||
| 64 | #define	MD_CRT0_START							\ | ||
| 65 | __asm(									\ | ||
| 66 | "	.text								\n" \ | ||
| 67 | "	.section	\".text\"					\n" \ | ||
| 68 | "	.align 2							\n" \ | ||
| 69 | "	.globl	_start							\n" \ | ||
| 70 | "	.type	_start, @function					\n" \ | ||
| 71 | "	.globl	__start							\n" \ | ||
| 72 | "	.type	__start, @function					\n" \ | ||
| 73 | "_start:								\n" \ | ||
| 74 | "__start:								\n" \ | ||
| 75 | "	# put cleanup in r6 instead of r7				\n" \ | ||
| 76 | "	mr %r6, %r7							\n" \ | ||
| 77 | "	b ___start							\n" \ | ||
| 78 | ) | ||
| 79 | |||
| 80 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/powerpc64/md_init.h created+75| ... | @@ -0,0 +1,75 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.5 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | |||
| 3 | /* | ||
| 4 | * Copyright (c) 2020 Dale Rahn <drahn@openbsd.org> | ||
| 5 | * | ||
| 6 | * Permission to use, copy, modify, and distribute this software for any | ||
| 7 | * purpose with or without fee is hereby granted, provided that the above | ||
| 8 | * copyright notice and this permission notice appear in all copies. | ||
| 9 | * | ||
| 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 17 | */ | ||
| 18 | |||
| 19 | #define MD_SECT_CALL_FUNC(section, func)				\ | ||
| 20 | 	__asm (".section "#section", \"ax\"				\n" \ | ||
| 21 | 	"	bl " #func "						\n" \ | ||
| 22 | 	"	.previous") | ||
| 23 | |||
| 24 | #define MD_SECTION_PROLOGUE(sect, entry_pt)				\ | ||
| 25 | 	__asm (								\ | ||
| 26 | 	".section "#sect",\"ax\",@progbits				\n" \ | ||
| 27 | 	"	.globl " #entry_pt "					\n" \ | ||
| 28 | 	"	.type " #entry_pt ",@function				\n" \ | ||
| 29 | 	"	.align 4						\n" \ | ||
| 30 | 	#entry_pt":							\n" \ | ||
| 31 | 	".L_"sect"_gep:							\n" \ | ||
| 32 | 	"	addis %r2, %r12, .TOC.-.L_"sect"_gep@ha			\n" \ | ||
| 33 | 	"	addi %r2, %r2, .TOC.-.L_"sect"_gep@l			\n" \ | ||
| 34 | 	".L_"sect"_lep:							\n" \ | ||
| 35 | 	"	.localentry " #entry_pt", .L_"sect"_lep-.L_"sect"_gep;	\n" \ | ||
| 36 | 	"	mflr	%r0						\n" \ | ||
| 37 | 	"	std	%r0,16(%r1)					\n" \ | ||
| 38 | 	"	stdu	%r1,-64(%r1)					\n" \ | ||
| 39 | 	"	/* fall thru */						\n" \ | ||
| 40 | 	"	.previous") | ||
| 41 | |||
| 42 | |||
| 43 | #define MD_SECTION_EPILOGUE(sect)					\ | ||
| 44 | 	__asm (								\ | ||
| 45 | 	".section "#sect",\"ax\",@progbits				\n" \ | ||
| 46 | 	"	addi	%r1,%r1,64					\n" \ | ||
| 47 | 	"	ld	%r0,16(%r1)					\n" \ | ||
| 48 | 	"	mtlr	%r0						\n" \ | ||
| 49 | 	"	blr							\n" \ | ||
| 50 | 	"	.previous") | ||
| 51 | |||
| 52 | #define	MD_CRT0_START							\ | ||
| 53 | __asm(									\ | ||
| 54 | "	.text								\n" \ | ||
| 55 | "	.section	\".text\"					\n" \ | ||
| 56 | "	.align 2							\n" \ | ||
| 57 | "	.globl	_start							\n" \ | ||
| 58 | "	.type	_start, @function					\n" \ | ||
| 59 | "	.globl	__start							\n" \ | ||
| 60 | "	.type	__start, @function					\n" \ | ||
| 61 | "_start:								\n" \ | ||
| 62 | "__start:								\n" \ | ||
| 63 | "	bl	1f							\n" \ | ||
| 64 | "1:									\n" \ | ||
| 65 | "	mflr	%r30							\n" \ | ||
| 66 | "	addis	%r2, %r30, .TOC.-1b@ha					\n" \ | ||
| 67 | "	addi	%r2, %r2, .TOC.-1b@l					\n" \ | ||
| 68 | "	# put cleanup in r6 instead of r7				\n" \ | ||
| 69 | "	mr	%r6, %r7						\n" \ | ||
| 70 | "	li	%r7, 0							\n" \ | ||
| 71 | "	stdu	%r7, -64(%r1)						\n" \ | ||
| 72 | "	b ___start							\n" \ | ||
| 73 | ) | ||
| 74 | |||
| 75 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/riscv64/md_init.h created+74| ... | @@ -0,0 +1,74 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.4 2023/11/18 16:26:16 deraadt Exp $ */ | ||
| 2 | /* | ||
| 3 | * Copyright (c) 2020 Dale Rahn <drahn@openbsd.org> | ||
| 4 | * | ||
| 5 | * Permission to use, copy, modify, and distribute this software for any | ||
| 6 | * purpose with or without fee is hereby granted, provided that the above | ||
| 7 | * copyright notice and this permission notice appear in all copies. | ||
| 8 | * | ||
| 9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 12 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 14 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 15 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #define MD_SECT_CALL_FUNC(section, func) 				\ | ||
| 19 | 	__asm (".section "#section", \"ax\"				\n" \ | ||
| 20 | 	"call " # func "@plt 						\n" \ | ||
| 21 | 	"	.previous") | ||
| 22 | |||
| 23 | #define MD_SECTION_PROLOGUE(sect, entry_pt)				\ | ||
| 24 | 	__asm (								\ | ||
| 25 | 	".section "#sect",\"ax\",%progbits				\n" \ | ||
| 26 | 	"	.globl " #entry_pt "					\n" \ | ||
| 27 | 	"	.type " #entry_pt ",@function				\n" \ | ||
| 28 | 	"	.align 4						\n" \ | ||
| 29 | 	#entry_pt":							\n" \ | ||
| 30 | 	"	addi	sp, sp, -16					\n" \ | ||
| 31 | 	"	sd	ra,8(sp)					\n" \ | ||
| 32 | 	"	sd	s0,0(sp)					\n" \ | ||
| 33 | 	"	addi	s0, sp, 16					\n" \ | ||
| 34 | 	"	/* fall thru */						\n" \ | ||
| 35 | 	"	.previous") | ||
| 36 | |||
| 37 | |||
| 38 | #define MD_SECTION_EPILOGUE(sect)					\ | ||
| 39 | 	__asm (								\ | ||
| 40 | 	".section "#sect",\"ax\",%progbits				\n" \ | ||
| 41 | 	"	ld	ra, 8(sp)					\n" \ | ||
| 42 | 	"	ld	s0, 0(sp)					\n" \ | ||
| 43 | 	"	addi	sp, sp, 16					\n" \ | ||
| 44 | 	"	jr	ra						\n" \ | ||
| 45 | 	"	.previous") | ||
| 46 | |||
| 47 | |||
| 48 | #define	MD_CRT0_START							\ | ||
| 49 | 	__asm(								\ | ||
| 50 | 	".text								\n" \ | ||
| 51 | 	"	.align	0						\n" \ | ||
| 52 | 	"	.globl	_start						\n" \ | ||
| 53 | 	"	.globl	__start						\n" \ | ||
| 54 | 	"	.type	_start, @function				\n" \ | ||
| 55 | 	"	.type	__start, @function				\n" \ | ||
| 56 | 	"_start:							\n" \ | ||
| 57 | 	"__start:							\n" \ | ||
| 58 | 	"/* Get argc/argv/envp from stack */				\n" \ | ||
| 59 | 	"	ld	a0, (sp)					\n" \ | ||
| 60 | 	"	addi	a1, sp, 0x8					\n" \ | ||
| 61 | 	"	slli	t0, a0, 0x3					\n" \ | ||
| 62 | 	"	add	a2, a1, t0					\n" \ | ||
| 63 | 	"	addi	a2, a2, 0x8					\n" \ | ||
| 64 | 	"								\n" \ | ||
| 65 | 	"	addi	sp, sp, -16					\n" \ | ||
| 66 | 	"	li	t0, 0						\n" \ | ||
| 67 | 	"	sd	t0,(sp)						\n" \ | ||
| 68 | 	"								\n" \ | ||
| 69 | 	"	j	___start					\n" \ | ||
| 70 | 	"	.size	_start, .-_start				\n" \ | ||
| 71 | 	"	.size	__start, .-__start				\n" \ | ||
| 72 | 	".previous"); | ||
| 73 | |||
| 74 | /* zig patch: no static crt support */ | ||
lib/libc/openbsd/lib/csu/sparc64/md_init.h created+85| ... | @@ -0,0 +1,85 @@ | ||
| 1 | /* $OpenBSD: md_init.h,v 1.11 2025/01/30 21:41:37 kurt Exp $ */ | ||
| 2 | |||
| 3 | /*- | ||
| 4 | * Copyright (c) 2001 Ross Harvey | ||
| 5 | * All rights reserved. | ||
| 6 | * | ||
| 7 | * Redistribution and use in source and binary forms, with or without | ||
| 8 | * modification, are permitted provided that the following conditions | ||
| 9 | * are met: | ||
| 10 | * 1. Redistributions of source code must retain the above copyright | ||
| 11 | * notice, this list of conditions and the following disclaimer. | ||
| 12 | * 2. Redistributions in binary form must reproduce the above copyright | ||
| 13 | * notice, this list of conditions and the following disclaimer in the | ||
| 14 | * documentation and/or other materials provided with the distribution. | ||
| 15 | * 3. All advertising materials mentioning features or use of this software | ||
| 16 | * must display the following acknowledgement: | ||
| 17 | * This product includes software developed by the NetBSD | ||
| 18 | * Foundation, Inc. and its contributors. | ||
| 19 | * 4. Neither the name of The NetBSD Foundation nor the names of its | ||
| 20 | * contributors may be used to endorse or promote products derived | ||
| 21 | * from this software without specific prior written permission. | ||
| 22 | * | ||
| 23 | * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||
| 24 | * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||
| 25 | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
| 26 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||
| 27 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
| 28 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
| 29 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
| 30 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
| 31 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
| 32 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
| 33 | * POSSIBILITY OF SUCH DAMAGE. | ||
| 34 | */ | ||
| 35 | |||
| 36 | #define MD_SECT_CALL_FUNC(section, func) \ | ||
| 37 | 	__asm (".section "#section", \"ax\"	\n" \ | ||
| 38 | 	"	call " #func "			\n" \ | ||
| 39 | 	"	 nop				\n" \ | ||
| 40 | 	"	.previous") | ||
| 41 | |||
| 42 | #define MD_SECTION_PROLOGUE(sect, entry_pt)	\ | ||
| 43 | 	__asm (					\ | ||
| 44 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 45 | 	"	.globl " #entry_pt "		\n" \ | ||
| 46 | 	"	.type " #entry_pt ",@function	\n" \ | ||
| 47 | 	#entry_pt":				\n" \ | ||
| 48 | 	"	save	%sp, -192, %sp		\n" \ | ||
| 49 | 	"	.align 4			\n" \ | ||
| 50 | 	"	/* fall thru */			\n" \ | ||
| 51 | 	"	.previous") | ||
| 52 | |||
| 53 | |||
| 54 | #define MD_SECTION_EPILOGUE(sect)		\ | ||
| 55 | 	__asm (					\ | ||
| 56 | 	".section "#sect",\"ax\",@progbits	\n" \ | ||
| 57 | 	"	ret				\n" \ | ||
| 58 | 	"	 restore			\n" \ | ||
| 59 | 	"	.previous") | ||
| 60 | |||
| 61 | |||
| 62 | #define	MD_CRT0_START				\ | ||
| 63 | 	__asm__(				\ | ||
| 64 | 	".text					\n" \ | ||
| 65 | 	"	.align	4			\n" \ | ||
| 66 | 	"	.global	_start			\n" \ | ||
| 67 | 	"	.global	__start			\n" \ | ||
| 68 | 	"_start:				\n" \ | ||
| 69 | 	"__start:				\n" \ | ||
| 70 | 	"	clr	%fp			\n" \ | ||
| 71 | 	"	add	%sp, 2175, %o0	/* stack */\n" \ | ||
| 72 | 	"	ba,pt	%icc, ___start		\n" \ | ||
| 73 | 	"	 mov	%g1, %o1		\n" \ | ||
| 74 | 	"	.previous") | ||
| 75 | |||
| 76 | /* zig patch: no static crt support */ | ||
| 77 | |||
| 78 | #define	MD_START_ARGS		char **sp, void (*cleanup)(void) | ||
| 79 | #define	MD_START_SETUP				\ | ||
| 80 | 	char **argv, **envp;			\ | ||
| 81 | 	long argc;				\ | ||
| 82 | 						\ | ||
| 83 | 	argc = *(long *)sp;			\ | ||
| 84 | 	argv = sp + 1;				\ | ||
| 85 | 	envp = sp + 2 + argc;		/* 2: argc + NULL ending argv */ | ||