authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-13 01:32:35+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-17 04:41:27+02:00
log1c342ca7c38d396bc38235af25058543c86c5bed
treeaa27247ae0bbf72ece08de1be3a93649f43bbf45
parent35f81211941548b7f1c2b25a1ead0acfb69b3ab5
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

libc: Add NetBSD libc startup code from 10.1.

* sysident_assym.h was manually expanded. * The ELF_NOTE_MARCH_DESC and ELF_NOTE_MARCH_DESCSZ macros will be defined by the compiler. * Legacy .init/.fini stuff was removed. * GCJ nonsense was removed.

14 files changed, 1108 insertions(+), 0 deletions(-)

lib/libc/netbsd/lib/csu/arch/aarch64/crt0.S created+45
...@@ -0,0 +1,45 @@
1/* $NetBSD: crt0.S,v 1.2 2018/11/26 17:37:44 joerg Exp $ */
2
3/*-
4 * Copyright (c) 2014 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Matt Thomas of 3am Software Foundry.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#include <aarch64/asm.h>
33
34RCSID("$NetBSD: crt0.S,v 1.2 2018/11/26 17:37:44 joerg Exp $")
35
36STRONG_ALIAS(_start,__start)
37
38_ENTRY(__start)
39 /*
40 * void ___start(void (*cleanup)(void),
41 * struct ps_strings *ps_strings);
42 */
43 mov x1, x2
44 b ___start
45END(__start)
lib/libc/netbsd/lib/csu/arch/earm/crt0.S created+61
...@@ -0,0 +1,61 @@
1/* $NetBSD: crt0.S,v 1.4 2018/11/26 17:37:44 joerg Exp $ */
2
3/*-
4 * Copyright (c) 2012 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Matt Thomas of 3am Software Foundry.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#include <arm/asm.h>
33
34RCSID("$NetBSD: crt0.S,v 1.4 2018/11/26 17:37:44 joerg Exp $")
35
36STRONG_ALIAS(_start,__start)
37
38_ENTRY(__start)
39 /*
40 * ps_strings is passed in r0 and cleanup in r2.
41 * It should be ps_string in r1 and cleanup in r0.
42 */
43 mov r1, r0
44 mov r0, r2
45
46 /* Ensure the stack is properly aligned before calling C code. */
47#if !defined(__thumb__)
48 bic sp, sp, #7
49#else
50 movs r6, #7
51 mov r7, sp
52 bics r7, r7, r6
53 mov sp, r7
54#endif
55
56 /*
57 * void ___start(void (*cleanup)(void),
58 * struct ps_strings *ps_strings);
59 */
60
61 b ___start
lib/libc/netbsd/lib/csu/arch/i386/crt0.S created+48
...@@ -0,0 +1,48 @@
1/* $NetBSD: crt0.S,v 1.4 2018/11/26 17:37:45 joerg Exp $ */
2
3/*
4 * Copyright (c) 1998 Christos Zoulas
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
36 */
37
38#include <machine/asm.h>
39
40RCSID("$NetBSD: crt0.S,v 1.4 2018/11/26 17:37:45 joerg Exp $")
41
42 .hidden ___start
43
44STRONG_ALIAS(_start,__start)
45_ENTRY(__start)
46 pushl %ebx
47 pushl %edx
48 call ___start
lib/libc/netbsd/lib/csu/arch/m68k/crt0.S created+47
...@@ -0,0 +1,47 @@
1#include <machine/asm.h>
2
3/*
4 * Copyright (c) 1999 Klaus Klein
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
36 */
37
38RCSID("$NetBSD: crt0.S,v 1.5 2018/11/26 17:37:45 joerg Exp $")
39
40STRONG_ALIAS(_start,__start)
41
42_ENTRY(__start)
43 movl %a2,-(%sp) | ps_strings
44 movl %a1,-(%sp) | cleanup
45 | call: ___start(cleanup, ps_strings)
46 jbsr ___start
47END(__start)
lib/libc/netbsd/lib/csu/arch/mips/crt0.S created+59
...@@ -0,0 +1,59 @@
1/* $NetBSD: crt0.S,v 1.4 2018/11/26 17:37:45 joerg Exp $ */
2
3/*-
4 * Copyright (c) 2013 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Matt Thomas of 3am Software Foundry.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32#include <mips/asm.h>
33
34RCSID("$NetBSD: crt0.S,v 1.4 2018/11/26 17:37:45 joerg Exp $")
35
36STRONG_ALIAS(_start,__start)
37
38/*
39 * Assumes kernel (or ld_elf.so) passes the following parameters to
40 * user-space in registers:
41 *
42 * a0 stack pointer (0 if setregs didn't fill this in)
43 * a1 cleanup
44 * a2 Obj_Entry
45 * a3 ps_strings
46 *
47 * XXX Does this violate the ABI?
48 * as well as the usual registers (pc, sp, and t9 == pc for ABI).
49 */
50
51NESTED_NOPROFILE(__start, CALLFRAME_SIZ, ra)
52 SETUP_GP
53 SETUP_GP64(t3, __start)
54 move a0, a1 /* cleanup */
55 PTR_L t9,%call16(_C_LABEL(___start))(gp)
56 move a1, a3 /* ps_strings */
57 .reloc 1f,R_MIPS_JALR,___start
581: jr t9
59END(__start)
lib/libc/netbsd/lib/csu/arch/powerpc/crt0.S created+56
...@@ -0,0 +1,56 @@
1/*-
2 * Copyright (c) 2011 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Matt Thomas of 3am Software Foundry.
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 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#include <powerpc/asm.h>
31
32RCSID("$NetBSD: crt0.S,v 1.7 2018/11/26 17:37:45 joerg Exp $")
33
34STRONG_ALIAS(_start,__start)
35
36 .hidden ___start
37
38#ifndef _LP64
39 .weak _SDA_BASE_
40#endif
41
42ENTRY_NOPROFILE(__start)
43#ifndef _LP64
44 bcl 20,31,1f
451:
46 mflr %r11
47 /* SVR4 ABI says small data is in r13 */
48 addis %r13,%r11,_SDA_BASE_-1b@ha
49 addi %r13,%r13,_SDA_BASE_-1b@l
50#endif
51
52 mr %r3,%r7 /* cleanup */
53 mr %r4,%r8 /* ps_strings */
54
55 CALL(___start)
56END(__start)
lib/libc/netbsd/lib/csu/arch/sparc/crt0.S created+55
...@@ -0,0 +1,55 @@
1/* $NetBSD: crt0.S,v 1.3 2018/11/26 17:37:45 joerg Exp $ */
2
3/*
4 * Copyright (c) 1998 Christos Zoulas
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
36 */
37
38#include <machine/asm.h>
39
40RCSID("$NetBSD: crt0.S,v 1.3 2018/11/26 17:37:45 joerg Exp $")
41
42STRONG_ALIAS(_start,__start)
43
44 ! called with:
45 ! %g3 = cleanup
46 ! %g1 = ps_strings
47 ! call: ___start(cleanup, ps_strings)
48_ENTRY(__start)
49 mov 0, %fp
50 andn %sp, 7, %sp ! align stack
51 sub %sp, 24, %sp ! expand to standard stack frame size
52 mov %g3, %o0
53 call ___start
54 mov %g1, %o1
55
lib/libc/netbsd/lib/csu/arch/sparc64/crt0.S created+59
...@@ -0,0 +1,59 @@
1/* $NetBSD: crt0.S,v 1.2 2018/11/26 17:37:46 joerg Exp $ */
2
3/*
4 * Copyright (c) 1998 Christos Zoulas
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
36 */
37
38#include <machine/asm.h>
39
40RCSID("$NetBSD: crt0.S,v 1.2 2018/11/26 17:37:46 joerg Exp $")
41
42STRONG_ALIAS(_start,__start)
43
44 .align 4
45 .register %g3,#scratch
46 .register %g2,#scratch
47
48 ! called with:
49 ! %g3 = cleanup
50 ! %g2 = obj
51 ! %g1 = ps_strings
52 ! call: ___start(cleanup, ps_strings)
53_ENTRY(__start)
54 clr %fp
55 clr %g4 ! data base for some memory models
56 mov %g3, %o0
57 ba,pt %icc,___start
58 mov %g1, %o1
59
lib/libc/netbsd/lib/csu/arch/x86_64/crt0.S created+48
...@@ -0,0 +1,48 @@
1/* $NetBSD: crt0.S,v 1.4 2018/11/26 17:37:46 joerg Exp $ */
2
3/*
4 * Copyright (c) 1998 Christos Zoulas
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 */
35
36#include <machine/asm.h>
37
38RCSID("$NetBSD: crt0.S,v 1.4 2018/11/26 17:37:46 joerg Exp $")
39
40STRONG_ALIAS(_start,__start)
41 .hidden ___start
42
43_ENTRY(__start)
44 andq $~15,%rsp
45 subq $8,%rsp
46 movq %rdx, %rdi
47 movq %rbx, %rsi
48 jmp ___start
lib/libc/netbsd/lib/csu/common/crt0-common.c created+351
...@@ -0,0 +1,351 @@
1/* $NetBSD: crt0-common.c,v 1.27 2022/06/21 06:52:17 skrll Exp $ */
2
3/*
4 * Copyright (c) 1998 Christos Zoulas
5 * Copyright (c) 1995 Christopher G. Demetriou
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 for the
19 * NetBSD Project. See http://www.NetBSD.org/ for
20 * information about NetBSD.
21 * 4. The name of the author may not be used to endorse or promote products
22 * derived from this software without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
36 */
37
38#include <sys/cdefs.h>
39__RCSID("$NetBSD: crt0-common.c,v 1.27 2022/06/21 06:52:17 skrll Exp $");
40
41#include <sys/types.h>
42#include <sys/exec.h>
43#include <sys/exec_elf.h>
44#include <sys/syscall.h>
45#include <machine/profile.h>
46#include <stdlib.h>
47#include <unistd.h>
48
49#include "csu-common.h"
50
51extern int main(int, char **, char **);
52
53typedef void (*fptr_t)(void);
54#ifndef HAVE_INITFINI_ARRAY
55extern void _init(void);
56extern void _fini(void);
57#endif
58extern void _libc_init(void);
59
60/*
61 * Arrange for _DYNAMIC to be weak and undefined (and therefore to show up
62 * as being at address zero, unless something else defines it). That way,
63 * if we happen to be compiling without -static but with without any
64 * shared libs present, things will still work.
65 */
66
67__weakref_visible int rtld_DYNAMIC __weak_reference(_DYNAMIC);
68
69#ifdef MCRT0
70extern void monstartup(u_long, u_long);
71extern void _mcleanup(void);
72extern unsigned char __etext, __eprol;
73#endif /* MCRT0 */
74
75static char empty_string[] = "";
76
77char **environ __common;
78struct ps_strings *__ps_strings __common = 0;
79char *__progname __common = empty_string;
80
81__dead __dso_hidden void ___start(void (*)(void), struct ps_strings *);
82
83#define write(fd, s, n) __syscall(SYS_write, (fd), (s), (n))
84
85#define _FATAL(str) \
86do { \
87 write(2, str, sizeof(str)-1); \
88 _exit(1); \
89} while (0)
90
91/*
92 * If we are using INIT_ARRAY/FINI_ARRAY and we are linked statically,
93 * we have to process these instead of relying on RTLD to do it for us.
94 *
95 * Since we don't need .init or .fini sections, just code them in C
96 * to make life easier.
97 */
98extern const fptr_t __preinit_array_start[] __dso_hidden;
99extern const fptr_t __preinit_array_end[] __dso_hidden __weak;
100extern const fptr_t __init_array_start[] __dso_hidden;
101extern const fptr_t __init_array_end[] __dso_hidden __weak;
102extern const fptr_t __fini_array_start[] __dso_hidden;
103extern const fptr_t __fini_array_end[] __dso_hidden __weak;
104
105static inline void
106_preinit(void)
107{
108 for (const fptr_t *f = __preinit_array_start; f < __preinit_array_end; f++) {
109 (*f)();
110 }
111}
112
113static inline void
114_initarray(void)
115{
116 for (const fptr_t *f = __init_array_start; f < __init_array_end; f++) {
117 (*f)();
118 }
119}
120
121static void
122_finiarray(void)
123{
124 for (const fptr_t *f = __fini_array_start; f < __fini_array_end; f++) {
125 (*f)();
126 }
127}
128
129#if \
130 defined(__aarch64__) || \
131 defined(__powerpc__) || \
132 defined(__sparc__) || \
133 defined(__x86_64__)
134#define HAS_IPLTA
135static void fix_iplta(void) __noinline;
136#elif \
137 defined(__arm__) || \
138 defined(__i386__)
139#define HAS_IPLT
140static void fix_iplt(void) __noinline;
141#endif
142
143
144#ifdef HAS_IPLTA
145#include <stdio.h>
146extern const Elf_Rela __rela_iplt_start[] __dso_hidden __weak;
147extern const Elf_Rela __rela_iplt_end[] __dso_hidden __weak;
148#ifdef __sparc__
149#define IFUNC_RELOCATION R_TYPE(JMP_IREL)
150#include <machine/elf_support.h>
151#define write_plt(where, value) sparc_write_branch((void *)where, (void *)value)
152#else
153#define IFUNC_RELOCATION R_TYPE(IRELATIVE)
154#define write_plt(where, value) *where = value
155#endif
156
157static void
158fix_iplta(void)
159{
160 const Elf_Rela *rela, *relalim;
161 uintptr_t relocbase = 0;
162 Elf_Addr *where, target;
163
164 rela = __rela_iplt_start;
165 relalim = __rela_iplt_end;
166 for (; rela < relalim; ++rela) {
167 if (ELF_R_TYPE(rela->r_info) != IFUNC_RELOCATION)
168 abort();
169 where = (Elf_Addr *)(relocbase + rela->r_offset);
170 target = (Elf_Addr)(relocbase + rela->r_addend);
171 target = ((Elf_Addr(*)(void))target)();
172 write_plt(where, target);
173 }
174}
175#endif
176#ifdef HAS_IPLT
177extern const Elf_Rel __rel_iplt_start[] __dso_hidden __weak;
178extern const Elf_Rel __rel_iplt_end[] __dso_hidden __weak;
179#define IFUNC_RELOCATION R_TYPE(IRELATIVE)
180
181static void
182fix_iplt(void)
183{
184 const Elf_Rel *rel, *rellim;
185 uintptr_t relocbase = 0;
186 Elf_Addr *where, target;
187
188 rel = __rel_iplt_start;
189 rellim = __rel_iplt_end;
190 for (; rel < rellim; ++rel) {
191 if (ELF_R_TYPE(rel->r_info) != IFUNC_RELOCATION)
192 abort();
193 where = (Elf_Addr *)(relocbase + rel->r_offset);
194 target = ((Elf_Addr(*)(void))*where)();
195 *where = target;
196 }
197}
198#endif
199
200#if defined(__x86_64__) || defined(__i386__)
201# define HAS_RELOCATE_SELF
202# if defined(__x86_64__)
203# define RELA
204# define REL_TAG DT_RELA
205# define RELSZ_TAG DT_RELASZ
206# define REL_TYPE Elf_Rela
207# else
208# define REL_TAG DT_REL
209# define RELSZ_TAG DT_RELSZ
210# define REL_TYPE Elf_Rel
211# endif
212
213#include <elf.h>
214
215static void relocate_self(struct ps_strings *) __noinline;
216
217static void
218relocate_self(struct ps_strings *ps_strings)
219{
220 AuxInfo *aux = (AuxInfo *)(ps_strings->ps_argvstr + ps_strings->ps_nargvstr +
221 ps_strings->ps_nenvstr + 2);
222 uintptr_t relocbase = (uintptr_t)~0U;
223 const Elf_Phdr *phdr = NULL;
224 Elf_Half phnum = (Elf_Half)~0;
225
226 for (; aux->a_type != AT_NULL; ++aux) {
227 switch (aux->a_type) {
228 case AT_BASE:
229 if (aux->a_v)
230 return;
231 break;
232 case AT_PHDR:
233 phdr = (void *)aux->a_v;
234 break;
235 case AT_PHNUM:
236 phnum = (Elf_Half)aux->a_v;
237 break;
238 }
239 }
240
241 if (phdr == NULL || phnum == (Elf_Half)~0)
242 return;
243
244 const Elf_Phdr *phlimit = phdr + phnum, *dynphdr = NULL;
245
246 for (; phdr < phlimit; ++phdr) {
247 if (phdr->p_type == PT_DYNAMIC)
248 dynphdr = phdr;
249 if (phdr->p_type == PT_PHDR)
250 relocbase = (uintptr_t)phdr - phdr->p_vaddr;
251 }
252 if (dynphdr == NULL || relocbase == (uintptr_t)~0U)
253 return;
254
255 Elf_Dyn *dynp = (Elf_Dyn *)((uint8_t *)dynphdr->p_vaddr + relocbase);
256
257 const REL_TYPE *relocs = 0, *relocslim;
258 Elf_Addr relocssz = 0;
259
260 for (; dynp->d_tag != DT_NULL; dynp++) {
261 switch (dynp->d_tag) {
262 case REL_TAG:
263 relocs =
264 (const REL_TYPE *)(relocbase + dynp->d_un.d_ptr);
265 break;
266 case RELSZ_TAG:
267 relocssz = dynp->d_un.d_val;
268 break;
269 }
270 }
271 relocslim = (const REL_TYPE *)((const uint8_t *)relocs + relocssz);
272 for (; relocs < relocslim; ++relocs) {
273 Elf_Addr *where;
274
275 where = (Elf_Addr *)(relocbase + relocs->r_offset);
276
277 switch (ELF_R_TYPE(relocs->r_info)) {
278 case R_TYPE(RELATIVE): /* word64 B + A */
279#ifdef RELA
280 *where = (Elf_Addr)(relocbase + relocs->r_addend);
281#else
282 *where += (Elf_Addr)relocbase;
283#endif
284 break;
285#ifdef IFUNC_RELOCATION
286 case IFUNC_RELOCATION:
287 break;
288#endif
289 default:
290 abort();
291 }
292 }
293}
294#endif
295
296void
297___start(void (*cleanup)(void), /* from shared loader */
298 struct ps_strings *ps_strings)
299{
300#if defined(HAS_RELOCATE_SELF)
301 relocate_self(ps_strings);
302#endif
303
304 if (ps_strings == NULL)
305 _FATAL("ps_strings missing\n");
306 __ps_strings = ps_strings;
307
308 environ = ps_strings->ps_envstr;
309
310 if (ps_strings->ps_argvstr[0] != NULL) {
311 char *c;
312 __progname = ps_strings->ps_argvstr[0];
313 for (c = ps_strings->ps_argvstr[0]; *c; ++c) {
314 if (*c == '/')
315 __progname = c + 1;
316 }
317 } else {
318 __progname = empty_string;
319 }
320
321 if (cleanup != NULL)
322 atexit(cleanup);
323
324 _libc_init();
325
326 if (&rtld_DYNAMIC == NULL) {
327#ifdef HAS_IPLTA
328 fix_iplta();
329#endif
330#ifdef HAS_IPLT
331 fix_iplt();
332#endif
333 }
334
335 _preinit();
336
337#ifdef MCRT0
338 atexit(_mcleanup);
339 monstartup((u_long)&__eprol, (u_long)&__etext);
340#endif
341
342 atexit(_finiarray);
343 _initarray();
344
345#ifndef HAVE_INITFINI_ARRAY
346 atexit(_fini);
347 _init();
348#endif
349
350 exit(main(ps_strings->ps_nargvstr, ps_strings->ps_argvstr, environ));
351}
lib/libc/netbsd/lib/csu/common/crtbegin.c created+135
...@@ -0,0 +1,135 @@
1/*-
2 * Copyright (c) 2013 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to The NetBSD Foundation
6 * by Matt Thomas of 3am Software Foundry.
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 *
17 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
18 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 */
29#include <sys/cdefs.h>
30__RCSID("$NetBSD: crtbegin.c,v 1.17 2018/12/28 18:17:11 christos Exp $");
31
32/* zig patch: no crtbegin.h */
33
34typedef void (*fptr_t)(void);
35
36/* zig patch: remove gcj nonsense */
37
38#if !defined(HAVE_INITFINI_ARRAY)
39extern __dso_hidden const fptr_t __CTOR_LIST__start __asm("__CTOR_LIST__");
40
41__dso_hidden const fptr_t __aligned(sizeof(void *)) __CTOR_LIST__[] __section(".ctors") = {
42 (fptr_t) -1,
43};
44__dso_hidden extern const fptr_t __CTOR_LIST_END__[];
45#endif
46
47#ifdef SHARED
48__dso_hidden void *__dso_handle = &__dso_handle;
49
50__weakref_visible void cxa_finalize(void *)
51 __weak_reference(__cxa_finalize);
52#else
53__dso_hidden void *__dso_handle;
54#endif
55
56#if !defined(__ARM_EABI__) || defined(__ARM_DWARF_EH__)
57__dso_hidden const long __EH_FRAME_LIST__[0] __section(".eh_frame");
58
59__weakref_visible void register_frame_info(const void *, const void *)
60 __weak_reference(__register_frame_info);
61__weakref_visible void deregister_frame_info(const void *)
62 __weak_reference(__deregister_frame_info);
63
64static long dwarf_eh_object[8];
65#endif
66
67static void __do_global_ctors_aux(void) __used;
68
69/* zig patch: use .init_array */
70__attribute__((constructor))
71static void
72__do_global_ctors_aux(void)
73{
74 static unsigned char __initialized;
75
76 if (__initialized)
77 return;
78
79 __initialized = 1;
80
81#if !defined(__ARM_EABI__) || defined(__ARM_DWARF_EH__)
82 if (register_frame_info)
83 register_frame_info(__EH_FRAME_LIST__, &dwarf_eh_object);
84#endif
85
86 /* zig patch: remove gcj nonsense */
87
88#if !defined(HAVE_INITFINI_ARRAY)
89 for (const fptr_t *p = __CTOR_LIST_END__; p > &__CTOR_LIST__start + 1; ) {
90 (*(*--p))();
91 }
92#endif
93}
94
95#if !defined(__ARM_EABI__) || defined(SHARED) || defined(__ARM_DWARF_EH__)
96#if !defined(HAVE_INITFINI_ARRAY)
97extern __dso_hidden const fptr_t __DTOR_LIST__start __asm("__DTOR_LIST__");
98
99__dso_hidden const fptr_t __aligned(sizeof(void *)) __DTOR_LIST__[] __section(".dtors") = {
100 (fptr_t) -1,
101};
102__dso_hidden extern const fptr_t __DTOR_LIST_END__[];
103#endif
104
105static void __do_global_dtors_aux(void) __used;
106
107/* zig patch: use .fini_array */
108__attribute__((destructor))
109static void
110__do_global_dtors_aux(void)
111{
112 static unsigned char __finished;
113
114 if (__finished)
115 return;
116
117 __finished = 1;
118
119#ifdef SHARED
120 if (cxa_finalize)
121 (*cxa_finalize)(__dso_handle);
122#endif
123
124#if !defined(HAVE_INITFINI_ARRAY)
125 for (const fptr_t *p = &__DTOR_LIST__start + 1; p < __DTOR_LIST_END__; ) {
126 (*(*p++))();
127 }
128#endif
129
130#if !defined(__ARM_EABI__) || defined(__ARM_DWARF_EH__)
131 if (deregister_frame_info)
132 deregister_frame_info(__EH_FRAME_LIST__);
133#endif
134}
135#endif /* !__ARM_EABI__ || SHARED || __ARM_DWARF_EH__ */
lib/libc/netbsd/lib/csu/common/csu-common.h created+38
...@@ -0,0 +1,38 @@
1/*-
2 * Copyright (c) 2021 The NetBSD Foundation, Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
15 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
18 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 * POSSIBILITY OF SUCH DAMAGE.
25 */
26
27/*
28 * For historical reasons the following symbols are defined both in libc
29 * and csu and need to be common
30 */
31#if __has_attribute(__common__)
32#define __common __attribute((__common__))
33#else
34#define __common
35#endif
36extern char *__progname __common;
37extern char **environ __common;
38extern struct ps_strings *__ps_strings __common;
lib/libc/netbsd/lib/csu/common/sysident.S created+89
...@@ -0,0 +1,89 @@
1/* $NetBSD: sysident.S,v 1.3 2014/05/14 14:59:14 joerg Exp $ */
2
3/*
4 * Copyright (c) 1997 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 for the
18 * NetBSD Project. See http://www.NetBSD.org/ for
19 * information about NetBSD.
20 * 4. The name of the author may not be used to endorse or promote products
21 * derived from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
28 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 * <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
35 */
36
37/*
38 * Here we define the NetBSD OS Version in an ELF .note section, structured
39 * like:
40 *
41 * [NOTE HEADER]
42 * long name size
43 * long description size
44 * long note type
45 *
46 * [NOTE DATUM]
47 * string OS name
48 *
49 * OSVERSION notes also have:
50 * long OS version (__NetBSD_Version__ constant from param.h)
51 *
52 * The DATUM fields should be padded out such that their actual (not
53 * declared) sizes % 4 == 0.
54 *
55 * These are used by the kernel to determine if this binary is really a
56 * NetBSD binary, or some other OS's.
57 */
58
59#include "sysident_assym.h"
60
61 .section ".note.netbsd.ident", "a"
62 .p2align 2
63
64 .long ELF_NOTE_NETBSD_NAMESZ
65 .long ELF_NOTE_NETBSD_DESCSZ
66 .long ELF_NOTE_TYPE_NETBSD_TAG
67 .ascii "NetBSD\0\0" /* ELF_NOTE_NETBSD_NAME */
68 .long __NetBSD_Version__
69
70 .section ".note.netbsd.pax", "a"
71 .p2align 2
72
73 .long ELF_NOTE_PAX_NAMESZ
74 .long ELF_NOTE_PAX_DESCSZ
75 .long ELF_NOTE_TYPE_PAX_TAG
76 .ascii "PaX\0" /* ELF_NOTE_PAX_NAME */
77 .long 0
78
79#ifdef ELF_NOTE_MARCH_DESC
80 .section ".note.netbsd.march", "a"
81 .p2align 2
82
83 .long ELF_NOTE_MARCH_NAMESZ
84 .long ELF_NOTE_MARCH_DESCSZ
85 .long ELF_NOTE_TYPE_MARCH_TAG
86 .ascii "NetBSD\0\0"
87 .asciz ELF_NOTE_MARCH_DESC
88 .p2align 2
89#endif
lib/libc/netbsd/lib/csu/common/sysident_assym.h created+17
...@@ -0,0 +1,17 @@
1/* zig patch: manually expanded from sysident_assym.cf */
2
3#define ELF_NOTE_NETBSD_NAMESZ 7
4#define ELF_NOTE_NETBSD_DESCSZ 4
5#define ELF_NOTE_TYPE_NETBSD_TAG 1
6#define ELF_NOTE_PAX_NAMESZ 4
7#define ELF_NOTE_PAX_DESCSZ 4
8#define ELF_NOTE_TYPE_PAX_TAG 3
9
10/* zig patch: ELF_NOTE_MARCH_DESC and ELF_NOTE_MARCH_DESCSZ defined by the compiler */
11#ifdef ELF_NOTE_MARCH_DESC
12#define ELF_NOTE_MARCH_NAMESZ 7
13#define ELF_NOTE_TYPE_MARCH_TAG 5
14#endif
15
16#define ELF_NOTE_MCMODEL_NAMESZ 7
17#define ELF_NOTE_TYPE_MCMODEL_TAG 6