mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
libc: Add FreeBSD libc startup code from 14.2.0.
* NT_FREEBSD_ABI_TAG was manually adjusted from using a hardcoded value to using __FreeBSD_version which will be defined by the compiler. * GCJ stuff was removed. * HAVE_CTORS definitions were removed.
This commit is contained in:
parent
01390cc533
commit
a36dcef7dc
125
lib/libc/freebsd/COPYRIGHT
vendored
Normal file
125
lib/libc/freebsd/COPYRIGHT
vendored
Normal file
@ -0,0 +1,125 @@
|
||||
# @(#)COPYRIGHT 8.2 (Berkeley) 3/21/94
|
||||
|
||||
The compilation of software known as FreeBSD is distributed under the
|
||||
following terms:
|
||||
|
||||
Copyright (c) 1992-2023 The FreeBSD Project.
|
||||
|
||||
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 AUTHOR 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 AUTHOR 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.
|
||||
|
||||
The 4.4BSD and 4.4BSD-Lite software is distributed under the following
|
||||
terms:
|
||||
|
||||
All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
|
||||
Releases is copyrighted by The Regents of the University of California.
|
||||
|
||||
Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
|
||||
The Regents of the University of California. All rights reserved.
|
||||
|
||||
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.
|
||||
3. All advertising materials mentioning features or use of this software
|
||||
must display the following acknowledgement:
|
||||
This product includes software developed by the University of
|
||||
California, Berkeley and its contributors.
|
||||
4. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
|
||||
The Institute of Electrical and Electronics Engineers and the American
|
||||
National Standards Committee X3, on Information Processing Systems have
|
||||
given us permission to reprint portions of their documentation.
|
||||
|
||||
In the following statement, the phrase ``this text'' refers to portions
|
||||
of the system documentation.
|
||||
|
||||
Portions of this text are reprinted and reproduced in electronic form in
|
||||
the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE
|
||||
Standard Portable Operating System Interface for Computer Environments
|
||||
(POSIX), copyright C 1988 by the Institute of Electrical and Electronics
|
||||
Engineers, Inc. In the event of any discrepancy between these versions
|
||||
and the original IEEE Standard, the original IEEE Standard is the referee
|
||||
document.
|
||||
|
||||
In the following statement, the phrase ``This material'' refers to portions
|
||||
of the system documentation.
|
||||
|
||||
This material is reproduced with permission from American National
|
||||
Standards Committee X3, on Information Processing Systems. Computer and
|
||||
Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
|
||||
Suite 500, Washington, DC 20001-2178. The developmental work of
|
||||
Programming Language C was completed by the X3J11 Technical Committee.
|
||||
|
||||
The views and conclusions contained in the software and documentation are
|
||||
those of the authors and should not be interpreted as representing official
|
||||
policies, either expressed or implied, of the Regents of the University
|
||||
of California.
|
||||
|
||||
|
||||
NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD")
|
||||
source has been updated. The copyright addendum may be found at
|
||||
ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is
|
||||
included below.
|
||||
|
||||
July 22, 1999
|
||||
|
||||
To All Licensees, Distributors of Any Version of BSD:
|
||||
|
||||
As you know, certain of the Berkeley Software Distribution ("BSD") source
|
||||
code files require that further distributions of products containing all or
|
||||
portions of the software, acknowledge within their advertising materials
|
||||
that such products contain software developed by UC Berkeley and its
|
||||
contributors.
|
||||
|
||||
Specifically, the provision reads:
|
||||
|
||||
" * 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors."
|
||||
|
||||
Effective immediately, licensees and distributors are no longer required to
|
||||
include the acknowledgement within advertising materials. Accordingly, the
|
||||
foregoing paragraph of those BSD Unix files containing it is hereby deleted
|
||||
in its entirety.
|
||||
|
||||
William Hoskins
|
||||
Director, Office of Technology Licensing
|
||||
University of California, Berkeley
|
||||
1
lib/libc/freebsd/lib/csu/aarch64/crt.h
vendored
Normal file
1
lib/libc/freebsd/lib/csu/aarch64/crt.h
vendored
Normal file
@ -0,0 +1 @@
|
||||
/* Empty so we can include this unconditionally */
|
||||
33
lib/libc/freebsd/lib/csu/aarch64/crt1_c.c
vendored
Normal file
33
lib/libc/freebsd/lib/csu/aarch64/crt1_c.c
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* Copyright 2014 Andrew Turner.
|
||||
* Copyright 2014-2015 The FreeBSD Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Portions of this software were developed by Andrew Turner
|
||||
* under sponsorship from the FreeBSD Foundation.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include "csu_common.h"
|
||||
68
lib/libc/freebsd/lib/csu/aarch64/crt1_s.S
vendored
Normal file
68
lib/libc/freebsd/lib/csu/aarch64/crt1_s.S
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* Copyright 2014 Andrew Turner.
|
||||
* Copyright 2014-2015 The FreeBSD Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Portions of this software were developed by Andrew Turner
|
||||
* under sponsorship from the FreeBSD Foundation.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
/*
|
||||
* The program entry point
|
||||
* void _start(char **ap, void (*cleanup)(void)) __dead2
|
||||
*/
|
||||
ENTRY(_start)
|
||||
.cfi_undefined x30
|
||||
mov x3, x2 /* cleanup */
|
||||
add x1, x0, #8 /* load argv */
|
||||
ldr x0, [x0] /* load argc */
|
||||
add x2, x1, x0, lsl #3 /* env is after argv */
|
||||
add x2, x2, #8 /* argv is null terminated */
|
||||
#ifdef PIC
|
||||
adrp x4, :got:main
|
||||
ldr x4, [x4, :got_lo12:main]
|
||||
#else
|
||||
ldr x4, =main
|
||||
#endif
|
||||
#ifdef GCRT
|
||||
ldr x5, =eprol
|
||||
ldr x6, =etext
|
||||
/*
|
||||
* __libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext)
|
||||
*/
|
||||
bl __libc_start1_gcrt
|
||||
eprol:
|
||||
#else
|
||||
/* __libc_start1(argc, argv, env, cleanup, main) */
|
||||
bl __libc_start1
|
||||
#endif
|
||||
END(_start)
|
||||
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
30
lib/libc/freebsd/lib/csu/amd64/crt.h
vendored
Normal file
30
lib/libc/freebsd/lib/csu/amd64/crt.h
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifndef _CRT_H_
|
||||
#define _CRT_H_
|
||||
|
||||
/* zig patch: no HAVE_CTORS */
|
||||
#define INIT_CALL_SEQ(func) "call " __STRING(func)
|
||||
|
||||
#endif
|
||||
30
lib/libc/freebsd/lib/csu/amd64/crt1_c.c
vendored
Normal file
30
lib/libc/freebsd/lib/csu/amd64/crt1_c.c
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include "csu_common.h"
|
||||
89
lib/libc/freebsd/lib/csu/amd64/crt1_s.S
vendored
Normal file
89
lib/libc/freebsd/lib/csu/amd64/crt1_s.S
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright (C) 2023 Dmitry Chagin <dchagin@FreeBSD.org>
|
||||
*
|
||||
* 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 AUTHOR 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 AUTHOR 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>
|
||||
|
||||
|
||||
.text
|
||||
.align 8
|
||||
|
||||
/*
|
||||
* The program entry point
|
||||
* %rdi %rsi
|
||||
* void _start(char **ap, void (*cleanup)(void)) __dead2
|
||||
*/
|
||||
.globl _start
|
||||
.type _start, @function
|
||||
_start:
|
||||
.cfi_startproc
|
||||
.cfi_undefined %rip /* Terminate call chain. */
|
||||
pushq %rbp /* Align stack, terminate call chain. */
|
||||
.cfi_def_cfa_offset 8
|
||||
movq %rsp, %rbp
|
||||
.cfi_offset %rbp, -16
|
||||
.cfi_def_cfa_register %rbp
|
||||
#ifdef GCRT
|
||||
subq $16, %rsp
|
||||
#endif
|
||||
movq %rsi, %rcx
|
||||
movq %rdi, %rsi /* argv = ap */
|
||||
addq $8, %rsi /* argv += 1 */
|
||||
movq %rdi, %rdx /* env = ap */
|
||||
addq $16, %rdx /* env += 2 */
|
||||
movslq (%rdi), %rax
|
||||
movl %eax, %edi /* argc = *(long *)(void *)ap */
|
||||
shlq $3, %rax
|
||||
addq %rax, %rdx /* env += argc */
|
||||
#ifdef PIC
|
||||
/*
|
||||
* XXX. %rip relative addressing is not intended for use in the
|
||||
* large memory model due to the offset from %rip being limited
|
||||
* to 32 bits.
|
||||
*/
|
||||
leaq main@plt(%rip), %r8
|
||||
#else
|
||||
movabsq $main, %r8
|
||||
#endif
|
||||
#ifdef GCRT
|
||||
movabsq $eprol, %r9
|
||||
movabsq $etext, %rax
|
||||
movq %rax, (%rsp)
|
||||
/*
|
||||
* %edi %rsi %rdx %rcx %r8 %r9 (%rsp)
|
||||
* __libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext)
|
||||
*/
|
||||
callq __libc_start1_gcrt
|
||||
eprol:
|
||||
#else
|
||||
/* __libc_start1(argc, argv, env, cleanup, main) */
|
||||
callq __libc_start1
|
||||
#endif
|
||||
int3
|
||||
.cfi_endproc
|
||||
.size _start, . - _start
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
1
lib/libc/freebsd/lib/csu/arm/crt.h
vendored
Normal file
1
lib/libc/freebsd/lib/csu/arm/crt.h
vendored
Normal file
@ -0,0 +1 @@
|
||||
/* Empty so we can include this unconditionally */
|
||||
80
lib/libc/freebsd/lib/csu/arm/crt1_c.c
vendored
Normal file
80
lib/libc/freebsd/lib/csu/arm/crt1_c.c
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright 2001 David E. O'Brien.
|
||||
* All rights reserved.
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 1997 Jason R. Thorpe.
|
||||
* Copyright (c) 1995 Christopher G. Demetriou
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the
|
||||
* FreeBSD Project. See https://www.freebsd.org/ for
|
||||
* information about FreeBSD.
|
||||
* This product includes software developed for the
|
||||
* NetBSD Project. See http://www.netbsd.org/ for
|
||||
* information about NetBSD.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
#include "libc_private.h"
|
||||
#include "csu_common.h"
|
||||
|
||||
struct Struct_Obj_Entry;
|
||||
struct ps_strings;
|
||||
|
||||
void _start(int, char **, char **, const struct Struct_Obj_Entry *,
|
||||
void (*)(void), struct ps_strings *) __dead2;
|
||||
|
||||
struct ps_strings *__ps_strings;
|
||||
|
||||
void __start(int, char **, char **, struct ps_strings *,
|
||||
const struct Struct_Obj_Entry *, void (*)(void)) __dead2;
|
||||
|
||||
void
|
||||
__start(int argc, char **argv, char **env, struct ps_strings *ps_strings,
|
||||
const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void))
|
||||
{
|
||||
if (ps_strings != (struct ps_strings *)0)
|
||||
__ps_strings = ps_strings;
|
||||
|
||||
#ifdef GCRT
|
||||
__libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext);
|
||||
#else
|
||||
__libc_start1(argc, argv, env, cleanup, main);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GCRT
|
||||
__asm__(".text");
|
||||
__asm__("eprol:");
|
||||
__asm__(".previous");
|
||||
#endif
|
||||
77
lib/libc/freebsd/lib/csu/arm/crt1_s.S
vendored
Normal file
77
lib/libc/freebsd/lib/csu/arm/crt1_s.S
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright 2001 David E. O'Brien.
|
||||
* All rights reserved.
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 1997 Jason R. Thorpe.
|
||||
* Copyright (c) 1995 Christopher G. Demetriou
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the
|
||||
* FreeBSD Project. See https://www.freebsd.org/ for
|
||||
* information about FreeBSD.
|
||||
* This product includes software developed for the
|
||||
* NetBSD Project. See http://www.netbsd.org/ for
|
||||
* information about NetBSD.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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>
|
||||
#include <sys/param.h>
|
||||
#include <sys/elf_common.h>
|
||||
#include "notes.h"
|
||||
|
||||
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
|
||||
/* 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]
|
||||
|
||||
b __start
|
||||
END(_start)
|
||||
|
||||
.section .note.tag,"a",%note
|
||||
.p2align 2
|
||||
.4byte 2f-1f
|
||||
.4byte 4f-3f
|
||||
.4byte NT_FREEBSD_ARCH_TAG
|
||||
1: .asciz NOTE_FREEBSD_VENDOR
|
||||
2: .p2align 2
|
||||
3: .asciz MACHINE_ARCH
|
||||
4:
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
95
lib/libc/freebsd/lib/csu/common/crtbegin.c
vendored
Normal file
95
lib/libc/freebsd/lib/csu/common/crtbegin.c
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#include "crt.h"
|
||||
|
||||
typedef void (*crt_func)(void);
|
||||
|
||||
extern void *__dso_handle __hidden;
|
||||
|
||||
#ifndef SHARED
|
||||
void *__dso_handle = 0;
|
||||
#else
|
||||
void *__dso_handle = &__dso_handle;
|
||||
void __cxa_finalize(void *) __weak_symbol;
|
||||
|
||||
/*
|
||||
* Call __cxa_finalize with the dso handle in shared objects.
|
||||
* When we have ctors/dtors call from the dtor handler before calling
|
||||
* any dtors, otherwise use a destructor.
|
||||
*/
|
||||
#ifndef HAVE_CTORS
|
||||
__attribute__((destructor))
|
||||
#endif
|
||||
static void
|
||||
run_cxa_finalize(void)
|
||||
{
|
||||
|
||||
if (__cxa_finalize != NULL)
|
||||
__cxa_finalize(__dso_handle);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* On some architectures and toolchains we may need to call the .dtors.
|
||||
* These are called in the order they are in the ELF file.
|
||||
*/
|
||||
#ifdef HAVE_CTORS
|
||||
static void __do_global_dtors_aux(void) __used;
|
||||
|
||||
static crt_func __CTOR_LIST__[] __section(".ctors") __used = {
|
||||
(crt_func)-1
|
||||
};
|
||||
static crt_func __DTOR_LIST__[] __section(".dtors") __used = {
|
||||
(crt_func)-1
|
||||
};
|
||||
|
||||
static void
|
||||
__do_global_dtors_aux(void)
|
||||
{
|
||||
crt_func fn;
|
||||
int n;
|
||||
|
||||
#ifdef SHARED
|
||||
run_cxa_finalize();
|
||||
#endif
|
||||
|
||||
for (n = 1;; n++) {
|
||||
fn = __DTOR_LIST__[n];
|
||||
if (fn == (crt_func)0 || fn == (crt_func)-1)
|
||||
break;
|
||||
fn();
|
||||
}
|
||||
}
|
||||
|
||||
asm (
|
||||
".pushsection .fini \n"
|
||||
"\t" INIT_CALL_SEQ(__do_global_dtors_aux) "\n"
|
||||
".popsection \n"
|
||||
);
|
||||
#endif
|
||||
|
||||
/* zig patch: remove gcj nonsense */
|
||||
55
lib/libc/freebsd/lib/csu/common/crtbrand.S
vendored
Normal file
55
lib/libc/freebsd/lib/csu/common/crtbrand.S
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright 2000 David E. O'Brien, John D. Polstra.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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>
|
||||
#include <sys/param.h>
|
||||
#include <sys/elf_common.h>
|
||||
#include "notes.h"
|
||||
|
||||
/*
|
||||
* Special ".note.tag" entry specifying the ABI version. See
|
||||
* http://www.netbsd.org/Documentation/kernel/elf-notes.html
|
||||
* for more information.
|
||||
*/
|
||||
|
||||
.section .note.tag,"aG",%note,.freebsd.noteG,comdat
|
||||
.p2align 2
|
||||
.4byte 2f-1f
|
||||
.4byte 4f-3f
|
||||
.4byte NT_FREEBSD_ABI_TAG
|
||||
1: .asciz NOTE_FREEBSD_VENDOR
|
||||
2: .p2align 2
|
||||
/* zig patch: use __FreeBSD_version which is defined by the compiler */
|
||||
3: .4byte __FreeBSD_version
|
||||
4:
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
|
||||
#ifdef __aarch64__
|
||||
/* This is needed in all objects for BTI to be used in the linked elf file */
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
#endif
|
||||
65
lib/libc/freebsd/lib/csu/common/crtend.c
vendored
Normal file
65
lib/libc/freebsd/lib/csu/common/crtend.c
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include "crt.h"
|
||||
|
||||
typedef void (*crt_func)(void);
|
||||
|
||||
/* zig patch: remove gcj nonsense */
|
||||
|
||||
#ifdef HAVE_CTORS
|
||||
|
||||
/*
|
||||
* On some architectures and toolchains we may need to call the .ctors.
|
||||
* These are called in the reverse order they are in the ELF file.
|
||||
*/
|
||||
static void __do_global_ctors_aux(void) __used;
|
||||
|
||||
static crt_func __CTOR_END__[] __section(".ctors") __used = {
|
||||
(crt_func)0
|
||||
};
|
||||
static crt_func __DTOR_END__[] __section(".dtors") __used = {
|
||||
(crt_func)0
|
||||
};
|
||||
|
||||
static void
|
||||
__do_global_ctors_aux(void)
|
||||
{
|
||||
crt_func fn;
|
||||
int n;
|
||||
|
||||
for (n = 1;; n++) {
|
||||
fn = __CTOR_END__[-n];
|
||||
if (fn == (crt_func)0 || fn == (crt_func)-1)
|
||||
break;
|
||||
fn();
|
||||
}
|
||||
}
|
||||
|
||||
asm (
|
||||
".pushsection .init \n"
|
||||
"\t" INIT_CALL_SEQ(__do_global_ctors_aux) "\n"
|
||||
".popsection \n"
|
||||
);
|
||||
#endif
|
||||
50
lib/libc/freebsd/lib/csu/common/csu_common.h
vendored
Normal file
50
lib/libc/freebsd/lib/csu/common/csu_common.h
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifdef _CSU_COMMON_H_
|
||||
|
||||
/*
|
||||
* This file includes both definitions and declarations, it can be
|
||||
* included only into one compilation unit for csu objects. We cannot
|
||||
* practically check this, but at least guard against
|
||||
* double-inclusion.
|
||||
*/
|
||||
#error "Include this file only once"
|
||||
#else
|
||||
#define _CSU_COMMON_H_
|
||||
|
||||
char **environ;
|
||||
const char *__progname = "";
|
||||
|
||||
#ifdef GCRT
|
||||
extern int eprol;
|
||||
extern int etext;
|
||||
#endif
|
||||
|
||||
int main(int, char **, char **);
|
||||
|
||||
#endif /* _CSU_COMMON_H_ */
|
||||
47
lib/libc/freebsd/lib/csu/common/feature_note.S
vendored
Normal file
47
lib/libc/freebsd/lib/csu/common/feature_note.S
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright 2000 David E. O'Brien, John D. Polstra.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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>
|
||||
#include <sys/elf_common.h>
|
||||
#include "notes.h"
|
||||
|
||||
.section .note.tag,"a",%note
|
||||
.p2align 2
|
||||
.4byte 2f-1f
|
||||
.4byte 4f-3f
|
||||
.4byte NT_FREEBSD_FEATURE_CTL
|
||||
1: .asciz NOTE_FREEBSD_VENDOR
|
||||
2: .p2align 2
|
||||
3: .4byte 0
|
||||
4:
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
|
||||
#ifdef __aarch64__
|
||||
/* This is needed in all objects for BTI to be used in the linked elf file */
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
#endif
|
||||
48
lib/libc/freebsd/lib/csu/common/ignore_init_note.S
vendored
Normal file
48
lib/libc/freebsd/lib/csu/common/ignore_init_note.S
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2012 Konstantin Belousov <kib@FreeBSD.org>
|
||||
* Copyright (c) 2018 The FreeBSD Foundation
|
||||
*
|
||||
* Parts of this software was developed by Konstantin Belousov
|
||||
* <kib@FreeBSD.org> under sponsorship from the FreeBSD Foundation.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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>
|
||||
#include <sys/elf_common.h>
|
||||
|
||||
#include "notes.h"
|
||||
|
||||
.section .note.tag,"a",%note
|
||||
.p2align 2
|
||||
.4byte 2f-1f
|
||||
.4byte 4f-3f
|
||||
.4byte NT_FREEBSD_NOINIT_TAG
|
||||
1: .asciz NOTE_FREEBSD_VENDOR
|
||||
2: .p2align 2
|
||||
3: .4byte 0
|
||||
4:
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
|
||||
#ifdef __aarch64__
|
||||
/* This is needed in all objects for BTI to be used in the linked elf file */
|
||||
GNU_PROPERTY_AARCH64_FEATURE_1_NOTE(GNU_PROPERTY_AARCH64_FEATURE_1_VAL)
|
||||
#endif
|
||||
32
lib/libc/freebsd/lib/csu/common/notes.h
vendored
Normal file
32
lib/libc/freebsd/lib/csu/common/notes.h
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2012 Konstantin Belousov <kib@FreeBSD.org>
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifndef CSU_COMMON_NOTES_H
|
||||
#define CSU_COMMON_NOTES_H
|
||||
|
||||
#define NOTE_FREEBSD_VENDOR "FreeBSD"
|
||||
|
||||
#define NOTE_SECTION ".note.tag"
|
||||
|
||||
#endif
|
||||
30
lib/libc/freebsd/lib/csu/i386/crt.h
vendored
Normal file
30
lib/libc/freebsd/lib/csu/i386/crt.h
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifndef _CRT_H_
|
||||
#define _CRT_H_
|
||||
|
||||
/* zig patch: no HAVE_CTORS */
|
||||
#define INIT_CALL_SEQ(func) "call " __STRING(func)
|
||||
|
||||
#endif
|
||||
30
lib/libc/freebsd/lib/csu/i386/crt1_c.c
vendored
Normal file
30
lib/libc/freebsd/lib/csu/i386/crt1_c.c
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include "csu_common.h"
|
||||
|
||||
void _start(char *, ...) __dead2;
|
||||
91
lib/libc/freebsd/lib/csu/i386/crt1_s.S
vendored
Normal file
91
lib/libc/freebsd/lib/csu/i386/crt1_s.S
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
/*-
|
||||
* Copyright 2009 Konstantin Belousov.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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>
|
||||
.text
|
||||
.align 4
|
||||
.globl _start
|
||||
.type _start, @function
|
||||
_start:
|
||||
.cfi_startproc
|
||||
.cfi_undefined %eip
|
||||
popl %esi # Pop argc
|
||||
.cfi_def_cfa_offset -4
|
||||
movl %esp,%edi # argv starts at stack top
|
||||
xorl %ebp,%ebp
|
||||
pushl %ebp
|
||||
.cfi_def_cfa_offset 0
|
||||
movl %esp,%ebp
|
||||
.cfi_offset %ebp,-4
|
||||
.cfi_def_cfa_register %ebp
|
||||
andl $0xfffffff0,%esp # align stack
|
||||
|
||||
#ifdef GCRT
|
||||
subl $4,%esp # Align stack for 7 arguments
|
||||
pushl $etext
|
||||
pushl $eprol
|
||||
eprol:
|
||||
#else
|
||||
subl $12,%esp # Align stack for 5 arguments
|
||||
#endif /* GCRT */
|
||||
|
||||
#ifdef PIC
|
||||
calll 1f
|
||||
1: popl %ebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_+[.-1b],%ebx
|
||||
leal main@GOTOFF(%ebx),%eax
|
||||
pushl %eax
|
||||
#else
|
||||
pushl $main
|
||||
#endif /* PIC */
|
||||
|
||||
pushl %edx # rtld cleanup
|
||||
/* env = argv + argc + 1 */
|
||||
movl %edi,%eax # env = argv
|
||||
movl %esi,%ecx
|
||||
shll $2,%ecx # argc * 4
|
||||
addl %ecx,%eax # env += argc
|
||||
addl $4,%eax # env += 1
|
||||
pushl %eax # env
|
||||
pushl %edi # argv
|
||||
pushl %esi # argc
|
||||
|
||||
#ifdef GCRT
|
||||
/*
|
||||
* __libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext);
|
||||
*/
|
||||
calll __libc_start1_gcrt
|
||||
#else
|
||||
/*
|
||||
* __libc_start1(argc, argv, env, cleanup, main);
|
||||
*/
|
||||
#ifdef PIC
|
||||
calll __libc_start1@PLT
|
||||
#else
|
||||
calll __libc_start1
|
||||
#endif
|
||||
#endif /* GCRT */
|
||||
int3
|
||||
.cfi_endproc
|
||||
.size _start, . - _start
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
31
lib/libc/freebsd/lib/csu/powerpc/crt.h
vendored
Normal file
31
lib/libc/freebsd/lib/csu/powerpc/crt.h
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifndef _CRT_H_
|
||||
#define _CRT_H_
|
||||
|
||||
/* zig patch: no HAVE_CTORS */
|
||||
#define CTORS_CONSTRUCTORS
|
||||
#define INIT_CALL_SEQ(func) "bl " __STRING(func) "; nop"
|
||||
|
||||
#endif
|
||||
89
lib/libc/freebsd/lib/csu/powerpc/crt1_c.c
vendored
Normal file
89
lib/libc/freebsd/lib/csu/powerpc/crt1_c.c
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright 2001 David E. O'Brien.
|
||||
* All rights reserved.
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 1997 Jason R. Thorpe.
|
||||
* Copyright (c) 1995 Christopher G. Demetriou
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the
|
||||
* FreeBSD Project. See https://www.freebsd.org/ for
|
||||
* information about FreeBSD.
|
||||
* This product includes software developed for the
|
||||
* NetBSD Project. See http://www.netbsd.org/ for
|
||||
* information about NetBSD.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libc_private.h"
|
||||
#include "csu_common.h"
|
||||
|
||||
struct Struct_Obj_Entry;
|
||||
struct ps_strings;
|
||||
|
||||
struct ps_strings *__ps_strings;
|
||||
|
||||
void _start(int, char **, char **, const struct Struct_Obj_Entry *,
|
||||
void (*)(void), struct ps_strings *) __dead2;
|
||||
|
||||
/* The entry function. */
|
||||
/*
|
||||
* First 5 arguments are specified by the PowerPC SVR4 ABI.
|
||||
* The last argument, ps_strings, is a BSD extension.
|
||||
*/
|
||||
/* ARGSUSED */
|
||||
void
|
||||
_start(int argc, char **argv, char **env,
|
||||
const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void),
|
||||
struct ps_strings *ps_strings)
|
||||
{
|
||||
if (ps_strings != (struct ps_strings *)0)
|
||||
__ps_strings = ps_strings;
|
||||
|
||||
#ifdef GCRT
|
||||
__libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext);
|
||||
#else
|
||||
__libc_start1(argc, argv, env, cleanup, main);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GCRT
|
||||
__asm__(".text");
|
||||
__asm__("eprol:");
|
||||
__asm__(".previous");
|
||||
#endif
|
||||
|
||||
#ifndef PIC
|
||||
__asm__(".text\n"
|
||||
"\t.global _GLOBAL_OFFSET_TABLE_\n"
|
||||
"\t.reloc 0, R_PPC_NONE, _GLOBAL_OFFSET_TABLE_");
|
||||
#endif
|
||||
189
lib/libc/freebsd/lib/csu/powerpc/crtsavres.S
vendored
Normal file
189
lib/libc/freebsd/lib/csu/powerpc/crtsavres.S
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2019 Justin Hibbits
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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>
|
||||
.text
|
||||
|
||||
/*
|
||||
* The PowerPC ABI spec requires the following save/restore functions to be
|
||||
* provided:
|
||||
*
|
||||
* _savefpr_N
|
||||
* _restfpr_N
|
||||
* _restfpr_N_x
|
||||
* _savegpr_N
|
||||
* _restgpr_N
|
||||
* _restgpr_N_x
|
||||
*
|
||||
* With N ranging from 14 to 31, to save the nonvolatile registers.
|
||||
*/
|
||||
|
||||
#define _CRTENTRY(name) \
|
||||
.text; \
|
||||
.globl name; \
|
||||
.type name,@function; \
|
||||
name:
|
||||
|
||||
#define SAVEFPR(r) _CRTENTRY(__CONCAT(_savefpr_,r)) \
|
||||
stfd r,(-256 + r * 8)(11)
|
||||
|
||||
SAVEFPR(14)
|
||||
SAVEFPR(15)
|
||||
SAVEFPR(16)
|
||||
SAVEFPR(17)
|
||||
SAVEFPR(18)
|
||||
SAVEFPR(19)
|
||||
SAVEFPR(20)
|
||||
SAVEFPR(21)
|
||||
SAVEFPR(22)
|
||||
SAVEFPR(23)
|
||||
SAVEFPR(24)
|
||||
SAVEFPR(25)
|
||||
SAVEFPR(26)
|
||||
SAVEFPR(27)
|
||||
SAVEFPR(28)
|
||||
SAVEFPR(29)
|
||||
SAVEFPR(30)
|
||||
SAVEFPR(31)
|
||||
blr
|
||||
|
||||
#define RESTFPR(r) _CRTENTRY(__CONCAT(_restfpr_,r)) \
|
||||
lfd r,(-256 + r * 8)(11)
|
||||
|
||||
RESTFPR(14)
|
||||
RESTFPR(15)
|
||||
RESTFPR(16)
|
||||
RESTFPR(17)
|
||||
RESTFPR(18)
|
||||
RESTFPR(19)
|
||||
RESTFPR(20)
|
||||
RESTFPR(21)
|
||||
RESTFPR(22)
|
||||
RESTFPR(23)
|
||||
RESTFPR(24)
|
||||
RESTFPR(25)
|
||||
RESTFPR(26)
|
||||
RESTFPR(27)
|
||||
RESTFPR(28)
|
||||
RESTFPR(29)
|
||||
RESTFPR(30)
|
||||
RESTFPR(31)
|
||||
blr
|
||||
|
||||
#define SAVEGPR(r) _CRTENTRY(__CONCAT(_savegpr_,r)) \
|
||||
stw r,(-128 + r * 4)(11)
|
||||
|
||||
SAVEGPR(14)
|
||||
SAVEGPR(15)
|
||||
SAVEGPR(16)
|
||||
SAVEGPR(17)
|
||||
SAVEGPR(18)
|
||||
SAVEGPR(19)
|
||||
SAVEGPR(20)
|
||||
SAVEGPR(21)
|
||||
SAVEGPR(22)
|
||||
SAVEGPR(23)
|
||||
SAVEGPR(24)
|
||||
SAVEGPR(25)
|
||||
SAVEGPR(26)
|
||||
SAVEGPR(27)
|
||||
SAVEGPR(28)
|
||||
SAVEGPR(29)
|
||||
SAVEGPR(30)
|
||||
SAVEGPR(31)
|
||||
blr
|
||||
|
||||
#define RESTGPR(r) _CRTENTRY(__CONCAT(_restgpr_,r)) \
|
||||
lwz r,(-128 + r*4)(11)
|
||||
|
||||
RESTGPR(14)
|
||||
RESTGPR(15)
|
||||
RESTGPR(16)
|
||||
RESTGPR(17)
|
||||
RESTGPR(18)
|
||||
RESTGPR(19)
|
||||
RESTGPR(20)
|
||||
RESTGPR(21)
|
||||
RESTGPR(22)
|
||||
RESTGPR(23)
|
||||
RESTGPR(24)
|
||||
RESTGPR(25)
|
||||
RESTGPR(26)
|
||||
RESTGPR(27)
|
||||
RESTGPR(28)
|
||||
RESTGPR(29)
|
||||
RESTGPR(30)
|
||||
RESTGPR(31)
|
||||
blr
|
||||
|
||||
#define RESTFPR_X(r) _CRTENTRY(__CONCAT(__CONCAT(_restfpr_,r),_x)) \
|
||||
lfd r,(-256 + r * 8)(11)
|
||||
|
||||
RESTFPR_X(14)
|
||||
RESTFPR_X(15)
|
||||
RESTFPR_X(16)
|
||||
RESTFPR_X(17)
|
||||
RESTFPR_X(18)
|
||||
RESTFPR_X(19)
|
||||
RESTFPR_X(20)
|
||||
RESTFPR_X(21)
|
||||
RESTFPR_X(22)
|
||||
RESTFPR_X(23)
|
||||
RESTFPR_X(24)
|
||||
RESTFPR_X(25)
|
||||
RESTFPR_X(26)
|
||||
RESTFPR_X(27)
|
||||
RESTFPR_X(28)
|
||||
RESTFPR_X(29)
|
||||
RESTFPR_X(30)
|
||||
RESTFPR_X(31)
|
||||
lwz 0,4(11)
|
||||
mtlr 0
|
||||
mr 1,11
|
||||
blr
|
||||
|
||||
#define RESTGPR_X(r) _CRTENTRY(__CONCAT(__CONCAT(_restgpr_,r),_x)) \
|
||||
lwz r,(-128 + r * 4)(11)
|
||||
|
||||
RESTGPR_X(14)
|
||||
RESTGPR_X(15)
|
||||
RESTGPR_X(16)
|
||||
RESTGPR_X(17)
|
||||
RESTGPR_X(18)
|
||||
RESTGPR_X(19)
|
||||
RESTGPR_X(20)
|
||||
RESTGPR_X(21)
|
||||
RESTGPR_X(22)
|
||||
RESTGPR_X(23)
|
||||
RESTGPR_X(24)
|
||||
RESTGPR_X(25)
|
||||
RESTGPR_X(26)
|
||||
RESTGPR_X(27)
|
||||
RESTGPR_X(28)
|
||||
RESTGPR_X(29)
|
||||
RESTGPR_X(30)
|
||||
RESTGPR_X(31)
|
||||
lwz 0,4(11)
|
||||
mtlr 0
|
||||
mr 1,11
|
||||
blr
|
||||
31
lib/libc/freebsd/lib/csu/powerpc64/crt.h
vendored
Normal file
31
lib/libc/freebsd/lib/csu/powerpc64/crt.h
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-1-Clause
|
||||
*
|
||||
* Copyright 2018 Andrew Turner
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*/
|
||||
|
||||
#ifndef _CRT_H_
|
||||
#define _CRT_H_
|
||||
|
||||
/* zig patch: no HAVE_CTORS */
|
||||
#define CTORS_CONSTRUCTORS
|
||||
#define INIT_CALL_SEQ(func) "bl " __STRING(func) "; nop"
|
||||
|
||||
#endif
|
||||
83
lib/libc/freebsd/lib/csu/powerpc64/crt1_c.c
vendored
Normal file
83
lib/libc/freebsd/lib/csu/powerpc64/crt1_c.c
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-4-Clause
|
||||
*
|
||||
* Copyright 2001 David E. O'Brien.
|
||||
* All rights reserved.
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 1997 Jason R. Thorpe.
|
||||
* Copyright (c) 1995 Christopher G. Demetriou
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed for the
|
||||
* FreeBSD Project. See https://www.freebsd.org/ for
|
||||
* information about FreeBSD.
|
||||
* This product includes software developed for the
|
||||
* NetBSD Project. See http://www.netbsd.org/ for
|
||||
* information about NetBSD.
|
||||
* 4. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/elf.h>
|
||||
|
||||
#include "libc_private.h"
|
||||
#include "csu_common.h"
|
||||
|
||||
struct Struct_Obj_Entry;
|
||||
struct ps_strings;
|
||||
|
||||
void _start(int, char **, char **, const struct Struct_Obj_Entry *,
|
||||
void (*)(void), struct ps_strings *) __dead2;
|
||||
|
||||
struct ps_strings *__ps_strings;
|
||||
|
||||
/* The entry function. */
|
||||
/*
|
||||
* First 5 arguments are specified by the PowerPC SVR4 ABI.
|
||||
* The last argument, ps_strings, is a BSD extension.
|
||||
*/
|
||||
void
|
||||
_start(int argc, char **argv, char **env,
|
||||
const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void),
|
||||
struct ps_strings *ps_strings)
|
||||
{
|
||||
if (ps_strings != (struct ps_strings *)0)
|
||||
__ps_strings = ps_strings;
|
||||
|
||||
#ifdef GCRT
|
||||
__libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext);
|
||||
#else
|
||||
__libc_start1(argc, argv, env, cleanup, main);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef GCRT
|
||||
__asm__(".text");
|
||||
__asm__("eprol:");
|
||||
__asm__(".previous");
|
||||
#endif
|
||||
8
lib/libc/freebsd/lib/csu/riscv/crt.h
vendored
Normal file
8
lib/libc/freebsd/lib/csu/riscv/crt.h
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
#ifndef _CRT_H_
|
||||
#define _CRT_H_
|
||||
|
||||
/* zig patch: no HAVE_CTORS */
|
||||
#define INIT_CALL_SEQ(func) "call " __STRING(func)
|
||||
|
||||
#endif
|
||||
51
lib/libc/freebsd/lib/csu/riscv/crt1_c.c
vendored
Normal file
51
lib/libc/freebsd/lib/csu/riscv/crt1_c.c
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* Copyright (c) 2015-2017 Ruslan Bukin <br@bsdpad.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Portions of this software were developed by SRI International and the
|
||||
* University of Cambridge Computer Laboratory under DARPA/AFRL contract
|
||||
* FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
|
||||
*
|
||||
* Portions of this software were developed by the University of Cambridge
|
||||
* Computer Laboratory as part of the CTSRD Project, with support from the
|
||||
* UK Higher Education Innovation Fund (HEIF).
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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 <sys/cdefs.h>
|
||||
#include "libc_private.h"
|
||||
#include "csu_common.h"
|
||||
|
||||
void __start(int argc, char **argv, char **env, void (*cleanup)(void)) __dead2;
|
||||
|
||||
void
|
||||
__start(int argc, char **argv, char **env, void (*cleanup)(void))
|
||||
{
|
||||
#ifdef GCRT
|
||||
__libc_start1_gcrt(argc, argv, env, cleanup, main, &eprol, &etext);
|
||||
__asm__("eprol:");
|
||||
#else
|
||||
__libc_start1(argc, argv, env, cleanup, main);
|
||||
#endif
|
||||
}
|
||||
51
lib/libc/freebsd/lib/csu/riscv/crt1_s.S
vendored
Normal file
51
lib/libc/freebsd/lib/csu/riscv/crt1_s.S
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
/* LINTLIBRARY */
|
||||
/*-
|
||||
* Copyright 1996-1998 John D. Polstra.
|
||||
* Copyright (c) 2015-2017 Ruslan Bukin <br@bsdpad.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Portions of this software were developed by SRI International and the
|
||||
* University of Cambridge Computer Laboratory under DARPA/AFRL contract
|
||||
* FA8750-10-C-0237 ("CTSRD"), as part of the DARPA CRASH research programme.
|
||||
*
|
||||
* Portions of this software were developed by the University of Cambridge
|
||||
* Computer Laboratory as part of the CTSRD Project, with support from the
|
||||
* UK Higher Education Innovation Fund (HEIF).
|
||||
*
|
||||
* 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 AUTHOR ``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 AUTHOR 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>
|
||||
ENTRY(_start)
|
||||
mv a3, a2 # cleanup
|
||||
addi a1, a0, 8 # get argv
|
||||
ld a0, 0(a0) # load argc
|
||||
slli t0, a0, 3 # mult by arg size
|
||||
add a2, a1, t0 # env is after argv
|
||||
addi a2, a2, 8 # argv is null terminated
|
||||
.option push
|
||||
.option norelax
|
||||
lla gp, __global_pointer$
|
||||
.option pop
|
||||
call __start
|
||||
END(_start)
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
450
lib/libc/freebsd/lib/libc/include/libc_private.h
vendored
Normal file
450
lib/libc/freebsd/lib/libc/include/libc_private.h
vendored
Normal file
@ -0,0 +1,450 @@
|
||||
/*-
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the author nor the names of any co-contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL 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 REGENTS 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.
|
||||
*
|
||||
* Private definitions for libc, libc_r and libpthread.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LIBC_PRIVATE_H_
|
||||
#define _LIBC_PRIVATE_H_
|
||||
#include <sys/_types.h>
|
||||
#include <sys/_pthreadtypes.h>
|
||||
|
||||
extern char **environ;
|
||||
|
||||
/*
|
||||
* The kernel doesn't expose PID_MAX to the user space. Save it here
|
||||
* to allow to run a newer world on a pre-1400079 kernel.
|
||||
*/
|
||||
#define _PID_MAX 99999
|
||||
|
||||
/*
|
||||
* This global flag is non-zero when a process has created one
|
||||
* or more threads. It is used to avoid calling locking functions
|
||||
* when they are not required.
|
||||
*/
|
||||
#ifndef __LIBC_ISTHREADED_DECLARED
|
||||
#define __LIBC_ISTHREADED_DECLARED
|
||||
extern int __isthreaded;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Elf_Auxinfo *__elf_aux_vector, the pointer to the ELF aux vector
|
||||
* provided by kernel. Either set for us by rtld, or found at runtime
|
||||
* on stack for static binaries.
|
||||
*
|
||||
* Type is void to avoid polluting whole libc with ELF types.
|
||||
*/
|
||||
extern void *__elf_aux_vector;
|
||||
|
||||
/*
|
||||
* libc should use libc_dlopen internally, which respects a global
|
||||
* flag where loading of new shared objects can be restricted.
|
||||
*/
|
||||
void *libc_dlopen(const char *, int);
|
||||
|
||||
/*
|
||||
* For dynamic linker.
|
||||
*/
|
||||
void _rtld_error(const char *fmt, ...);
|
||||
|
||||
/*
|
||||
* File lock contention is difficult to diagnose without knowing
|
||||
* where locks were set. Allow a debug library to be built which
|
||||
* records the source file and line number of each lock call.
|
||||
*/
|
||||
#ifdef _FLOCK_DEBUG
|
||||
#define _FLOCKFILE(x) _flockfile_debug(x, __FILE__, __LINE__)
|
||||
#else
|
||||
#define _FLOCKFILE(x) _flockfile(x)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Macros for locking and unlocking FILEs. These test if the
|
||||
* process is threaded to avoid locking when not required.
|
||||
*/
|
||||
#define FLOCKFILE(fp) if (__isthreaded) _FLOCKFILE(fp)
|
||||
#define FUNLOCKFILE(fp) if (__isthreaded) _funlockfile(fp)
|
||||
|
||||
struct _spinlock;
|
||||
extern struct _spinlock __stdio_thread_lock __hidden;
|
||||
#define STDIO_THREAD_LOCK() \
|
||||
do { \
|
||||
if (__isthreaded) \
|
||||
_SPINLOCK(&__stdio_thread_lock); \
|
||||
} while (0)
|
||||
#define STDIO_THREAD_UNLOCK() \
|
||||
do { \
|
||||
if (__isthreaded) \
|
||||
_SPINUNLOCK(&__stdio_thread_lock); \
|
||||
} while (0)
|
||||
|
||||
void __libc_spinlock_stub(struct _spinlock *);
|
||||
void __libc_spinunlock_stub(struct _spinlock *);
|
||||
|
||||
/*
|
||||
* Indexes into the pthread jump table.
|
||||
*
|
||||
* Warning! If you change this type, you must also change the threads
|
||||
* libraries that reference it (libc_r, libpthread).
|
||||
*/
|
||||
typedef enum {
|
||||
PJT_ATFORK,
|
||||
PJT_ATTR_DESTROY,
|
||||
PJT_ATTR_GETDETACHSTATE,
|
||||
PJT_ATTR_GETGUARDSIZE,
|
||||
PJT_ATTR_GETINHERITSCHED,
|
||||
PJT_ATTR_GETSCHEDPARAM,
|
||||
PJT_ATTR_GETSCHEDPOLICY,
|
||||
PJT_ATTR_GETSCOPE,
|
||||
PJT_ATTR_GETSTACKADDR,
|
||||
PJT_ATTR_GETSTACKSIZE,
|
||||
PJT_ATTR_INIT,
|
||||
PJT_ATTR_SETDETACHSTATE,
|
||||
PJT_ATTR_SETGUARDSIZE,
|
||||
PJT_ATTR_SETINHERITSCHED,
|
||||
PJT_ATTR_SETSCHEDPARAM,
|
||||
PJT_ATTR_SETSCHEDPOLICY,
|
||||
PJT_ATTR_SETSCOPE,
|
||||
PJT_ATTR_SETSTACKADDR,
|
||||
PJT_ATTR_SETSTACKSIZE,
|
||||
PJT_CANCEL,
|
||||
PJT_CLEANUP_POP,
|
||||
PJT_CLEANUP_PUSH,
|
||||
PJT_COND_BROADCAST,
|
||||
PJT_COND_DESTROY,
|
||||
PJT_COND_INIT,
|
||||
PJT_COND_SIGNAL,
|
||||
PJT_COND_TIMEDWAIT,
|
||||
PJT_COND_WAIT,
|
||||
PJT_DETACH,
|
||||
PJT_EQUAL,
|
||||
PJT_EXIT,
|
||||
PJT_GETSPECIFIC,
|
||||
PJT_JOIN,
|
||||
PJT_KEY_CREATE,
|
||||
PJT_KEY_DELETE,
|
||||
PJT_KILL,
|
||||
PJT_MAIN_NP,
|
||||
PJT_MUTEXATTR_DESTROY,
|
||||
PJT_MUTEXATTR_INIT,
|
||||
PJT_MUTEXATTR_SETTYPE,
|
||||
PJT_MUTEX_DESTROY,
|
||||
PJT_MUTEX_INIT,
|
||||
PJT_MUTEX_LOCK,
|
||||
PJT_MUTEX_TRYLOCK,
|
||||
PJT_MUTEX_UNLOCK,
|
||||
PJT_ONCE,
|
||||
PJT_RWLOCK_DESTROY,
|
||||
PJT_RWLOCK_INIT,
|
||||
PJT_RWLOCK_RDLOCK,
|
||||
PJT_RWLOCK_TRYRDLOCK,
|
||||
PJT_RWLOCK_TRYWRLOCK,
|
||||
PJT_RWLOCK_UNLOCK,
|
||||
PJT_RWLOCK_WRLOCK,
|
||||
PJT_SELF,
|
||||
PJT_SETCANCELSTATE,
|
||||
PJT_SETCANCELTYPE,
|
||||
PJT_SETSPECIFIC,
|
||||
PJT_SIGMASK,
|
||||
PJT_TESTCANCEL,
|
||||
PJT_CLEANUP_POP_IMP,
|
||||
PJT_CLEANUP_PUSH_IMP,
|
||||
PJT_CANCEL_ENTER,
|
||||
PJT_CANCEL_LEAVE,
|
||||
PJT_MUTEX_CONSISTENT,
|
||||
PJT_MUTEXATTR_GETROBUST,
|
||||
PJT_MUTEXATTR_SETROBUST,
|
||||
PJT_GETTHREADID_NP,
|
||||
PJT_ATTR_GET_NP,
|
||||
PJT_GETNAME_NP,
|
||||
PJT_MAX
|
||||
} pjt_index_t;
|
||||
|
||||
typedef int (*pthread_func_t)(void);
|
||||
typedef pthread_func_t pthread_func_entry_t[2];
|
||||
|
||||
extern pthread_func_entry_t __thr_jtable[];
|
||||
|
||||
void __set_error_selector(int *(*arg)(void));
|
||||
int _pthread_mutex_init_calloc_cb_stub(pthread_mutex_t *mutex,
|
||||
void *(calloc_cb)(__size_t, __size_t));
|
||||
|
||||
typedef int (*interpos_func_t)(void);
|
||||
interpos_func_t *__libc_interposing_slot(int interposno);
|
||||
extern interpos_func_t __libc_interposing[] __hidden;
|
||||
|
||||
enum {
|
||||
INTERPOS_accept,
|
||||
INTERPOS_accept4,
|
||||
INTERPOS_aio_suspend,
|
||||
INTERPOS_close,
|
||||
INTERPOS_connect,
|
||||
INTERPOS_fcntl,
|
||||
INTERPOS_fsync,
|
||||
INTERPOS_fork,
|
||||
INTERPOS_msync,
|
||||
INTERPOS_nanosleep,
|
||||
INTERPOS_openat,
|
||||
INTERPOS_poll,
|
||||
INTERPOS_pselect,
|
||||
INTERPOS_recvfrom,
|
||||
INTERPOS_recvmsg,
|
||||
INTERPOS_select,
|
||||
INTERPOS_sendmsg,
|
||||
INTERPOS_sendto,
|
||||
INTERPOS_setcontext,
|
||||
INTERPOS_sigaction,
|
||||
INTERPOS_sigprocmask,
|
||||
INTERPOS_sigsuspend,
|
||||
INTERPOS_sigwait,
|
||||
INTERPOS_sigtimedwait,
|
||||
INTERPOS_sigwaitinfo,
|
||||
INTERPOS_swapcontext,
|
||||
INTERPOS_system,
|
||||
INTERPOS_tcdrain,
|
||||
INTERPOS_read,
|
||||
INTERPOS_readv,
|
||||
INTERPOS_wait4,
|
||||
INTERPOS_write,
|
||||
INTERPOS_writev,
|
||||
INTERPOS__pthread_mutex_init_calloc_cb,
|
||||
INTERPOS_spinlock,
|
||||
INTERPOS_spinunlock,
|
||||
INTERPOS_kevent,
|
||||
INTERPOS_wait6,
|
||||
INTERPOS_ppoll,
|
||||
INTERPOS_map_stacks_exec,
|
||||
INTERPOS_fdatasync,
|
||||
INTERPOS_clock_nanosleep,
|
||||
INTERPOS_distribute_static_tls,
|
||||
INTERPOS_pdfork,
|
||||
INTERPOS_MAX
|
||||
};
|
||||
|
||||
/*
|
||||
* yplib internal interfaces
|
||||
*/
|
||||
#ifdef YP
|
||||
int _yp_check(char **);
|
||||
#endif
|
||||
|
||||
void __libc_start1(int, char *[], char *[],
|
||||
void (*)(void), int (*)(int, char *[], char *[])) __dead2;
|
||||
void __libc_start1_gcrt(int, char *[], char *[],
|
||||
void (*)(void), int (*)(int, char *[], char *[]),
|
||||
int *, int *) __dead2;
|
||||
|
||||
/*
|
||||
* Initialise TLS for static programs
|
||||
*/
|
||||
void _init_tls(void);
|
||||
|
||||
/*
|
||||
* Provides pthread_once()-like functionality for both single-threaded
|
||||
* and multi-threaded applications.
|
||||
*/
|
||||
int _once(pthread_once_t *, void (*)(void));
|
||||
|
||||
/*
|
||||
* This is a pointer in the C run-time startup code. It is used
|
||||
* by getprogname() and setprogname().
|
||||
*/
|
||||
extern const char *__progname;
|
||||
|
||||
/*
|
||||
* This function is used by the threading libraries to notify malloc that a
|
||||
* thread is exiting.
|
||||
*/
|
||||
void _malloc_thread_cleanup(void);
|
||||
|
||||
/*
|
||||
* This function is used by the threading libraries to notify libc that a
|
||||
* thread is exiting, so its thread-local dtors should be called.
|
||||
*/
|
||||
void __cxa_thread_call_dtors(void);
|
||||
int __cxa_thread_atexit_hidden(void (*dtor_func)(void *), void *obj,
|
||||
void *dso_symbol) __hidden;
|
||||
|
||||
/*
|
||||
* These functions are used by the threading libraries in order to protect
|
||||
* malloc across fork().
|
||||
*/
|
||||
void _malloc_prefork(void);
|
||||
void _malloc_postfork(void);
|
||||
|
||||
void _malloc_first_thread(void);
|
||||
|
||||
/*
|
||||
* Function to clean up streams, called from abort() and exit().
|
||||
*/
|
||||
extern void (*__cleanup)(void) __hidden;
|
||||
|
||||
/*
|
||||
* Get kern.osreldate to detect ABI revisions. Explicitly
|
||||
* ignores value of $OSVERSION and caches result.
|
||||
*/
|
||||
int __getosreldate(void);
|
||||
#include <sys/_types.h>
|
||||
#include <sys/_sigset.h>
|
||||
|
||||
struct aiocb;
|
||||
struct fd_set;
|
||||
struct iovec;
|
||||
struct kevent;
|
||||
struct msghdr;
|
||||
struct pollfd;
|
||||
struct rusage;
|
||||
struct sigaction;
|
||||
struct sockaddr;
|
||||
struct stat;
|
||||
struct statfs;
|
||||
struct timespec;
|
||||
struct timeval;
|
||||
struct timezone;
|
||||
struct __siginfo;
|
||||
struct __ucontext;
|
||||
struct __wrusage;
|
||||
enum idtype;
|
||||
int __sys_aio_suspend(const struct aiocb * const[], int,
|
||||
const struct timespec *);
|
||||
int __sys_accept(int, struct sockaddr *, __socklen_t *);
|
||||
int __sys_accept4(int, struct sockaddr *, __socklen_t *, int);
|
||||
int __sys_clock_gettime(__clockid_t, struct timespec *ts);
|
||||
int __sys_clock_nanosleep(__clockid_t, int,
|
||||
const struct timespec *, struct timespec *);
|
||||
int __sys_close(int);
|
||||
int __sys_close_range(unsigned, unsigned, int);
|
||||
int __sys_connect(int, const struct sockaddr *, __socklen_t);
|
||||
int __sys_fcntl(int, int, ...);
|
||||
int __sys_fdatasync(int);
|
||||
int __sys_fstat(int fd, struct stat *);
|
||||
int __sys_fstatfs(int fd, struct statfs *);
|
||||
int __sys_fstatat(int, const char *, struct stat *, int);
|
||||
int __sys_fsync(int);
|
||||
__pid_t __sys_fork(void);
|
||||
int __sys_ftruncate(int, __off_t);
|
||||
__ssize_t __sys_getdirentries(int, char *, __size_t, __off_t *);
|
||||
int __sys_getfsstat(struct statfs *, long, int);
|
||||
int __sys_gettimeofday(struct timeval *, struct timezone *);
|
||||
int __sys_kevent(int, const struct kevent *, int, struct kevent *,
|
||||
int, const struct timespec *);
|
||||
__off_t __sys_lseek(int, __off_t, int);
|
||||
void *__sys_mmap(void *, __size_t, int, int, int, __off_t);
|
||||
int __sys_msync(void *, __size_t, int);
|
||||
int __sys_nanosleep(const struct timespec *, struct timespec *);
|
||||
int __sys_open(const char *, int, ...);
|
||||
int __sys_openat(int, const char *, int, ...);
|
||||
int __sys_pdfork(int *, int);
|
||||
int __sys_pselect(int, struct fd_set *, struct fd_set *,
|
||||
struct fd_set *, const struct timespec *,
|
||||
const __sigset_t *);
|
||||
int __sys_ptrace(int, __pid_t, char *, int);
|
||||
int __sys_poll(struct pollfd *, unsigned, int);
|
||||
int __sys_ppoll(struct pollfd *, unsigned, const struct timespec *,
|
||||
const __sigset_t *);
|
||||
__ssize_t __sys_pread(int, void *, __size_t, __off_t);
|
||||
__ssize_t __sys_pwrite(int, const void *, __size_t, __off_t);
|
||||
__ssize_t __sys_read(int, void *, __size_t);
|
||||
__ssize_t __sys_readv(int, const struct iovec *, int);
|
||||
__ssize_t __sys_recv(int, void *, __size_t, int);
|
||||
__ssize_t __sys_recvfrom(int, void *, __size_t, int, struct sockaddr *,
|
||||
__socklen_t *);
|
||||
__ssize_t __sys_recvmsg(int, struct msghdr *, int);
|
||||
int __sys_sched_getcpu(void);
|
||||
int __sys_select(int, struct fd_set *, struct fd_set *,
|
||||
struct fd_set *, struct timeval *);
|
||||
__ssize_t __sys_sendmsg(int, const struct msghdr *, int);
|
||||
__ssize_t __sys_sendto(int, const void *, __size_t, int,
|
||||
const struct sockaddr *, __socklen_t);
|
||||
int __sys_setcontext(const struct __ucontext *);
|
||||
int __sys_sigaction(int, const struct sigaction *,
|
||||
struct sigaction *);
|
||||
int __sys_sigprocmask(int, const __sigset_t *, __sigset_t *);
|
||||
int __sys_sigsuspend(const __sigset_t *);
|
||||
int __sys_sigtimedwait(const __sigset_t *, struct __siginfo *,
|
||||
const struct timespec *);
|
||||
int __sys_sigwait(const __sigset_t *, int *);
|
||||
int __sys_sigwaitinfo(const __sigset_t *, struct __siginfo *);
|
||||
int __sys___specialfd(int, const void *, __size_t);
|
||||
int __sys_statfs(const char *, struct statfs *);
|
||||
int __sys_swapcontext(struct __ucontext *,
|
||||
const struct __ucontext *);
|
||||
int __sys_thr_kill(long, int);
|
||||
int __sys_thr_self(long *);
|
||||
int __sys_truncate(const char *, __off_t);
|
||||
__pid_t __sys_wait4(__pid_t, int *, int, struct rusage *);
|
||||
__pid_t __sys_wait6(enum idtype, __id_t, int *, int,
|
||||
struct __wrusage *, struct __siginfo *);
|
||||
__ssize_t __sys_write(int, const void *, __size_t);
|
||||
__ssize_t __sys_writev(int, const struct iovec *, int);
|
||||
int __sys_shm_open2(const char *, int, __mode_t, int, const char *);
|
||||
|
||||
int __libc_sigaction(int, const struct sigaction *,
|
||||
struct sigaction *) __hidden;
|
||||
int __libc_sigprocmask(int, const __sigset_t *, __sigset_t *)
|
||||
__hidden;
|
||||
int __libc_sigsuspend(const __sigset_t *) __hidden;
|
||||
int __libc_sigwait(const __sigset_t * __restrict,
|
||||
int * restrict sig);
|
||||
int __libc_system(const char *);
|
||||
int __libc_tcdrain(int);
|
||||
int __fcntl_compat(int fd, int cmd, ...);
|
||||
|
||||
int __sys_futimens(int fd, const struct timespec *times) __hidden;
|
||||
int __sys_utimensat(int fd, const char *path,
|
||||
const struct timespec *times, int flag) __hidden;
|
||||
|
||||
int _elf_aux_info(int aux, void *buf, int buflen);
|
||||
struct dl_phdr_info;
|
||||
int __elf_phdr_match_addr(struct dl_phdr_info *, void *);
|
||||
void __init_elf_aux_vector(void);
|
||||
void __libc_map_stacks_exec(void);
|
||||
void __libc_distribute_static_tls(__size_t, void *, __size_t, __size_t);
|
||||
__uintptr_t __libc_static_tls_base(__size_t);
|
||||
|
||||
void _pthread_cancel_enter(int);
|
||||
void _pthread_cancel_leave(int);
|
||||
|
||||
struct _pthread_cleanup_info;
|
||||
void ___pthread_cleanup_push_imp(void (*)(void *), void *,
|
||||
struct _pthread_cleanup_info *);
|
||||
void ___pthread_cleanup_pop_imp(int);
|
||||
|
||||
void __throw_constraint_handler_s(const char * restrict msg, int error);
|
||||
|
||||
struct __nl_cat_d;
|
||||
struct _xlocale;
|
||||
struct __nl_cat_d *__catopen_l(const char *name, int type,
|
||||
struct _xlocale *locale);
|
||||
int __strerror_rl(int errnum, char *strerrbuf, __size_t buflen,
|
||||
struct _xlocale *locale);
|
||||
|
||||
#endif /* _LIBC_PRIVATE_H_ */
|
||||
Loading…
x
Reference in New Issue
Block a user