mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
update musl source files to v1.2.5
adds loongarch64 and riscv32
This commit is contained in:
parent
85a46ee520
commit
0098e650fb
137 changed files with 2893 additions and 99 deletions
5
lib/libc/musl/arch/aarch64/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/aarch64/bits/syscall.h.in
vendored
|
|
@ -299,4 +299,9 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
5
lib/libc/musl/arch/arm/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/arm/bits/syscall.h.in
vendored
|
|
@ -399,6 +399,11 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
#define __ARM_NR_breakpoint 0x0f0001
|
||||
#define __ARM_NR_cacheflush 0x0f0002
|
||||
|
|
|
|||
2
lib/libc/musl/arch/arm/reloc.h
vendored
2
lib/libc/musl/arch/arm/reloc.h
vendored
|
|
@ -26,7 +26,7 @@
|
|||
#define REL_TPOFF R_ARM_TLS_TPOFF32
|
||||
#define REL_TLSDESC R_ARM_TLS_DESC
|
||||
|
||||
#define TLSDESC_BACKWARDS
|
||||
#define TLSDESC_BACKWARDS 1
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
|
||||
|
|
|
|||
6
lib/libc/musl/arch/i386/bits/syscall.h.in
vendored
6
lib/libc/musl/arch/i386/bits/syscall.h.in
vendored
|
|
@ -436,4 +436,10 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_memfd_secret 447
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
53
lib/libc/musl/arch/loongarch64/atomic_arch.h
vendored
Normal file
53
lib/libc/musl/arch/loongarch64/atomic_arch.h
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
#define a_ll a_ll
|
||||
static inline int a_ll(volatile int *p)
|
||||
{
|
||||
int v;
|
||||
__asm__ __volatile__ (
|
||||
"ll.w %0, %1"
|
||||
: "=r"(v)
|
||||
: "ZC"(*p));
|
||||
return v;
|
||||
}
|
||||
|
||||
#define a_sc a_sc
|
||||
static inline int a_sc(volatile int *p, int v)
|
||||
{
|
||||
int r;
|
||||
__asm__ __volatile__ (
|
||||
"sc.w %0, %1"
|
||||
: "=r"(r), "=ZC"(*p)
|
||||
: "0"(v) : "memory");
|
||||
return r;
|
||||
}
|
||||
|
||||
#define a_ll_p a_ll_p
|
||||
static inline void *a_ll_p(volatile void *p)
|
||||
{
|
||||
void *v;
|
||||
__asm__ __volatile__ (
|
||||
"ll.d %0, %1"
|
||||
: "=r"(v)
|
||||
: "ZC"(*(void *volatile *)p));
|
||||
return v;
|
||||
}
|
||||
|
||||
#define a_sc_p a_sc_p
|
||||
static inline int a_sc_p(volatile void *p, void *v)
|
||||
{
|
||||
long r;
|
||||
__asm__ __volatile__ (
|
||||
"sc.d %0, %1"
|
||||
: "=r"(r), "=ZC"(*(void *volatile *)p)
|
||||
: "0"(v)
|
||||
: "memory");
|
||||
return r;
|
||||
}
|
||||
|
||||
#define a_barrier a_barrier
|
||||
static inline void a_barrier()
|
||||
{
|
||||
__asm__ __volatile__ ("dbar 0" : : : "memory");
|
||||
}
|
||||
|
||||
#define a_pre_llsc a_barrier
|
||||
#define a_post_llsc a_barrier
|
||||
18
lib/libc/musl/arch/loongarch64/bits/alltypes.h.in
vendored
Normal file
18
lib/libc/musl/arch/loongarch64/bits/alltypes.h.in
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#define _Addr long
|
||||
#define _Int64 long
|
||||
#define _Reg long
|
||||
|
||||
#define __BYTE_ORDER 1234
|
||||
#define __LONG_MAX 0x7fffffffffffffffL
|
||||
|
||||
#ifndef __cplusplus
|
||||
TYPEDEF int wchar_t;
|
||||
#endif
|
||||
|
||||
TYPEDEF float float_t;
|
||||
TYPEDEF double double_t;
|
||||
|
||||
TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
|
||||
|
||||
TYPEDEF unsigned nlink_t;
|
||||
TYPEDEF int blksize_t;
|
||||
20
lib/libc/musl/arch/loongarch64/bits/fenv.h
vendored
Normal file
20
lib/libc/musl/arch/loongarch64/bits/fenv.h
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#define FE_INEXACT 0x010000
|
||||
#define FE_UNDERFLOW 0x020000
|
||||
#define FE_OVERFLOW 0x040000
|
||||
#define FE_DIVBYZERO 0x080000
|
||||
#define FE_INVALID 0x100000
|
||||
|
||||
#define FE_ALL_EXCEPT 0x1F0000
|
||||
|
||||
#define FE_TONEAREST 0x000
|
||||
#define FE_TOWARDZERO 0x100
|
||||
#define FE_UPWARD 0x200
|
||||
#define FE_DOWNWARD 0x300
|
||||
|
||||
typedef unsigned fexcept_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned __cw;
|
||||
} fenv_t;
|
||||
|
||||
#define FE_DFL_ENV ((const fenv_t *) -1)
|
||||
16
lib/libc/musl/arch/loongarch64/bits/float.h
vendored
Normal file
16
lib/libc/musl/arch/loongarch64/bits/float.h
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#define FLT_EVAL_METHOD 0
|
||||
|
||||
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
|
||||
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
|
||||
#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L
|
||||
#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L
|
||||
|
||||
#define LDBL_MANT_DIG 113
|
||||
#define LDBL_MIN_EXP (-16381)
|
||||
#define LDBL_MAX_EXP 16384
|
||||
|
||||
#define LDBL_DIG 33
|
||||
#define LDBL_MIN_10_EXP (-4931)
|
||||
#define LDBL_MAX_10_EXP 4932
|
||||
|
||||
#define DECIMAL_DIG 36
|
||||
2
lib/libc/musl/arch/loongarch64/bits/posix.h
vendored
Normal file
2
lib/libc/musl/arch/loongarch64/bits/posix.h
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#define _POSIX_V6_LP64_OFF64 1
|
||||
#define _POSIX_V7_LP64_OFF64 1
|
||||
2
lib/libc/musl/arch/loongarch64/bits/reg.h
vendored
Normal file
2
lib/libc/musl/arch/loongarch64/bits/reg.h
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#undef __WORDSIZE
|
||||
#define __WORDSIZE 64
|
||||
1
lib/libc/musl/arch/loongarch64/bits/setjmp.h
vendored
Normal file
1
lib/libc/musl/arch/loongarch64/bits/setjmp.h
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
typedef unsigned long __jmp_buf[23];
|
||||
101
lib/libc/musl/arch/loongarch64/bits/signal.h
vendored
Normal file
101
lib/libc/musl/arch/loongarch64/bits/signal.h
vendored
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
||||
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
|
||||
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
#define MINSIGSTKSZ 4096
|
||||
#define SIGSTKSZ 16384
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE)
|
||||
#define LARCH_NGREG 32
|
||||
#define LARCH_REG_RA 1
|
||||
#define LARCH_REG_SP 3
|
||||
#define LARCH_REG_S0 23
|
||||
#define LARCH_REG_S1 24
|
||||
#define LARCH_REG_A0 4
|
||||
#define LARCH_REG_S2 25
|
||||
#define LARCH_REG_NARGS 8
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
typedef unsigned long greg_t, gregset_t[32];
|
||||
|
||||
struct sigcontext {
|
||||
unsigned long sc_pc;
|
||||
unsigned long sc_regs[32];
|
||||
unsigned sc_flags;
|
||||
unsigned long sc_extcontext[] __attribute__((__aligned__(16)));
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
unsigned long __pc;
|
||||
unsigned long __gregs[32];
|
||||
unsigned __flags;
|
||||
unsigned long __extcontext[] __attribute__((__aligned__(16)));
|
||||
} mcontext_t;
|
||||
|
||||
struct sigaltstack {
|
||||
void *ss_sp;
|
||||
int ss_flags;
|
||||
size_t ss_size;
|
||||
};
|
||||
|
||||
typedef struct __ucontext
|
||||
{
|
||||
unsigned long uc_flags;
|
||||
struct __ucontext *uc_link;
|
||||
stack_t uc_stack;
|
||||
sigset_t uc_sigmask;
|
||||
long __uc_pad;
|
||||
mcontext_t uc_mcontext;
|
||||
} ucontext_t;
|
||||
|
||||
#define __uc_flags uc_flags
|
||||
|
||||
#define SA_NOCLDSTOP 1
|
||||
#define SA_NOCLDWAIT 2
|
||||
#define SA_SIGINFO 4
|
||||
#define SA_ONSTACK 0x08000000
|
||||
#define SA_RESTART 0x10000000
|
||||
#define SA_NODEFER 0x40000000
|
||||
#define SA_RESETHAND 0x80000000
|
||||
|
||||
#endif
|
||||
|
||||
#define SIGHUP 1
|
||||
#define SIGINT 2
|
||||
#define SIGQUIT 3
|
||||
#define SIGILL 4
|
||||
#define SIGTRAP 5
|
||||
#define SIGABRT 6
|
||||
#define SIGIOT SIGABRT
|
||||
#define SIGBUS 7
|
||||
#define SIGFPE 8
|
||||
#define SIGKILL 9
|
||||
#define SIGUSR1 10
|
||||
#define SIGSEGV 11
|
||||
#define SIGUSR2 12
|
||||
#define SIGPIPE 13
|
||||
#define SIGALRM 14
|
||||
#define SIGTERM 15
|
||||
#define SIGSTKFLT 16
|
||||
#define SIGCHLD 17
|
||||
#define SIGCONT 18
|
||||
#define SIGSTOP 19
|
||||
#define SIGTSTP 20
|
||||
#define SIGTTIN 21
|
||||
#define SIGTTOU 22
|
||||
#define SIGURG 23
|
||||
#define SIGXCPU 24
|
||||
#define SIGXFSZ 25
|
||||
#define SIGVTALRM 26
|
||||
#define SIGPROF 27
|
||||
#define SIGWINCH 28
|
||||
#define SIGIO 29
|
||||
#define SIGPOLL SIGIO
|
||||
#define SIGPWR 30
|
||||
#define SIGSYS 31
|
||||
#define SIGUNUSED SIGSYS
|
||||
|
||||
#define _NSIG 65
|
||||
18
lib/libc/musl/arch/loongarch64/bits/stat.h
vendored
Normal file
18
lib/libc/musl/arch/loongarch64/bits/stat.h
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
struct stat {
|
||||
dev_t st_dev;
|
||||
ino_t st_ino;
|
||||
mode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
dev_t st_rdev;
|
||||
unsigned long __pad;
|
||||
off_t st_size;
|
||||
blksize_t st_blksize;
|
||||
int __pad2;
|
||||
blkcnt_t st_blocks;
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned __unused[2];
|
||||
};
|
||||
20
lib/libc/musl/arch/loongarch64/bits/stdint.h
vendored
Normal file
20
lib/libc/musl/arch/loongarch64/bits/stdint.h
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
typedef int32_t int_fast16_t;
|
||||
typedef int32_t int_fast32_t;
|
||||
typedef uint32_t uint_fast16_t;
|
||||
typedef uint32_t uint_fast32_t;
|
||||
|
||||
#define INT_FAST16_MIN INT32_MIN
|
||||
#define INT_FAST32_MIN INT32_MIN
|
||||
|
||||
#define INT_FAST16_MAX INT32_MAX
|
||||
#define INT_FAST32_MAX INT32_MAX
|
||||
|
||||
#define UINT_FAST16_MAX UINT32_MAX
|
||||
#define UINT_FAST32_MAX UINT32_MAX
|
||||
|
||||
#define INTPTR_MIN INT64_MIN
|
||||
#define INTPTR_MAX INT64_MAX
|
||||
#define UINTPTR_MAX UINT64_MAX
|
||||
#define PTRDIFF_MIN INT64_MIN
|
||||
#define PTRDIFF_MAX INT64_MAX
|
||||
#define SIZE_MAX UINT64_MAX
|
||||
316
lib/libc/musl/arch/loongarch64/bits/syscall.h.in
vendored
Normal file
316
lib/libc/musl/arch/loongarch64/bits/syscall.h.in
vendored
Normal file
|
|
@ -0,0 +1,316 @@
|
|||
#define __NR_io_setup 0
|
||||
#define __NR_io_destroy 1
|
||||
#define __NR_io_submit 2
|
||||
#define __NR_io_cancel 3
|
||||
#define __NR_io_getevents 4
|
||||
#define __NR_setxattr 5
|
||||
#define __NR_lsetxattr 6
|
||||
#define __NR_fsetxattr 7
|
||||
#define __NR_getxattr 8
|
||||
#define __NR_lgetxattr 9
|
||||
#define __NR_fgetxattr 10
|
||||
#define __NR_listxattr 11
|
||||
#define __NR_llistxattr 12
|
||||
#define __NR_flistxattr 13
|
||||
#define __NR_removexattr 14
|
||||
#define __NR_lremovexattr 15
|
||||
#define __NR_fremovexattr 16
|
||||
#define __NR_getcwd 17
|
||||
#define __NR_lookup_dcookie 18
|
||||
#define __NR_eventfd2 19
|
||||
#define __NR_epoll_create1 20
|
||||
#define __NR_epoll_ctl 21
|
||||
#define __NR_epoll_pwait 22
|
||||
#define __NR_dup 23
|
||||
#define __NR_dup3 24
|
||||
#define __NR3264_fcntl 25
|
||||
#define __NR_inotify_init1 26
|
||||
#define __NR_inotify_add_watch 27
|
||||
#define __NR_inotify_rm_watch 28
|
||||
#define __NR_ioctl 29
|
||||
#define __NR_ioprio_set 30
|
||||
#define __NR_ioprio_get 31
|
||||
#define __NR_flock 32
|
||||
#define __NR_mknodat 33
|
||||
#define __NR_mkdirat 34
|
||||
#define __NR_unlinkat 35
|
||||
#define __NR_symlinkat 36
|
||||
#define __NR_linkat 37
|
||||
#define __NR_umount2 39
|
||||
#define __NR_mount 40
|
||||
#define __NR_pivot_root 41
|
||||
#define __NR_nfsservctl 42
|
||||
#define __NR3264_statfs 43
|
||||
#define __NR3264_fstatfs 44
|
||||
#define __NR3264_truncate 45
|
||||
#define __NR3264_ftruncate 46
|
||||
#define __NR_fallocate 47
|
||||
#define __NR_faccessat 48
|
||||
#define __NR_chdir 49
|
||||
#define __NR_fchdir 50
|
||||
#define __NR_chroot 51
|
||||
#define __NR_fchmod 52
|
||||
#define __NR_fchmodat 53
|
||||
#define __NR_fchownat 54
|
||||
#define __NR_fchown 55
|
||||
#define __NR_openat 56
|
||||
#define __NR_close 57
|
||||
#define __NR_vhangup 58
|
||||
#define __NR_pipe2 59
|
||||
#define __NR_quotactl 60
|
||||
#define __NR_getdents64 61
|
||||
#define __NR3264_lseek 62
|
||||
#define __NR_read 63
|
||||
#define __NR_write 64
|
||||
#define __NR_readv 65
|
||||
#define __NR_writev 66
|
||||
#define __NR_pread64 67
|
||||
#define __NR_pwrite64 68
|
||||
#define __NR_preadv 69
|
||||
#define __NR_pwritev 70
|
||||
#define __NR3264_sendfile 71
|
||||
#define __NR_pselect6 72
|
||||
#define __NR_ppoll 73
|
||||
#define __NR_signalfd4 74
|
||||
#define __NR_vmsplice 75
|
||||
#define __NR_splice 76
|
||||
#define __NR_tee 77
|
||||
#define __NR_readlinkat 78
|
||||
#define __NR_sync 81
|
||||
#define __NR_fsync 82
|
||||
#define __NR_fdatasync 83
|
||||
#define __NR_sync_file_range 84
|
||||
#define __NR_timerfd_create 85
|
||||
#define __NR_timerfd_settime 86
|
||||
#define __NR_timerfd_gettime 87
|
||||
#define __NR_utimensat 88
|
||||
#define __NR_acct 89
|
||||
#define __NR_capget 90
|
||||
#define __NR_capset 91
|
||||
#define __NR_personality 92
|
||||
#define __NR_exit 93
|
||||
#define __NR_exit_group 94
|
||||
#define __NR_waitid 95
|
||||
#define __NR_set_tid_address 96
|
||||
#define __NR_unshare 97
|
||||
#define __NR_futex 98
|
||||
#define __NR_set_robust_list 99
|
||||
#define __NR_get_robust_list 100
|
||||
#define __NR_nanosleep 101
|
||||
#define __NR_getitimer 102
|
||||
#define __NR_setitimer 103
|
||||
#define __NR_kexec_load 104
|
||||
#define __NR_init_module 105
|
||||
#define __NR_delete_module 106
|
||||
#define __NR_timer_create 107
|
||||
#define __NR_timer_gettime 108
|
||||
#define __NR_timer_getoverrun 109
|
||||
#define __NR_timer_settime 110
|
||||
#define __NR_timer_delete 111
|
||||
#define __NR_clock_settime 112
|
||||
#define __NR_clock_gettime 113
|
||||
#define __NR_clock_getres 114
|
||||
#define __NR_clock_nanosleep 115
|
||||
#define __NR_syslog 116
|
||||
#define __NR_ptrace 117
|
||||
#define __NR_sched_setparam 118
|
||||
#define __NR_sched_setscheduler 119
|
||||
#define __NR_sched_getscheduler 120
|
||||
#define __NR_sched_getparam 121
|
||||
#define __NR_sched_setaffinity 122
|
||||
#define __NR_sched_getaffinity 123
|
||||
#define __NR_sched_yield 124
|
||||
#define __NR_sched_get_priority_max 125
|
||||
#define __NR_sched_get_priority_min 126
|
||||
#define __NR_sched_rr_get_interval 127
|
||||
#define __NR_restart_syscall 128
|
||||
#define __NR_kill 129
|
||||
#define __NR_tkill 130
|
||||
#define __NR_tgkill 131
|
||||
#define __NR_sigaltstack 132
|
||||
#define __NR_rt_sigsuspend 133
|
||||
#define __NR_rt_sigaction 134
|
||||
#define __NR_rt_sigprocmask 135
|
||||
#define __NR_rt_sigpending 136
|
||||
#define __NR_rt_sigtimedwait 137
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
#define __NR_rt_sigreturn 139
|
||||
#define __NR_setpriority 140
|
||||
#define __NR_getpriority 141
|
||||
#define __NR_reboot 142
|
||||
#define __NR_setregid 143
|
||||
#define __NR_setgid 144
|
||||
#define __NR_setreuid 145
|
||||
#define __NR_setuid 146
|
||||
#define __NR_setresuid 147
|
||||
#define __NR_getresuid 148
|
||||
#define __NR_setresgid 149
|
||||
#define __NR_getresgid 150
|
||||
#define __NR_setfsuid 151
|
||||
#define __NR_setfsgid 152
|
||||
#define __NR_times 153
|
||||
#define __NR_setpgid 154
|
||||
#define __NR_getpgid 155
|
||||
#define __NR_getsid 156
|
||||
#define __NR_setsid 157
|
||||
#define __NR_getgroups 158
|
||||
#define __NR_setgroups 159
|
||||
#define __NR_uname 160
|
||||
#define __NR_sethostname 161
|
||||
#define __NR_setdomainname 162
|
||||
#define __NR_getrusage 165
|
||||
#define __NR_umask 166
|
||||
#define __NR_prctl 167
|
||||
#define __NR_getcpu 168
|
||||
#define __NR_gettimeofday 169
|
||||
#define __NR_settimeofday 170
|
||||
#define __NR_adjtimex 171
|
||||
#define __NR_getpid 172
|
||||
#define __NR_getppid 173
|
||||
#define __NR_getuid 174
|
||||
#define __NR_geteuid 175
|
||||
#define __NR_getgid 176
|
||||
#define __NR_getegid 177
|
||||
#define __NR_gettid 178
|
||||
#define __NR_sysinfo 179
|
||||
#define __NR_mq_open 180
|
||||
#define __NR_mq_unlink 181
|
||||
#define __NR_mq_timedsend 182
|
||||
#define __NR_mq_timedreceive 183
|
||||
#define __NR_mq_notify 184
|
||||
#define __NR_mq_getsetattr 185
|
||||
#define __NR_msgget 186
|
||||
#define __NR_msgctl 187
|
||||
#define __NR_msgrcv 188
|
||||
#define __NR_msgsnd 189
|
||||
#define __NR_semget 190
|
||||
#define __NR_semctl 191
|
||||
#define __NR_semtimedop 192
|
||||
#define __NR_semop 193
|
||||
#define __NR_shmget 194
|
||||
#define __NR_shmctl 195
|
||||
#define __NR_shmat 196
|
||||
#define __NR_shmdt 197
|
||||
#define __NR_socket 198
|
||||
#define __NR_socketpair 199
|
||||
#define __NR_bind 200
|
||||
#define __NR_listen 201
|
||||
#define __NR_accept 202
|
||||
#define __NR_connect 203
|
||||
#define __NR_getsockname 204
|
||||
#define __NR_getpeername 205
|
||||
#define __NR_sendto 206
|
||||
#define __NR_recvfrom 207
|
||||
#define __NR_setsockopt 208
|
||||
#define __NR_getsockopt 209
|
||||
#define __NR_shutdown 210
|
||||
#define __NR_sendmsg 211
|
||||
#define __NR_recvmsg 212
|
||||
#define __NR_readahead 213
|
||||
#define __NR_brk 214
|
||||
#define __NR_munmap 215
|
||||
#define __NR_mremap 216
|
||||
#define __NR_add_key 217
|
||||
#define __NR_request_key 218
|
||||
#define __NR_keyctl 219
|
||||
#define __NR_clone 220
|
||||
#define __NR_execve 221
|
||||
#define __NR3264_mmap 222
|
||||
#define __NR3264_fadvise64 223
|
||||
#define __NR_swapon 224
|
||||
#define __NR_swapoff 225
|
||||
#define __NR_mprotect 226
|
||||
#define __NR_msync 227
|
||||
#define __NR_mlock 228
|
||||
#define __NR_munlock 229
|
||||
#define __NR_mlockall 230
|
||||
#define __NR_munlockall 231
|
||||
#define __NR_mincore 232
|
||||
#define __NR_madvise 233
|
||||
#define __NR_remap_file_pages 234
|
||||
#define __NR_mbind 235
|
||||
#define __NR_get_mempolicy 236
|
||||
#define __NR_set_mempolicy 237
|
||||
#define __NR_migrate_pages 238
|
||||
#define __NR_move_pages 239
|
||||
#define __NR_rt_tgsigqueueinfo 240
|
||||
#define __NR_perf_event_open 241
|
||||
#define __NR_accept4 242
|
||||
#define __NR_recvmmsg 243
|
||||
#define __NR_arch_specific_syscall 244
|
||||
#define __NR_wait4 260
|
||||
#define __NR_prlimit64 261
|
||||
#define __NR_fanotify_init 262
|
||||
#define __NR_fanotify_mark 263
|
||||
#define __NR_name_to_handle_at 264
|
||||
#define __NR_open_by_handle_at 265
|
||||
#define __NR_clock_adjtime 266
|
||||
#define __NR_syncfs 267
|
||||
#define __NR_setns 268
|
||||
#define __NR_sendmmsg 269
|
||||
#define __NR_process_vm_readv 270
|
||||
#define __NR_process_vm_writev 271
|
||||
#define __NR_kcmp 272
|
||||
#define __NR_finit_module 273
|
||||
#define __NR_sched_setattr 274
|
||||
#define __NR_sched_getattr 275
|
||||
#define __NR_renameat2 276
|
||||
#define __NR_seccomp 277
|
||||
#define __NR_getrandom 278
|
||||
#define __NR_memfd_create 279
|
||||
#define __NR_bpf 280
|
||||
#define __NR_execveat 281
|
||||
#define __NR_userfaultfd 282
|
||||
#define __NR_membarrier 283
|
||||
#define __NR_mlock2 284
|
||||
#define __NR_copy_file_range 285
|
||||
#define __NR_preadv2 286
|
||||
#define __NR_pwritev2 287
|
||||
#define __NR_pkey_mprotect 288
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_statx 291
|
||||
#define __NR_io_pgetevents 292
|
||||
#define __NR_rseq 293
|
||||
#define __NR_kexec_file_load 294
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#define __NR_io_uring_setup 425
|
||||
#define __NR_io_uring_enter 426
|
||||
#define __NR_io_uring_register 427
|
||||
#define __NR_open_tree 428
|
||||
#define __NR_move_mount 429
|
||||
#define __NR_fsopen 430
|
||||
#define __NR_fsconfig 431
|
||||
#define __NR_fsmount 432
|
||||
#define __NR_fspick 433
|
||||
#define __NR_pidfd_open 434
|
||||
#define __NR_clone3 435
|
||||
#define __NR_close_range 436
|
||||
#define __NR_openat2 437
|
||||
#define __NR_pidfd_getfd 438
|
||||
#define __NR_faccessat2 439
|
||||
#define __NR_process_madvise 440
|
||||
#define __NR_epoll_pwait2 441
|
||||
#define __NR_mount_setattr 442
|
||||
#define __NR_quotactl_fd 443
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_map_shadow_stack 453
|
||||
#define __NR_futex_wake 454
|
||||
#define __NR_futex_wait 455
|
||||
#define __NR_futex_requeue 456
|
||||
#define __NR_fcntl __NR3264_fcntl
|
||||
#define __NR_statfs __NR3264_statfs
|
||||
#define __NR_fstatfs __NR3264_fstatfs
|
||||
#define __NR_truncate __NR3264_truncate
|
||||
#define __NR_ftruncate __NR3264_ftruncate
|
||||
#define __NR_lseek __NR3264_lseek
|
||||
#define __NR_sendfile __NR3264_sendfile
|
||||
#define __NR_mmap __NR3264_mmap
|
||||
#define __NR_fadvise64 __NR3264_fadvise64
|
||||
24
lib/libc/musl/arch/loongarch64/bits/user.h
vendored
Normal file
24
lib/libc/musl/arch/loongarch64/bits/user.h
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#define ELF_NGREG 45
|
||||
#define ELF_NFPREG 34
|
||||
|
||||
struct user_regs_struct {
|
||||
unsigned long regs[32];
|
||||
unsigned long orig_a0;
|
||||
unsigned long csr_era;
|
||||
unsigned long csr_badv;
|
||||
unsigned long reserved[10];
|
||||
};
|
||||
|
||||
struct user_fp_struct {
|
||||
unsigned long fpr[32];
|
||||
unsigned long fcc;
|
||||
unsigned int fcsr;
|
||||
};
|
||||
|
||||
typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
|
||||
|
||||
typedef union {
|
||||
double d;
|
||||
float f;
|
||||
} elf_fpreg_t;
|
||||
typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
|
||||
13
lib/libc/musl/arch/loongarch64/crt_arch.h
vendored
Normal file
13
lib/libc/musl/arch/loongarch64/crt_arch.h
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
__asm__(
|
||||
".text \n"
|
||||
".global " START "\n"
|
||||
".type " START ", @function\n"
|
||||
START ":\n"
|
||||
" move $fp, $zero\n"
|
||||
" move $a0, $sp\n"
|
||||
".weak _DYNAMIC\n"
|
||||
".hidden _DYNAMIC\n"
|
||||
" la.local $a1, _DYNAMIC\n"
|
||||
" bstrins.d $sp, $zero, 3, 0\n"
|
||||
" b " START "_c\n"
|
||||
);
|
||||
11
lib/libc/musl/arch/loongarch64/pthread_arch.h
vendored
Normal file
11
lib/libc/musl/arch/loongarch64/pthread_arch.h
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
static inline uintptr_t __get_tp()
|
||||
{
|
||||
register uintptr_t tp __asm__("tp");
|
||||
__asm__ ("" : "=r" (tp) );
|
||||
return tp;
|
||||
}
|
||||
|
||||
#define TLS_ABOVE_TP
|
||||
#define GAP_ABOVE_TP 0
|
||||
#define DTP_OFFSET 0
|
||||
#define MC_PC __pc
|
||||
29
lib/libc/musl/arch/loongarch64/reloc.h
vendored
Normal file
29
lib/libc/musl/arch/loongarch64/reloc.h
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#ifdef __loongarch_soft_float
|
||||
#define FP_SUFFIX "-sf"
|
||||
#elif defined __loongarch_single_float
|
||||
#define FP_SUFFIX "-sp"
|
||||
#else
|
||||
#define FP_SUFFIX ""
|
||||
#endif
|
||||
|
||||
#define LDSO_ARCH "loongarch64" FP_SUFFIX
|
||||
|
||||
#define TPOFF_K 0
|
||||
|
||||
#define REL_PLT R_LARCH_JUMP_SLOT
|
||||
#define REL_COPY R_LARCH_COPY
|
||||
#define REL_DTPMOD R_LARCH_TLS_DTPMOD64
|
||||
#define REL_DTPOFF R_LARCH_TLS_DTPREL64
|
||||
#define REL_TPOFF R_LARCH_TLS_TPREL64
|
||||
#define REL_RELATIVE R_LARCH_RELATIVE
|
||||
#define REL_SYMBOLIC R_LARCH_64
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
"move $sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" )
|
||||
|
||||
#define GETFUNCSYM(fp, sym, got) __asm__ ( \
|
||||
".hidden " #sym "\n" \
|
||||
".align 8 \n" \
|
||||
" la.local $t1, "#sym" \n" \
|
||||
" move %0, $t1 \n" \
|
||||
: "=r"(*(fp)) : : "memory" )
|
||||
137
lib/libc/musl/arch/loongarch64/syscall_arch.h
vendored
Normal file
137
lib/libc/musl/arch/loongarch64/syscall_arch.h
vendored
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
#define __SYSCALL_LL_E(x) (x)
|
||||
#define __SYSCALL_LL_O(x) (x)
|
||||
|
||||
#define SYSCALL_CLOBBERLIST \
|
||||
"$t0", "$t1", "$t2", "$t3", \
|
||||
"$t4", "$t5", "$t6", "$t7", "$t8", "memory"
|
||||
|
||||
static inline long __syscall0(long n)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0");
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "=r"(a0)
|
||||
: "r"(a7)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall1(long n, long a)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall2(long n, long a, long b)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall3(long n, long a, long b, long c)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
register long a2 __asm__("$a2") = c;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1), "r"(a2)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall4(long n, long a, long b, long c, long d)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
register long a2 __asm__("$a2") = c;
|
||||
register long a3 __asm__("$a3") = d;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1), "r"(a2), "r"(a3)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall5(long n, long a, long b, long c, long d, long e)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
register long a2 __asm__("$a2") = c;
|
||||
register long a3 __asm__("$a3") = d;
|
||||
register long a4 __asm__("$a4") = e;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
register long a2 __asm__("$a2") = c;
|
||||
register long a3 __asm__("$a3") = d;
|
||||
register long a4 __asm__("$a4") = e;
|
||||
register long a5 __asm__("$a5") = f;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
static inline long __syscall7(long n, long a, long b, long c, long d, long e, long f, long g)
|
||||
{
|
||||
register long a7 __asm__("$a7") = n;
|
||||
register long a0 __asm__("$a0") = a;
|
||||
register long a1 __asm__("$a1") = b;
|
||||
register long a2 __asm__("$a2") = c;
|
||||
register long a3 __asm__("$a3") = d;
|
||||
register long a4 __asm__("$a4") = e;
|
||||
register long a5 __asm__("$a5") = f;
|
||||
register long a6 __asm__("$a6") = g;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"syscall 0"
|
||||
: "+r"(a0)
|
||||
: "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5), "r"(a6)
|
||||
: SYSCALL_CLOBBERLIST);
|
||||
return a0;
|
||||
}
|
||||
|
||||
#define VDSO_USEFUL
|
||||
#define VDSO_CGT_SYM "__vdso_clock_gettime"
|
||||
#define VDSO_CGT_VER "LINUX_5.10"
|
||||
|
||||
#define IPC_64 0
|
||||
5
lib/libc/musl/arch/m68k/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/m68k/bits/syscall.h.in
vendored
|
|
@ -416,3 +416,8 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
|
|
|||
5
lib/libc/musl/arch/mips/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/mips/bits/syscall.h.in
vendored
|
|
@ -418,4 +418,9 @@
|
|||
#define __NR_landlock_create_ruleset 4444
|
||||
#define __NR_landlock_add_rule 4445
|
||||
#define __NR_landlock_restrict_self 4446
|
||||
#define __NR_process_mrelease 4448
|
||||
#define __NR_futex_waitv 4449
|
||||
#define __NR_set_mempolicy_home_node 4450
|
||||
#define __NR_cachestat 4451
|
||||
#define __NR_fchmodat2 4452
|
||||
|
||||
|
|
|
|||
5
lib/libc/musl/arch/mips64/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/mips64/bits/syscall.h.in
vendored
|
|
@ -348,4 +348,9 @@
|
|||
#define __NR_landlock_create_ruleset 5444
|
||||
#define __NR_landlock_add_rule 5445
|
||||
#define __NR_landlock_restrict_self 5446
|
||||
#define __NR_process_mrelease 5448
|
||||
#define __NR_futex_waitv 5449
|
||||
#define __NR_set_mempolicy_home_node 5450
|
||||
#define __NR_cachestat 5451
|
||||
#define __NR_fchmodat2 5452
|
||||
|
||||
|
|
|
|||
5
lib/libc/musl/arch/powerpc/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/powerpc/bits/syscall.h.in
vendored
|
|
@ -425,4 +425,9 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
|
|
@ -397,4 +397,9 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
21
lib/libc/musl/arch/riscv32/atomic_arch.h
vendored
Normal file
21
lib/libc/musl/arch/riscv32/atomic_arch.h
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#define a_barrier a_barrier
|
||||
static inline void a_barrier()
|
||||
{
|
||||
__asm__ __volatile__ ("fence rw,rw" : : : "memory");
|
||||
}
|
||||
|
||||
#define a_cas a_cas
|
||||
static inline int a_cas(volatile int *p, int t, int s)
|
||||
{
|
||||
int old, tmp;
|
||||
__asm__ __volatile__ (
|
||||
"\n1: lr.w.aqrl %0, (%2)\n"
|
||||
" bne %0, %3, 1f\n"
|
||||
" sc.w.aqrl %1, %4, (%2)\n"
|
||||
" bnez %1, 1b\n"
|
||||
"1:"
|
||||
: "=&r"(old), "=&r"(tmp)
|
||||
: "r"(p), "r"((long)t), "r"((long)s)
|
||||
: "memory");
|
||||
return old;
|
||||
}
|
||||
18
lib/libc/musl/arch/riscv32/bits/alltypes.h.in
vendored
Normal file
18
lib/libc/musl/arch/riscv32/bits/alltypes.h.in
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
#define _Addr int
|
||||
#define _Int64 long long
|
||||
#define _Reg int
|
||||
|
||||
#define __BYTE_ORDER 1234
|
||||
#define __LONG_MAX 0x7fffffffL
|
||||
|
||||
#ifndef __cplusplus
|
||||
TYPEDEF int wchar_t;
|
||||
#endif
|
||||
|
||||
TYPEDEF int blksize_t;
|
||||
TYPEDEF unsigned int nlink_t;
|
||||
|
||||
TYPEDEF float float_t;
|
||||
TYPEDEF double double_t;
|
||||
|
||||
TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
|
||||
17
lib/libc/musl/arch/riscv32/bits/fenv.h
vendored
Normal file
17
lib/libc/musl/arch/riscv32/bits/fenv.h
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#define FE_INVALID 16
|
||||
#define FE_DIVBYZERO 8
|
||||
#define FE_OVERFLOW 4
|
||||
#define FE_UNDERFLOW 2
|
||||
#define FE_INEXACT 1
|
||||
|
||||
#define FE_ALL_EXCEPT 31
|
||||
|
||||
#define FE_TONEAREST 0
|
||||
#define FE_DOWNWARD 2
|
||||
#define FE_UPWARD 3
|
||||
#define FE_TOWARDZERO 1
|
||||
|
||||
typedef unsigned int fexcept_t;
|
||||
typedef unsigned int fenv_t;
|
||||
|
||||
#define FE_DFL_ENV ((const fenv_t *) -1)
|
||||
16
lib/libc/musl/arch/riscv32/bits/float.h
vendored
Normal file
16
lib/libc/musl/arch/riscv32/bits/float.h
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#define FLT_EVAL_METHOD 0
|
||||
|
||||
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
|
||||
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
|
||||
#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L
|
||||
#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L
|
||||
|
||||
#define LDBL_MANT_DIG 113
|
||||
#define LDBL_MIN_EXP (-16381)
|
||||
#define LDBL_MAX_EXP 16384
|
||||
|
||||
#define LDBL_DIG 33
|
||||
#define LDBL_MIN_10_EXP (-4931)
|
||||
#define LDBL_MAX_10_EXP 4932
|
||||
|
||||
#define DECIMAL_DIG 36
|
||||
1
lib/libc/musl/arch/riscv32/bits/ipcstat.h
vendored
Normal file
1
lib/libc/musl/arch/riscv32/bits/ipcstat.h
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
#define IPC_STAT 0x102
|
||||
18
lib/libc/musl/arch/riscv32/bits/msg.h
vendored
Normal file
18
lib/libc/musl/arch/riscv32/bits/msg.h
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
struct msqid_ds {
|
||||
struct ipc_perm msg_perm;
|
||||
unsigned long __msg_stime_lo;
|
||||
unsigned long __msg_stime_hi;
|
||||
unsigned long __msg_rtime_lo;
|
||||
unsigned long __msg_rtime_hi;
|
||||
unsigned long __msg_ctime_lo;
|
||||
unsigned long __msg_ctime_hi;
|
||||
unsigned long msg_cbytes;
|
||||
msgqnum_t msg_qnum;
|
||||
msglen_t msg_qbytes;
|
||||
pid_t msg_lspid;
|
||||
pid_t msg_lrpid;
|
||||
unsigned long __unused[2];
|
||||
time_t msg_stime;
|
||||
time_t msg_rtime;
|
||||
time_t msg_ctime;
|
||||
};
|
||||
2
lib/libc/musl/arch/riscv32/bits/posix.h
vendored
Normal file
2
lib/libc/musl/arch/riscv32/bits/posix.h
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#define _POSIX_V6_ILP32_OFFBIG 1
|
||||
#define _POSIX_V7_ILP32_OFFBIG 1
|
||||
2
lib/libc/musl/arch/riscv32/bits/reg.h
vendored
Normal file
2
lib/libc/musl/arch/riscv32/bits/reg.h
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#undef __WORDSIZE
|
||||
#define __WORDSIZE 32
|
||||
18
lib/libc/musl/arch/riscv32/bits/sem.h
vendored
Normal file
18
lib/libc/musl/arch/riscv32/bits/sem.h
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
struct semid_ds {
|
||||
struct ipc_perm sem_perm;
|
||||
unsigned long __sem_otime_lo;
|
||||
unsigned long __sem_otime_hi;
|
||||
unsigned long __sem_ctime_lo;
|
||||
unsigned long __sem_ctime_hi;
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned short sem_nsems;
|
||||
char __sem_nsems_pad[sizeof(long)-sizeof(short)];
|
||||
#else
|
||||
char __sem_nsems_pad[sizeof(long)-sizeof(short)];
|
||||
unsigned short sem_nsems;
|
||||
#endif
|
||||
long __unused3;
|
||||
long __unused4;
|
||||
time_t sem_otime;
|
||||
time_t sem_ctime;
|
||||
};
|
||||
1
lib/libc/musl/arch/riscv32/bits/setjmp.h
vendored
Normal file
1
lib/libc/musl/arch/riscv32/bits/setjmp.h
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
typedef unsigned long long __jmp_buf[19];
|
||||
31
lib/libc/musl/arch/riscv32/bits/shm.h
vendored
Normal file
31
lib/libc/musl/arch/riscv32/bits/shm.h
vendored
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#define SHMLBA 4096
|
||||
|
||||
struct shmid_ds {
|
||||
struct ipc_perm shm_perm;
|
||||
size_t shm_segsz;
|
||||
unsigned long __shm_atime_lo;
|
||||
unsigned long __shm_atime_hi;
|
||||
unsigned long __shm_dtime_lo;
|
||||
unsigned long __shm_dtime_hi;
|
||||
unsigned long __shm_ctime_lo;
|
||||
unsigned long __shm_ctime_hi;
|
||||
pid_t shm_cpid;
|
||||
pid_t shm_lpid;
|
||||
unsigned long shm_nattch;
|
||||
unsigned long __pad1;
|
||||
unsigned long __pad2;
|
||||
unsigned long __pad3;
|
||||
time_t shm_atime;
|
||||
time_t shm_dtime;
|
||||
time_t shm_ctime;
|
||||
};
|
||||
|
||||
struct shminfo {
|
||||
unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
|
||||
};
|
||||
|
||||
struct shm_info {
|
||||
int __used_ids;
|
||||
unsigned long shm_tot, shm_rss, shm_swp;
|
||||
unsigned long __swap_attempts, __swap_successes;
|
||||
};
|
||||
120
lib/libc/musl/arch/riscv32/bits/signal.h
vendored
Normal file
120
lib/libc/musl/arch/riscv32/bits/signal.h
vendored
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
||||
|| defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
|
||||
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
# define MINSIGSTKSZ 2048
|
||||
# define SIGSTKSZ 8192
|
||||
#endif
|
||||
|
||||
typedef unsigned long __riscv_mc_gp_state[32];
|
||||
|
||||
struct __riscv_mc_f_ext_state {
|
||||
unsigned int __f[32];
|
||||
unsigned int __fcsr;
|
||||
};
|
||||
|
||||
struct __riscv_mc_d_ext_state {
|
||||
unsigned long long __f[32];
|
||||
unsigned int __fcsr;
|
||||
};
|
||||
|
||||
struct __riscv_mc_q_ext_state {
|
||||
unsigned long long __f[64] __attribute__((aligned(16)));
|
||||
unsigned int __fcsr;
|
||||
unsigned int __reserved[3];
|
||||
};
|
||||
|
||||
union __riscv_mc_fp_state {
|
||||
struct __riscv_mc_f_ext_state __f;
|
||||
struct __riscv_mc_d_ext_state __d;
|
||||
struct __riscv_mc_q_ext_state __q;
|
||||
};
|
||||
|
||||
typedef struct mcontext_t {
|
||||
__riscv_mc_gp_state __gregs;
|
||||
union __riscv_mc_fp_state __fpregs;
|
||||
} mcontext_t;
|
||||
|
||||
#if defined(_GNU_SOURCE)
|
||||
#define REG_PC 0
|
||||
#define REG_RA 1
|
||||
#define REG_SP 2
|
||||
#define REG_TP 4
|
||||
#define REG_S0 8
|
||||
#define REG_S1 9
|
||||
#define REG_A0 10
|
||||
#define REG_S2 18
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
typedef unsigned long greg_t;
|
||||
typedef unsigned long gregset_t[32];
|
||||
typedef union __riscv_mc_fp_state fpregset_t;
|
||||
struct sigcontext {
|
||||
gregset_t gregs;
|
||||
fpregset_t fpregs;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct sigaltstack {
|
||||
void *ss_sp;
|
||||
int ss_flags;
|
||||
size_t ss_size;
|
||||
};
|
||||
|
||||
typedef struct __ucontext
|
||||
{
|
||||
unsigned long uc_flags;
|
||||
struct __ucontext *uc_link;
|
||||
stack_t uc_stack;
|
||||
sigset_t uc_sigmask;
|
||||
mcontext_t uc_mcontext;
|
||||
} ucontext_t;
|
||||
|
||||
#define SA_NOCLDSTOP 1
|
||||
#define SA_NOCLDWAIT 2
|
||||
#define SA_SIGINFO 4
|
||||
#define SA_ONSTACK 0x08000000
|
||||
#define SA_RESTART 0x10000000
|
||||
#define SA_NODEFER 0x40000000
|
||||
#define SA_RESETHAND 0x80000000
|
||||
#define SA_RESTORER 0x04000000
|
||||
|
||||
#endif
|
||||
|
||||
#define SIGHUP 1
|
||||
#define SIGINT 2
|
||||
#define SIGQUIT 3
|
||||
#define SIGILL 4
|
||||
#define SIGTRAP 5
|
||||
#define SIGABRT 6
|
||||
#define SIGIOT SIGABRT
|
||||
#define SIGBUS 7
|
||||
#define SIGFPE 8
|
||||
#define SIGKILL 9
|
||||
#define SIGUSR1 10
|
||||
#define SIGSEGV 11
|
||||
#define SIGUSR2 12
|
||||
#define SIGPIPE 13
|
||||
#define SIGALRM 14
|
||||
#define SIGTERM 15
|
||||
#define SIGSTKFLT 16
|
||||
#define SIGCHLD 17
|
||||
#define SIGCONT 18
|
||||
#define SIGSTOP 19
|
||||
#define SIGTSTP 20
|
||||
#define SIGTTIN 21
|
||||
#define SIGTTOU 22
|
||||
#define SIGURG 23
|
||||
#define SIGXCPU 24
|
||||
#define SIGXFSZ 25
|
||||
#define SIGVTALRM 26
|
||||
#define SIGPROF 27
|
||||
#define SIGWINCH 28
|
||||
#define SIGIO 29
|
||||
#define SIGPOLL SIGIO
|
||||
#define SIGPWR 30
|
||||
#define SIGSYS 31
|
||||
#define SIGUNUSED SIGSYS
|
||||
|
||||
#define _NSIG 65
|
||||
18
lib/libc/musl/arch/riscv32/bits/stat.h
vendored
Normal file
18
lib/libc/musl/arch/riscv32/bits/stat.h
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
struct stat {
|
||||
dev_t st_dev;
|
||||
ino_t st_ino;
|
||||
mode_t st_mode;
|
||||
nlink_t st_nlink;
|
||||
uid_t st_uid;
|
||||
gid_t st_gid;
|
||||
dev_t st_rdev;
|
||||
unsigned long long __pad;
|
||||
off_t st_size;
|
||||
blksize_t st_blksize;
|
||||
int __pad2;
|
||||
blkcnt_t st_blocks;
|
||||
struct timespec st_atim;
|
||||
struct timespec st_mtim;
|
||||
struct timespec st_ctim;
|
||||
unsigned __unused[2];
|
||||
};
|
||||
20
lib/libc/musl/arch/riscv32/bits/stdint.h
vendored
Normal file
20
lib/libc/musl/arch/riscv32/bits/stdint.h
vendored
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
typedef int32_t int_fast16_t;
|
||||
typedef int32_t int_fast32_t;
|
||||
typedef uint32_t uint_fast16_t;
|
||||
typedef uint32_t uint_fast32_t;
|
||||
|
||||
#define INT_FAST16_MIN INT32_MIN
|
||||
#define INT_FAST32_MIN INT32_MIN
|
||||
|
||||
#define INT_FAST16_MAX INT32_MAX
|
||||
#define INT_FAST32_MAX INT32_MAX
|
||||
|
||||
#define UINT_FAST16_MAX UINT32_MAX
|
||||
#define UINT_FAST32_MAX UINT32_MAX
|
||||
|
||||
#define INTPTR_MIN INT32_MIN
|
||||
#define INTPTR_MAX INT32_MAX
|
||||
#define UINTPTR_MAX UINT32_MAX
|
||||
#define PTRDIFF_MIN INT32_MIN
|
||||
#define PTRDIFF_MAX INT32_MAX
|
||||
#define SIZE_MAX UINT32_MAX
|
||||
300
lib/libc/musl/arch/riscv32/bits/syscall.h.in
vendored
Normal file
300
lib/libc/musl/arch/riscv32/bits/syscall.h.in
vendored
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
#define __NR_io_setup 0
|
||||
#define __NR_io_destroy 1
|
||||
#define __NR_io_submit 2
|
||||
#define __NR_io_cancel 3
|
||||
#define __NR_setxattr 5
|
||||
#define __NR_lsetxattr 6
|
||||
#define __NR_fsetxattr 7
|
||||
#define __NR_getxattr 8
|
||||
#define __NR_lgetxattr 9
|
||||
#define __NR_fgetxattr 10
|
||||
#define __NR_listxattr 11
|
||||
#define __NR_llistxattr 12
|
||||
#define __NR_flistxattr 13
|
||||
#define __NR_removexattr 14
|
||||
#define __NR_lremovexattr 15
|
||||
#define __NR_fremovexattr 16
|
||||
#define __NR_getcwd 17
|
||||
#define __NR_lookup_dcookie 18
|
||||
#define __NR_eventfd2 19
|
||||
#define __NR_epoll_create1 20
|
||||
#define __NR_epoll_ctl 21
|
||||
#define __NR_epoll_pwait 22
|
||||
#define __NR_dup 23
|
||||
#define __NR_dup3 24
|
||||
#define __NR_fcntl64 25
|
||||
#define __NR_inotify_init1 26
|
||||
#define __NR_inotify_add_watch 27
|
||||
#define __NR_inotify_rm_watch 28
|
||||
#define __NR_ioctl 29
|
||||
#define __NR_ioprio_set 30
|
||||
#define __NR_ioprio_get 31
|
||||
#define __NR_flock 32
|
||||
#define __NR_mknodat 33
|
||||
#define __NR_mkdirat 34
|
||||
#define __NR_unlinkat 35
|
||||
#define __NR_symlinkat 36
|
||||
#define __NR_linkat 37
|
||||
#define __NR_umount2 39
|
||||
#define __NR_mount 40
|
||||
#define __NR_pivot_root 41
|
||||
#define __NR_nfsservctl 42
|
||||
#define __NR_statfs64 43
|
||||
#define __NR_fstatfs64 44
|
||||
#define __NR_truncate64 45
|
||||
#define __NR_ftruncate64 46
|
||||
#define __NR_fallocate 47
|
||||
#define __NR_faccessat 48
|
||||
#define __NR_chdir 49
|
||||
#define __NR_fchdir 50
|
||||
#define __NR_chroot 51
|
||||
#define __NR_fchmod 52
|
||||
#define __NR_fchmodat 53
|
||||
#define __NR_fchownat 54
|
||||
#define __NR_fchown 55
|
||||
#define __NR_openat 56
|
||||
#define __NR_close 57
|
||||
#define __NR_vhangup 58
|
||||
#define __NR_pipe2 59
|
||||
#define __NR_quotactl 60
|
||||
#define __NR_getdents64 61
|
||||
#define __NR__llseek 62
|
||||
#define __NR_read 63
|
||||
#define __NR_write 64
|
||||
#define __NR_readv 65
|
||||
#define __NR_writev 66
|
||||
#define __NR_pread64 67
|
||||
#define __NR_pwrite64 68
|
||||
#define __NR_preadv 69
|
||||
#define __NR_pwritev 70
|
||||
#define __NR_sendfile64 71
|
||||
#define __NR_signalfd4 74
|
||||
#define __NR_vmsplice 75
|
||||
#define __NR_splice 76
|
||||
#define __NR_tee 77
|
||||
#define __NR_readlinkat 78
|
||||
#define __NR_sync 81
|
||||
#define __NR_fsync 82
|
||||
#define __NR_fdatasync 83
|
||||
#define __NR_sync_file_range 84
|
||||
#define __NR_timerfd_create 85
|
||||
#define __NR_acct 89
|
||||
#define __NR_capget 90
|
||||
#define __NR_capset 91
|
||||
#define __NR_personality 92
|
||||
#define __NR_exit 93
|
||||
#define __NR_exit_group 94
|
||||
#define __NR_waitid 95
|
||||
#define __NR_set_tid_address 96
|
||||
#define __NR_unshare 97
|
||||
#define __NR_set_robust_list 99
|
||||
#define __NR_get_robust_list 100
|
||||
#define __NR_nanosleep 101
|
||||
#define __NR_getitimer 102
|
||||
#define __NR_setitimer 103
|
||||
#define __NR_kexec_load 104
|
||||
#define __NR_init_module 105
|
||||
#define __NR_delete_module 106
|
||||
#define __NR_timer_create 107
|
||||
#define __NR_timer_getoverrun 109
|
||||
#define __NR_timer_delete 111
|
||||
#define __NR_syslog 116
|
||||
#define __NR_ptrace 117
|
||||
#define __NR_sched_setparam 118
|
||||
#define __NR_sched_setscheduler 119
|
||||
#define __NR_sched_getscheduler 120
|
||||
#define __NR_sched_getparam 121
|
||||
#define __NR_sched_setaffinity 122
|
||||
#define __NR_sched_getaffinity 123
|
||||
#define __NR_sched_yield 124
|
||||
#define __NR_sched_get_priority_max 125
|
||||
#define __NR_sched_get_priority_min 126
|
||||
#define __NR_restart_syscall 128
|
||||
#define __NR_kill 129
|
||||
#define __NR_tkill 130
|
||||
#define __NR_tgkill 131
|
||||
#define __NR_sigaltstack 132
|
||||
#define __NR_rt_sigsuspend 133
|
||||
#define __NR_rt_sigaction 134
|
||||
#define __NR_rt_sigprocmask 135
|
||||
#define __NR_rt_sigpending 136
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
#define __NR_rt_sigreturn 139
|
||||
#define __NR_setpriority 140
|
||||
#define __NR_getpriority 141
|
||||
#define __NR_reboot 142
|
||||
#define __NR_setregid 143
|
||||
#define __NR_setgid 144
|
||||
#define __NR_setreuid 145
|
||||
#define __NR_setuid 146
|
||||
#define __NR_setresuid 147
|
||||
#define __NR_getresuid 148
|
||||
#define __NR_setresgid 149
|
||||
#define __NR_getresgid 150
|
||||
#define __NR_setfsuid 151
|
||||
#define __NR_setfsgid 152
|
||||
#define __NR_times 153
|
||||
#define __NR_setpgid 154
|
||||
#define __NR_getpgid 155
|
||||
#define __NR_getsid 156
|
||||
#define __NR_setsid 157
|
||||
#define __NR_getgroups 158
|
||||
#define __NR_setgroups 159
|
||||
#define __NR_uname 160
|
||||
#define __NR_sethostname 161
|
||||
#define __NR_setdomainname 162
|
||||
#define __NR_getrusage 165
|
||||
#define __NR_umask 166
|
||||
#define __NR_prctl 167
|
||||
#define __NR_getcpu 168
|
||||
#define __NR_getpid 172
|
||||
#define __NR_getppid 173
|
||||
#define __NR_getuid 174
|
||||
#define __NR_geteuid 175
|
||||
#define __NR_getgid 176
|
||||
#define __NR_getegid 177
|
||||
#define __NR_gettid 178
|
||||
#define __NR_sysinfo 179
|
||||
#define __NR_mq_open 180
|
||||
#define __NR_mq_unlink 181
|
||||
#define __NR_mq_notify 184
|
||||
#define __NR_mq_getsetattr 185
|
||||
#define __NR_msgget 186
|
||||
#define __NR_msgctl 187
|
||||
#define __NR_msgrcv 188
|
||||
#define __NR_msgsnd 189
|
||||
#define __NR_semget 190
|
||||
#define __NR_semctl 191
|
||||
#define __NR_semop 193
|
||||
#define __NR_shmget 194
|
||||
#define __NR_shmctl 195
|
||||
#define __NR_shmat 196
|
||||
#define __NR_shmdt 197
|
||||
#define __NR_socket 198
|
||||
#define __NR_socketpair 199
|
||||
#define __NR_bind 200
|
||||
#define __NR_listen 201
|
||||
#define __NR_accept 202
|
||||
#define __NR_connect 203
|
||||
#define __NR_getsockname 204
|
||||
#define __NR_getpeername 205
|
||||
#define __NR_sendto 206
|
||||
#define __NR_recvfrom 207
|
||||
#define __NR_setsockopt 208
|
||||
#define __NR_getsockopt 209
|
||||
#define __NR_shutdown 210
|
||||
#define __NR_sendmsg 211
|
||||
#define __NR_recvmsg 212
|
||||
#define __NR_readahead 213
|
||||
#define __NR_brk 214
|
||||
#define __NR_munmap 215
|
||||
#define __NR_mremap 216
|
||||
#define __NR_add_key 217
|
||||
#define __NR_request_key 218
|
||||
#define __NR_keyctl 219
|
||||
#define __NR_clone 220
|
||||
#define __NR_execve 221
|
||||
#define __NR_mmap2 222
|
||||
#define __NR_fadvise64_64 223
|
||||
#define __NR_swapon 224
|
||||
#define __NR_swapoff 225
|
||||
#define __NR_mprotect 226
|
||||
#define __NR_msync 227
|
||||
#define __NR_mlock 228
|
||||
#define __NR_munlock 229
|
||||
#define __NR_mlockall 230
|
||||
#define __NR_munlockall 231
|
||||
#define __NR_mincore 232
|
||||
#define __NR_madvise 233
|
||||
#define __NR_remap_file_pages 234
|
||||
#define __NR_mbind 235
|
||||
#define __NR_get_mempolicy 236
|
||||
#define __NR_set_mempolicy 237
|
||||
#define __NR_migrate_pages 238
|
||||
#define __NR_move_pages 239
|
||||
#define __NR_rt_tgsigqueueinfo 240
|
||||
#define __NR_perf_event_open 241
|
||||
#define __NR_accept4 242
|
||||
#define __NR_arch_specific_syscall 244
|
||||
#define __NR_prlimit64 261
|
||||
#define __NR_fanotify_init 262
|
||||
#define __NR_fanotify_mark 263
|
||||
#define __NR_name_to_handle_at 264
|
||||
#define __NR_open_by_handle_at 265
|
||||
#define __NR_syncfs 267
|
||||
#define __NR_setns 268
|
||||
#define __NR_sendmmsg 269
|
||||
#define __NR_process_vm_readv 270
|
||||
#define __NR_process_vm_writev 271
|
||||
#define __NR_kcmp 272
|
||||
#define __NR_finit_module 273
|
||||
#define __NR_sched_setattr 274
|
||||
#define __NR_sched_getattr 275
|
||||
#define __NR_renameat2 276
|
||||
#define __NR_seccomp 277
|
||||
#define __NR_getrandom 278
|
||||
#define __NR_memfd_create 279
|
||||
#define __NR_bpf 280
|
||||
#define __NR_execveat 281
|
||||
#define __NR_userfaultfd 282
|
||||
#define __NR_membarrier 283
|
||||
#define __NR_mlock2 284
|
||||
#define __NR_copy_file_range 285
|
||||
#define __NR_preadv2 286
|
||||
#define __NR_pwritev2 287
|
||||
#define __NR_pkey_mprotect 288
|
||||
#define __NR_pkey_alloc 289
|
||||
#define __NR_pkey_free 290
|
||||
#define __NR_statx 291
|
||||
#define __NR_rseq 293
|
||||
#define __NR_kexec_file_load 294
|
||||
#define __NR_clock_gettime64 403
|
||||
#define __NR_clock_settime64 404
|
||||
#define __NR_clock_adjtime64 405
|
||||
#define __NR_clock_getres_time64 406
|
||||
#define __NR_clock_nanosleep_time64 407
|
||||
#define __NR_timer_gettime64 408
|
||||
#define __NR_timer_settime64 409
|
||||
#define __NR_timerfd_gettime64 410
|
||||
#define __NR_timerfd_settime64 411
|
||||
#define __NR_utimensat_time64 412
|
||||
#define __NR_pselect6_time64 413
|
||||
#define __NR_ppoll_time64 414
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
#define __NR_recvmmsg_time64 417
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
#define __NR_mq_timedreceive_time64 419
|
||||
#define __NR_semtimedop_time64 420
|
||||
#define __NR_rt_sigtimedwait_time64 421
|
||||
#define __NR_futex_time64 422
|
||||
#define __NR_sched_rr_get_interval_time64 423
|
||||
#define __NR_pidfd_send_signal 424
|
||||
#define __NR_io_uring_setup 425
|
||||
#define __NR_io_uring_enter 426
|
||||
#define __NR_io_uring_register 427
|
||||
#define __NR_open_tree 428
|
||||
#define __NR_move_mount 429
|
||||
#define __NR_fsopen 430
|
||||
#define __NR_fsconfig 431
|
||||
#define __NR_fsmount 432
|
||||
#define __NR_fspick 433
|
||||
#define __NR_pidfd_open 434
|
||||
#define __NR_clone3 435
|
||||
#define __NR_openat2 437
|
||||
#define __NR_pidfd_getfd 438
|
||||
#define __NR_faccessat2 439
|
||||
#define __NR_process_madvise 440
|
||||
#define __NR_epoll_pwait2 441
|
||||
#define __NR_mount_setattr 442
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
#define __NR_futex __NR_futex_time64
|
||||
|
||||
#define __NR_sysriscv __NR_arch_specific_syscall
|
||||
#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
|
||||
6
lib/libc/musl/arch/riscv32/bits/user.h
vendored
Normal file
6
lib/libc/musl/arch/riscv32/bits/user.h
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#include <signal.h>
|
||||
|
||||
#define ELF_NGREG 32
|
||||
#define ELF_NFPREG 33
|
||||
typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
|
||||
typedef union __riscv_mc_fp_state elf_fpregset_t;
|
||||
19
lib/libc/musl/arch/riscv32/crt_arch.h
vendored
Normal file
19
lib/libc/musl/arch/riscv32/crt_arch.h
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
__asm__(
|
||||
".section .sdata,\"aw\"\n"
|
||||
".text\n"
|
||||
".global " START "\n"
|
||||
".type " START ",%function\n"
|
||||
START ":\n"
|
||||
".weak __global_pointer$\n"
|
||||
".hidden __global_pointer$\n"
|
||||
".option push\n"
|
||||
".option norelax\n\t"
|
||||
"lla gp, __global_pointer$\n"
|
||||
".option pop\n\t"
|
||||
"mv a0, sp\n"
|
||||
".weak _DYNAMIC\n"
|
||||
".hidden _DYNAMIC\n\t"
|
||||
"lla a1, _DYNAMIC\n\t"
|
||||
"andi sp, sp, -16\n\t"
|
||||
"tail " START "_c"
|
||||
);
|
||||
0
lib/libc/musl/arch/riscv32/kstat.h
vendored
Normal file
0
lib/libc/musl/arch/riscv32/kstat.h
vendored
Normal file
13
lib/libc/musl/arch/riscv32/pthread_arch.h
vendored
Normal file
13
lib/libc/musl/arch/riscv32/pthread_arch.h
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
static inline uintptr_t __get_tp()
|
||||
{
|
||||
uintptr_t tp;
|
||||
__asm__ __volatile__("mv %0, tp" : "=r"(tp));
|
||||
return tp;
|
||||
}
|
||||
|
||||
#define TLS_ABOVE_TP
|
||||
#define GAP_ABOVE_TP 0
|
||||
|
||||
#define DTP_OFFSET 0x800
|
||||
|
||||
#define MC_PC __gregs[0]
|
||||
22
lib/libc/musl/arch/riscv32/reloc.h
vendored
Normal file
22
lib/libc/musl/arch/riscv32/reloc.h
vendored
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#if defined __riscv_float_abi_soft
|
||||
#define RISCV_FP_SUFFIX "-sf"
|
||||
#elif defined __riscv_float_abi_single
|
||||
#define RISCV_FP_SUFFIX "-sp"
|
||||
#elif defined __riscv_float_abi_double
|
||||
#define RISCV_FP_SUFFIX ""
|
||||
#endif
|
||||
|
||||
#define LDSO_ARCH "riscv32" RISCV_FP_SUFFIX
|
||||
|
||||
#define TPOFF_K 0
|
||||
|
||||
#define REL_SYMBOLIC R_RISCV_32
|
||||
#define REL_PLT R_RISCV_JUMP_SLOT
|
||||
#define REL_RELATIVE R_RISCV_RELATIVE
|
||||
#define REL_COPY R_RISCV_COPY
|
||||
#define REL_DTPMOD R_RISCV_TLS_DTPMOD32
|
||||
#define REL_DTPOFF R_RISCV_TLS_DTPREL32
|
||||
#define REL_TPOFF R_RISCV_TLS_TPREL32
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
"mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" )
|
||||
80
lib/libc/musl/arch/riscv32/syscall_arch.h
vendored
Normal file
80
lib/libc/musl/arch/riscv32/syscall_arch.h
vendored
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
#define __SYSCALL_LL_E(x) \
|
||||
((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
|
||||
((union { long long ll; long l[2]; }){ .ll = x }).l[1]
|
||||
#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))
|
||||
|
||||
#define __asm_syscall(...) \
|
||||
__asm__ __volatile__ ("ecall\n\t" \
|
||||
: "=r"(a0) : __VA_ARGS__ : "memory"); \
|
||||
return a0; \
|
||||
|
||||
static inline long __syscall0(long n)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0");
|
||||
__asm_syscall("r"(a7))
|
||||
}
|
||||
|
||||
static inline long __syscall1(long n, long a)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
__asm_syscall("r"(a7), "0"(a0))
|
||||
}
|
||||
|
||||
static inline long __syscall2(long n, long a, long b)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
register long a1 __asm__("a1") = b;
|
||||
__asm_syscall("r"(a7), "0"(a0), "r"(a1))
|
||||
}
|
||||
|
||||
static inline long __syscall3(long n, long a, long b, long c)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
register long a1 __asm__("a1") = b;
|
||||
register long a2 __asm__("a2") = c;
|
||||
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2))
|
||||
}
|
||||
|
||||
static inline long __syscall4(long n, long a, long b, long c, long d)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
register long a1 __asm__("a1") = b;
|
||||
register long a2 __asm__("a2") = c;
|
||||
register long a3 __asm__("a3") = d;
|
||||
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3))
|
||||
}
|
||||
|
||||
static inline long __syscall5(long n, long a, long b, long c, long d, long e)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
register long a1 __asm__("a1") = b;
|
||||
register long a2 __asm__("a2") = c;
|
||||
register long a3 __asm__("a3") = d;
|
||||
register long a4 __asm__("a4") = e;
|
||||
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4))
|
||||
}
|
||||
|
||||
static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
|
||||
{
|
||||
register long a7 __asm__("a7") = n;
|
||||
register long a0 __asm__("a0") = a;
|
||||
register long a1 __asm__("a1") = b;
|
||||
register long a2 __asm__("a2") = c;
|
||||
register long a3 __asm__("a3") = d;
|
||||
register long a4 __asm__("a4") = e;
|
||||
register long a5 __asm__("a5") = f;
|
||||
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5))
|
||||
}
|
||||
|
||||
#define VDSO_USEFUL
|
||||
/* We don't have a clock_gettime function.
|
||||
#define VDSO_CGT_SYM "__vdso_clock_gettime"
|
||||
#define VDSO_CGT_VER "LINUX_2.6" */
|
||||
|
||||
#define IPC_64 0
|
||||
2
lib/libc/musl/arch/riscv64/bits/signal.h
vendored
2
lib/libc/musl/arch/riscv64/bits/signal.h
vendored
|
|
@ -41,7 +41,9 @@ typedef struct mcontext_t {
|
|||
#define REG_SP 2
|
||||
#define REG_TP 4
|
||||
#define REG_S0 8
|
||||
#define REG_S1 9
|
||||
#define REG_A0 10
|
||||
#define REG_S2 18
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
|
|
|
|||
5
lib/libc/musl/arch/riscv64/bits/syscall.h.in
vendored
5
lib/libc/musl/arch/riscv64/bits/syscall.h.in
vendored
|
|
@ -299,6 +299,11 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
#define __NR_sysriscv __NR_arch_specific_syscall
|
||||
#define __NR_riscv_flush_icache (__NR_sysriscv + 15)
|
||||
|
|
|
|||
1
lib/libc/musl/arch/riscv64/reloc.h
vendored
1
lib/libc/musl/arch/riscv64/reloc.h
vendored
|
|
@ -17,6 +17,7 @@
|
|||
#define REL_DTPMOD R_RISCV_TLS_DTPMOD64
|
||||
#define REL_DTPOFF R_RISCV_TLS_DTPREL64
|
||||
#define REL_TPOFF R_RISCV_TLS_TPREL64
|
||||
#define REL_TLSDESC R_RISCV_TLSDESC
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
"mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" )
|
||||
|
|
|
|||
6
lib/libc/musl/arch/s390x/bits/syscall.h.in
vendored
6
lib/libc/musl/arch/s390x/bits/syscall.h.in
vendored
|
|
@ -362,4 +362,10 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_memfd_secret 447
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
6
lib/libc/musl/arch/x86_64/bits/syscall.h.in
vendored
6
lib/libc/musl/arch/x86_64/bits/syscall.h.in
vendored
|
|
@ -355,4 +355,10 @@
|
|||
#define __NR_landlock_create_ruleset 444
|
||||
#define __NR_landlock_add_rule 445
|
||||
#define __NR_landlock_restrict_self 446
|
||||
#define __NR_memfd_secret 447
|
||||
#define __NR_process_mrelease 448
|
||||
#define __NR_futex_waitv 449
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
#define __NR_cachestat 451
|
||||
#define __NR_fchmodat2 452
|
||||
|
||||
|
|
|
|||
127
lib/libc/musl/include/elf.h
vendored
127
lib/libc/musl/include/elf.h
vendored
|
|
@ -315,7 +315,8 @@ typedef struct {
|
|||
#define EM_RISCV 243
|
||||
#define EM_BPF 247
|
||||
#define EM_CSKY 252
|
||||
#define EM_NUM 253
|
||||
#define EM_LOONGARCH 258
|
||||
#define EM_NUM 259
|
||||
|
||||
#define EM_ALPHA 0x9026
|
||||
|
||||
|
|
@ -558,6 +559,11 @@ typedef struct {
|
|||
|
||||
|
||||
|
||||
typedef Elf32_Word Elf32_Relr;
|
||||
typedef Elf64_Xword Elf64_Relr;
|
||||
|
||||
|
||||
|
||||
#define ELF32_R_SYM(val) ((val) >> 8)
|
||||
#define ELF32_R_TYPE(val) ((val) & 0xff)
|
||||
#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
|
||||
|
|
@ -698,7 +704,14 @@ typedef struct {
|
|||
#define NT_MIPS_DSP 0x800
|
||||
#define NT_MIPS_FP_MODE 0x801
|
||||
#define NT_MIPS_MSA 0x802
|
||||
#define NT_RISCV_CSR 0x900
|
||||
#define NT_RISCV_VECTOR 0x901
|
||||
#define NT_VERSION 1
|
||||
#define NT_LOONGARCH_CPUCFG 0xa00
|
||||
#define NT_LOONGARCH_CSR 0xa01
|
||||
#define NT_LOONGARCH_LSX 0xa02
|
||||
#define NT_LOONGARCH_LASX 0xa03
|
||||
#define NT_LOONGARCH_LBT 0xa04
|
||||
|
||||
|
||||
|
||||
|
|
@ -3249,6 +3262,7 @@ enum
|
|||
#define R_RISCV_TLS_DTPREL64 9
|
||||
#define R_RISCV_TLS_TPREL32 10
|
||||
#define R_RISCV_TLS_TPREL64 11
|
||||
#define R_RISCV_TLSDESC 12
|
||||
|
||||
#define R_RISCV_BRANCH 16
|
||||
#define R_RISCV_JAL 17
|
||||
|
|
@ -3275,16 +3289,11 @@ enum
|
|||
#define R_RISCV_SUB16 38
|
||||
#define R_RISCV_SUB32 39
|
||||
#define R_RISCV_SUB64 40
|
||||
#define R_RISCV_GNU_VTINHERIT 41
|
||||
#define R_RISCV_GNU_VTENTRY 42
|
||||
#define R_RISCV_GOT32_PCREL 41
|
||||
#define R_RISCV_ALIGN 43
|
||||
#define R_RISCV_RVC_BRANCH 44
|
||||
#define R_RISCV_RVC_JUMP 45
|
||||
#define R_RISCV_RVC_LUI 46
|
||||
#define R_RISCV_GPREL_I 47
|
||||
#define R_RISCV_GPREL_S 48
|
||||
#define R_RISCV_TPREL_I 49
|
||||
#define R_RISCV_TPREL_S 50
|
||||
#define R_RISCV_RELAX 51
|
||||
#define R_RISCV_SUB6 52
|
||||
#define R_RISCV_SET6 53
|
||||
|
|
@ -3292,6 +3301,110 @@ enum
|
|||
#define R_RISCV_SET16 55
|
||||
#define R_RISCV_SET32 56
|
||||
#define R_RISCV_32_PCREL 57
|
||||
#define R_RISCV_IRELATIVE 58
|
||||
#define R_RISCV_PLT32 59
|
||||
#define R_RISCV_SET_ULEB128 60
|
||||
#define R_RISCV_SUB_ULEB128 61
|
||||
#define R_RISCV_TLSDESC_HI20 62
|
||||
#define R_RISCV_TLSDESC_LOAD_LO12 63
|
||||
#define R_RISCV_TLSDESC_ADD_LO12 64
|
||||
#define R_RISCV_TLSDESC_CALL 65
|
||||
|
||||
#define EF_LARCH_ABI_MODIFIER_MASK 0x07
|
||||
#define EF_LARCH_ABI_SOFT_FLOAT 0x01
|
||||
#define EF_LARCH_ABI_SINGLE_FLOAT 0x02
|
||||
#define EF_LARCH_ABI_DOUBLE_FLOAT 0x03
|
||||
#define EF_LARCH_OBJABI_V1 0x40
|
||||
|
||||
#define R_LARCH_NONE 0
|
||||
#define R_LARCH_32 1
|
||||
#define R_LARCH_64 2
|
||||
#define R_LARCH_RELATIVE 3
|
||||
#define R_LARCH_COPY 4
|
||||
#define R_LARCH_JUMP_SLOT 5
|
||||
#define R_LARCH_TLS_DTPMOD32 6
|
||||
#define R_LARCH_TLS_DTPMOD64 7
|
||||
#define R_LARCH_TLS_DTPREL32 8
|
||||
#define R_LARCH_TLS_DTPREL64 9
|
||||
#define R_LARCH_TLS_TPREL32 10
|
||||
#define R_LARCH_TLS_TPREL64 11
|
||||
#define R_LARCH_IRELATIVE 12
|
||||
#define R_LARCH_MARK_LA 20
|
||||
#define R_LARCH_MARK_PCREL 21
|
||||
#define R_LARCH_SOP_PUSH_PCREL 22
|
||||
#define R_LARCH_SOP_PUSH_ABSOLUTE 23
|
||||
#define R_LARCH_SOP_PUSH_DUP 24
|
||||
#define R_LARCH_SOP_PUSH_GPREL 25
|
||||
#define R_LARCH_SOP_PUSH_TLS_TPREL 26
|
||||
#define R_LARCH_SOP_PUSH_TLS_GOT 27
|
||||
#define R_LARCH_SOP_PUSH_TLS_GD 28
|
||||
#define R_LARCH_SOP_PUSH_PLT_PCREL 29
|
||||
#define R_LARCH_SOP_ASSERT 30
|
||||
#define R_LARCH_SOP_NOT 31
|
||||
#define R_LARCH_SOP_SUB 32
|
||||
#define R_LARCH_SOP_SL 33
|
||||
#define R_LARCH_SOP_SR 34
|
||||
#define R_LARCH_SOP_ADD 35
|
||||
#define R_LARCH_SOP_AND 36
|
||||
#define R_LARCH_SOP_IF_ELSE 37
|
||||
#define R_LARCH_SOP_POP_32_S_10_5 38
|
||||
#define R_LARCH_SOP_POP_32_U_10_12 39
|
||||
#define R_LARCH_SOP_POP_32_S_10_12 40
|
||||
#define R_LARCH_SOP_POP_32_S_10_16 41
|
||||
#define R_LARCH_SOP_POP_32_S_10_16_S2 42
|
||||
#define R_LARCH_SOP_POP_32_S_5_20 43
|
||||
#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2 44
|
||||
#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45
|
||||
#define R_LARCH_SOP_POP_32_U 46
|
||||
#define R_LARCH_ADD8 47
|
||||
#define R_LARCH_ADD16 48
|
||||
#define R_LARCH_ADD24 49
|
||||
#define R_LARCH_ADD32 50
|
||||
#define R_LARCH_ADD64 51
|
||||
#define R_LARCH_SUB8 52
|
||||
#define R_LARCH_SUB16 53
|
||||
#define R_LARCH_SUB24 54
|
||||
#define R_LARCH_SUB32 55
|
||||
#define R_LARCH_SUB64 56
|
||||
#define R_LARCH_GNU_VTINHERIT 57
|
||||
#define R_LARCH_GNU_VTENTRY 58
|
||||
#define R_LARCH_B16 64
|
||||
#define R_LARCH_B21 65
|
||||
#define R_LARCH_B26 66
|
||||
#define R_LARCH_ABS_HI20 67
|
||||
#define R_LARCH_ABS_LO12 68
|
||||
#define R_LARCH_ABS64_LO20 69
|
||||
#define R_LARCH_ABS64_HI12 70
|
||||
#define R_LARCH_PCALA_HI20 71
|
||||
#define R_LARCH_PCALA_LO12 72
|
||||
#define R_LARCH_PCALA64_LO20 73
|
||||
#define R_LARCH_PCALA64_HI12 74
|
||||
#define R_LARCH_GOT_PC_HI20 75
|
||||
#define R_LARCH_GOT_PC_LO12 76
|
||||
#define R_LARCH_GOT64_PC_LO20 77
|
||||
#define R_LARCH_GOT64_PC_HI12 78
|
||||
#define R_LARCH_GOT_HI20 79
|
||||
#define R_LARCH_GOT_LO12 80
|
||||
#define R_LARCH_GOT64_LO20 81
|
||||
#define R_LARCH_GOT64_HI12 82
|
||||
#define R_LARCH_TLS_LE_HI20 83
|
||||
#define R_LARCH_TLS_LE_LO12 84
|
||||
#define R_LARCH_TLS_LE64_LO20 85
|
||||
#define R_LARCH_TLS_LE64_HI12 86
|
||||
#define R_LARCH_TLS_IE_PC_HI20 87
|
||||
#define R_LARCH_TLS_IE_PC_LO12 88
|
||||
#define R_LARCH_TLS_IE64_PC_LO20 89
|
||||
#define R_LARCH_TLS_IE64_PC_HI12 90
|
||||
#define R_LARCH_TLS_IE_HI20 91
|
||||
#define R_LARCH_TLS_IE_LO12 92
|
||||
#define R_LARCH_TLS_IE64_LO20 93
|
||||
#define R_LARCH_TLS_IE64_HI12 94
|
||||
#define R_LARCH_TLS_LD_PC_HI20 95
|
||||
#define R_LARCH_TLS_LD_HI20 96
|
||||
#define R_LARCH_TLS_GD_PC_HI20 97
|
||||
#define R_LARCH_TLS_GD_HI20 98
|
||||
#define R_LARCH_32_PCREL 99
|
||||
#define R_LARCH_RELAX 100
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
4
lib/libc/musl/include/fcntl.h
vendored
4
lib/libc/musl/include/fcntl.h
vendored
|
|
@ -184,7 +184,6 @@ struct f_owner_ex {
|
|||
#define SPLICE_F_MORE 4
|
||||
#define SPLICE_F_GIFT 8
|
||||
int fallocate(int, int, off_t, off_t);
|
||||
#define fallocate64 fallocate
|
||||
int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
|
||||
int open_by_handle_at(int, struct file_handle *, int);
|
||||
ssize_t readahead(int, off_t, size_t);
|
||||
|
|
@ -207,6 +206,9 @@ ssize_t tee(int, int, size_t, unsigned);
|
|||
#define posix_fadvise64 posix_fadvise
|
||||
#define posix_fallocate64 posix_fallocate
|
||||
#define off64_t off_t
|
||||
#if defined(_GNU_SOURCE)
|
||||
#define fallocate64 fallocate
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
4
lib/libc/musl/include/poll.h
vendored
4
lib/libc/musl/include/poll.h
vendored
|
|
@ -36,7 +36,7 @@ struct pollfd {
|
|||
|
||||
int poll (struct pollfd *, nfds_t, int);
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
#define __NEED_time_t
|
||||
#define __NEED_struct_timespec
|
||||
#define __NEED_sigset_t
|
||||
|
|
@ -45,7 +45,7 @@ int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *);
|
|||
#endif
|
||||
|
||||
#if _REDIR_TIME64
|
||||
#ifdef _GNU_SOURCE
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
__REDIR(ppoll, __ppoll_time64);
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
5
lib/libc/musl/include/stdc-predef.h
vendored
5
lib/libc/musl/include/stdc-predef.h
vendored
|
|
@ -7,7 +7,12 @@
|
|||
#define __STDC_IEC_559__ 1
|
||||
#endif
|
||||
|
||||
#if !defined(__STDC_UTF_16__)
|
||||
#define __STDC_UTF_16__ 1
|
||||
#endif
|
||||
|
||||
#if !defined(__STDC_UTF_32__)
|
||||
#define __STDC_UTF_32__ 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
3
lib/libc/musl/include/string.h
vendored
3
lib/libc/musl/include/string.h
vendored
|
|
@ -95,9 +95,6 @@ char *strchrnul(const char *, int);
|
|||
char *strcasestr(const char *, const char *);
|
||||
void *memrchr(const void *, int, size_t);
|
||||
void *mempcpy(void *, const void *, size_t);
|
||||
#ifndef __cplusplus
|
||||
char *basename();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
55
lib/libc/musl/include/sys/stat.h
vendored
55
lib/libc/musl/include/sys/stat.h
vendored
|
|
@ -18,6 +18,13 @@ extern "C" {
|
|||
#define __NEED_blkcnt_t
|
||||
#define __NEED_struct_timespec
|
||||
|
||||
#ifdef _GNU_SOURCE
|
||||
#define __NEED_int64_t
|
||||
#define __NEED_uint64_t
|
||||
#define __NEED_uint32_t
|
||||
#define __NEED_uint16_t
|
||||
#endif
|
||||
|
||||
#include <bits/alltypes.h>
|
||||
|
||||
#include <bits/stat.h>
|
||||
|
|
@ -98,6 +105,54 @@ int lchmod(const char *, mode_t);
|
|||
#define S_IEXEC S_IXUSR
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE)
|
||||
#define STATX_TYPE 1U
|
||||
#define STATX_MODE 2U
|
||||
#define STATX_NLINK 4U
|
||||
#define STATX_UID 8U
|
||||
#define STATX_GID 0x10U
|
||||
#define STATX_ATIME 0x20U
|
||||
#define STATX_MTIME 0x40U
|
||||
#define STATX_CTIME 0x80U
|
||||
#define STATX_INO 0x100U
|
||||
#define STATX_SIZE 0x200U
|
||||
#define STATX_BLOCKS 0x400U
|
||||
#define STATX_BASIC_STATS 0x7ffU
|
||||
#define STATX_BTIME 0x800U
|
||||
#define STATX_ALL 0xfffU
|
||||
|
||||
struct statx_timestamp {
|
||||
int64_t tv_sec;
|
||||
uint32_t tv_nsec, __pad;
|
||||
};
|
||||
|
||||
struct statx {
|
||||
uint32_t stx_mask;
|
||||
uint32_t stx_blksize;
|
||||
uint64_t stx_attributes;
|
||||
uint32_t stx_nlink;
|
||||
uint32_t stx_uid;
|
||||
uint32_t stx_gid;
|
||||
uint16_t stx_mode;
|
||||
uint16_t __pad0[1];
|
||||
uint64_t stx_ino;
|
||||
uint64_t stx_size;
|
||||
uint64_t stx_blocks;
|
||||
uint64_t stx_attributes_mask;
|
||||
struct statx_timestamp stx_atime;
|
||||
struct statx_timestamp stx_btime;
|
||||
struct statx_timestamp stx_ctime;
|
||||
struct statx_timestamp stx_mtime;
|
||||
uint32_t stx_rdev_major;
|
||||
uint32_t stx_rdev_minor;
|
||||
uint32_t stx_dev_major;
|
||||
uint32_t stx_dev_minor;
|
||||
uint64_t __pad1[14];
|
||||
};
|
||||
|
||||
int statx(int, const char *__restrict, int, unsigned, struct statx *__restrict);
|
||||
#endif
|
||||
|
||||
#if defined(_LARGEFILE64_SOURCE)
|
||||
#define stat64 stat
|
||||
#define fstat64 fstat
|
||||
|
|
|
|||
3
lib/libc/musl/include/sys/statvfs.h
vendored
3
lib/libc/musl/include/sys/statvfs.h
vendored
|
|
@ -23,7 +23,8 @@ struct statvfs {
|
|||
unsigned long f_fsid;
|
||||
#endif
|
||||
unsigned long f_flag, f_namemax;
|
||||
int __reserved[6];
|
||||
unsigned int f_type;
|
||||
int __reserved[5];
|
||||
};
|
||||
|
||||
int statvfs (const char *__restrict, struct statvfs *__restrict);
|
||||
|
|
|
|||
7
lib/libc/musl/include/sys/uio.h
vendored
7
lib/libc/musl/include/sys/uio.h
vendored
|
|
@ -39,6 +39,13 @@ ssize_t pwritev (int, const struct iovec *, int, off_t);
|
|||
#ifdef _GNU_SOURCE
|
||||
ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
|
||||
ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
|
||||
ssize_t preadv2 (int, const struct iovec *, int, off_t, int);
|
||||
ssize_t pwritev2 (int, const struct iovec *, int, off_t, int);
|
||||
#define RWF_HIPRI 0x00000001
|
||||
#define RWF_DSYNC 0x00000002
|
||||
#define RWF_SYNC 0x00000004
|
||||
#define RWF_NOWAIT 0x00000008
|
||||
#define RWF_APPEND 0x00000010
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
78
lib/libc/musl/src/fenv/loongarch64/fenv.S
vendored
Normal file
78
lib/libc/musl/src/fenv/loongarch64/fenv.S
vendored
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#ifndef __loongarch_soft_float
|
||||
|
||||
#ifdef BROKEN_LOONGARCH_FCSR_ASM
|
||||
#define FCSR $r0
|
||||
#else
|
||||
#define FCSR $fcsr0
|
||||
#endif
|
||||
|
||||
.global feclearexcept
|
||||
.type feclearexcept,@function
|
||||
feclearexcept:
|
||||
li.w $t0, 0x1f0000
|
||||
and $a0, $a0, $t0
|
||||
movfcsr2gr $t1, FCSR
|
||||
andn $t1, $t1, $a0
|
||||
movgr2fcsr FCSR, $t1
|
||||
li.w $a0, 0
|
||||
jr $ra
|
||||
|
||||
.global feraiseexcept
|
||||
.type feraiseexcept,@function
|
||||
feraiseexcept:
|
||||
li.w $t0, 0x1f0000
|
||||
and $a0, $a0, $t0
|
||||
movfcsr2gr $t1, FCSR
|
||||
or $t1, $t1, $a0
|
||||
movgr2fcsr FCSR, $t1
|
||||
li.w $a0, 0
|
||||
jr $ra
|
||||
|
||||
.global fetestexcept
|
||||
.type fetestexcept,@function
|
||||
fetestexcept:
|
||||
li.w $t0, 0x1f0000
|
||||
and $a0, $a0, $t0
|
||||
movfcsr2gr $t1, FCSR
|
||||
and $a0, $t1, $a0
|
||||
jr $ra
|
||||
|
||||
.global fegetround
|
||||
.type fegetround,@function
|
||||
fegetround:
|
||||
movfcsr2gr $t0, FCSR
|
||||
andi $a0, $t0, 0x300
|
||||
jr $ra
|
||||
|
||||
.global __fesetround
|
||||
.hidden __fesetround
|
||||
.type __fesetround,@function
|
||||
__fesetround:
|
||||
li.w $t0, 0x300
|
||||
and $a0, $a0, $t0
|
||||
movfcsr2gr $t1, FCSR
|
||||
andn $t1, $t1, $t0
|
||||
or $t1, $t1, $a0
|
||||
movgr2fcsr FCSR, $t1
|
||||
li.w $a0, 0
|
||||
jr $ra
|
||||
|
||||
.global fegetenv
|
||||
.type fegetenv,@function
|
||||
fegetenv:
|
||||
movfcsr2gr $t0, FCSR
|
||||
st.w $t0, $a0, 0
|
||||
li.w $a0, 0
|
||||
jr $ra
|
||||
|
||||
.global fesetenv
|
||||
.type fesetenv,@function
|
||||
fesetenv:
|
||||
addi.d $t0, $a0, 1
|
||||
beq $t0, $r0, 1f
|
||||
ld.w $t0, $a0, 0
|
||||
1: movgr2fcsr FCSR, $t0
|
||||
li.w $a0, 0
|
||||
jr $ra
|
||||
|
||||
#endif
|
||||
3
lib/libc/musl/src/fenv/riscv32/fenv-sf.c
vendored
Normal file
3
lib/libc/musl/src/fenv/riscv32/fenv-sf.c
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#ifndef __riscv_flen
|
||||
#include "../fenv.c"
|
||||
#endif
|
||||
56
lib/libc/musl/src/fenv/riscv32/fenv.S
vendored
Normal file
56
lib/libc/musl/src/fenv/riscv32/fenv.S
vendored
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#ifdef __riscv_flen
|
||||
|
||||
.global feclearexcept
|
||||
.type feclearexcept, %function
|
||||
feclearexcept:
|
||||
csrc fflags, a0
|
||||
li a0, 0
|
||||
ret
|
||||
|
||||
.global feraiseexcept
|
||||
.type feraiseexcept, %function
|
||||
feraiseexcept:
|
||||
csrs fflags, a0
|
||||
li a0, 0
|
||||
ret
|
||||
|
||||
.global fetestexcept
|
||||
.type fetestexcept, %function
|
||||
fetestexcept:
|
||||
frflags t0
|
||||
and a0, t0, a0
|
||||
ret
|
||||
|
||||
.global fegetround
|
||||
.type fegetround, %function
|
||||
fegetround:
|
||||
frrm a0
|
||||
ret
|
||||
|
||||
.global __fesetround
|
||||
.type __fesetround, %function
|
||||
__fesetround:
|
||||
fsrm t0, a0
|
||||
li a0, 0
|
||||
ret
|
||||
|
||||
.global fegetenv
|
||||
.type fegetenv, %function
|
||||
fegetenv:
|
||||
frcsr t0
|
||||
sw t0, 0(a0)
|
||||
li a0, 0
|
||||
ret
|
||||
|
||||
.global fesetenv
|
||||
.type fesetenv, %function
|
||||
fesetenv:
|
||||
li t2, -1
|
||||
li t1, 0
|
||||
beq a0, t2, 1f
|
||||
lw t1, 0(a0)
|
||||
1: fscsr t1
|
||||
li a0, 0
|
||||
ret
|
||||
|
||||
#endif
|
||||
4
lib/libc/musl/src/internal/dynlink.h
vendored
4
lib/libc/musl/src/internal/dynlink.h
vendored
|
|
@ -73,6 +73,10 @@ struct fdpic_dummy_loadmap {
|
|||
#define DL_NOMMU_SUPPORT 0
|
||||
#endif
|
||||
|
||||
#ifndef TLSDESC_BACKWARDS
|
||||
#define TLSDESC_BACKWARDS 0
|
||||
#endif
|
||||
|
||||
#if !DL_FDPIC
|
||||
#define IS_RELATIVE(x,s) ( \
|
||||
(R_TYPE(x) == REL_RELATIVE) || \
|
||||
|
|
|
|||
55
lib/libc/musl/src/internal/emulate_wait4.c
vendored
Normal file
55
lib/libc/musl/src/internal/emulate_wait4.c
vendored
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
#include <sys/wait.h>
|
||||
#include "syscall.h"
|
||||
|
||||
#ifndef SYS_wait4
|
||||
hidden long __emulate_wait4(int pid, int *status, int options, void *kru, int cp)
|
||||
{
|
||||
idtype_t t;
|
||||
int r;
|
||||
siginfo_t info;
|
||||
|
||||
info.si_pid = 0;
|
||||
if (pid < -1) {
|
||||
t = P_PGID;
|
||||
pid = -pid;
|
||||
} else if (pid == -1) {
|
||||
t = P_ALL;
|
||||
} else if (pid == 0) {
|
||||
t = P_PGID;
|
||||
} else {
|
||||
t = P_PID;
|
||||
}
|
||||
|
||||
if (cp) r = __syscall_cp(SYS_waitid, t, pid, &info, options|WEXITED, kru);
|
||||
else r = __syscall(SYS_waitid, t, pid, &info, options|WEXITED, kru);
|
||||
|
||||
if (r<0) return r;
|
||||
|
||||
if (info.si_pid && status) {
|
||||
int sw=0;
|
||||
switch (info.si_code) {
|
||||
case CLD_CONTINUED:
|
||||
sw = 0xffff;
|
||||
break;
|
||||
case CLD_DUMPED:
|
||||
sw = info.si_status&0x7f | 0x80;
|
||||
break;
|
||||
case CLD_EXITED:
|
||||
sw = (info.si_status&0xff) << 8;
|
||||
break;
|
||||
case CLD_KILLED:
|
||||
sw = info.si_status&0x7f;
|
||||
break;
|
||||
case CLD_STOPPED:
|
||||
case CLD_TRAPPED:
|
||||
/* see ptrace(2); the high bits of si_status can contain */
|
||||
/* PTRACE_EVENT_ values which must be preserved */
|
||||
sw = (info.si_status << 8) + 0x7f;
|
||||
break;
|
||||
}
|
||||
*status = sw;
|
||||
}
|
||||
|
||||
return info.si_pid;
|
||||
}
|
||||
#endif
|
||||
2
lib/libc/musl/src/internal/fork_impl.h
vendored
2
lib/libc/musl/src/internal/fork_impl.h
vendored
|
|
@ -17,3 +17,5 @@ extern hidden volatile int *const __vmlock_lockptr;
|
|||
hidden void __malloc_atfork(int);
|
||||
hidden void __ldso_atfork(int);
|
||||
hidden void __pthread_key_atfork(int);
|
||||
|
||||
hidden void __post_Fork(int);
|
||||
|
|
|
|||
12
lib/libc/musl/src/internal/syscall.h
vendored
12
lib/libc/musl/src/internal/syscall.h
vendored
|
|
@ -391,6 +391,18 @@ static inline long __alt_socketcall(int sys, int sock, int cp, syscall_arg_t a,
|
|||
#define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp,,__VA_ARGS__)
|
||||
#define sys_open_cp(...) __syscall_ret(__sys_open_cp(__VA_ARGS__))
|
||||
|
||||
#ifdef SYS_wait4
|
||||
#define __sys_wait4(a,b,c,d) __syscall(SYS_wait4,a,b,c,d)
|
||||
#define __sys_wait4_cp(a,b,c,d) __syscall_cp(SYS_wait4,a,b,c,d)
|
||||
#else
|
||||
hidden long __emulate_wait4(int, int *, int, void *, int);
|
||||
#define __sys_wait4(a,b,c,d) __emulate_wait4(a,b,c,d,0)
|
||||
#define __sys_wait4_cp(a,b,c,d) __emulate_wait4(a,b,c,d,1)
|
||||
#endif
|
||||
|
||||
#define sys_wait4(a,b,c,d) __syscall_ret(__sys_wait4(a,b,c,d))
|
||||
#define sys_wait4_cp(a,b,c,d) __syscall_ret(__sys_wait4_cp(a,b,c,d))
|
||||
|
||||
hidden void __procfdname(char __buf[static 15+3*sizeof(int)], unsigned);
|
||||
|
||||
hidden void *__vdsosym(const char *, const char *);
|
||||
|
|
|
|||
2
lib/libc/musl/src/internal/version.h
vendored
2
lib/libc/musl/src/internal/version.h
vendored
|
|
@ -1 +1 @@
|
|||
#define VERSION "1.2.4"
|
||||
#define VERSION "1.2.5"
|
||||
|
|
|
|||
7
lib/libc/musl/src/ldso/loongarch64/dlsym.s
vendored
Normal file
7
lib/libc/musl/src/ldso/loongarch64/dlsym.s
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
.global dlsym
|
||||
.hidden __dlsym
|
||||
.type dlsym,@function
|
||||
dlsym:
|
||||
move $a2, $ra
|
||||
la.global $t0, __dlsym
|
||||
jr $t0
|
||||
6
lib/libc/musl/src/ldso/riscv32/dlsym.s
vendored
Normal file
6
lib/libc/musl/src/ldso/riscv32/dlsym.s
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
.global dlsym
|
||||
.hidden __dlsym
|
||||
.type dlsym, %function
|
||||
dlsym:
|
||||
mv a2, ra
|
||||
tail __dlsym
|
||||
32
lib/libc/musl/src/ldso/riscv64/tlsdesc.s
vendored
Normal file
32
lib/libc/musl/src/ldso/riscv64/tlsdesc.s
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
.text
|
||||
.global __tlsdesc_static
|
||||
.hidden __tlsdesc_static
|
||||
.type __tlsdesc_static,%function
|
||||
__tlsdesc_static:
|
||||
ld a0,8(a0)
|
||||
jr t0
|
||||
|
||||
.global __tlsdesc_dynamic
|
||||
.hidden __tlsdesc_dynamic
|
||||
.type __tlsdesc_dynamic,%function
|
||||
__tlsdesc_dynamic:
|
||||
add sp,sp,-16
|
||||
sd t1,(sp)
|
||||
sd t2,8(sp)
|
||||
|
||||
ld t2,-8(tp) # t2=dtv
|
||||
|
||||
ld a0,8(a0) # a0=&{modidx,off}
|
||||
ld t1,8(a0) # t1=off
|
||||
ld a0,(a0) # a0=modidx
|
||||
sll a0,a0,3 # a0=8*modidx
|
||||
|
||||
add a0,a0,t2 # a0=dtv+8*modidx
|
||||
ld a0,(a0) # a0=dtv[modidx]
|
||||
add a0,a0,t1 # a0=dtv[modidx]+off
|
||||
sub a0,a0,tp # a0=dtv[modidx]+off-tp
|
||||
|
||||
ld t1,(sp)
|
||||
ld t2,8(sp)
|
||||
add sp,sp,16
|
||||
jr t0
|
||||
2
lib/libc/musl/src/ldso/sh/dlsym.s
vendored
2
lib/libc/musl/src/ldso/sh/dlsym.s
vendored
|
|
@ -5,7 +5,7 @@
|
|||
dlsym:
|
||||
mov.l L1, r0
|
||||
1: braf r0
|
||||
mov.l @r15, r6
|
||||
sts pr, r6
|
||||
|
||||
.align 2
|
||||
L1: .long __dlsym@PLT-(1b+4-.)
|
||||
|
|
|
|||
3
lib/libc/musl/src/linux/cache.c
vendored
3
lib/libc/musl/src/linux/cache.c
vendored
|
|
@ -21,7 +21,7 @@ weak_alias(__cachectl, cachectl);
|
|||
#ifdef SYS_riscv_flush_icache
|
||||
|
||||
#define VDSO_FLUSH_ICACHE_SYM "__vdso_flush_icache"
|
||||
#define VDSO_FLUSH_ICACHE_VER "LINUX_4.5"
|
||||
#define VDSO_FLUSH_ICACHE_VER "LINUX_4.15"
|
||||
|
||||
static void *volatile vdso_func;
|
||||
|
||||
|
|
@ -45,6 +45,7 @@ int __riscv_flush_icache(void *start, void *end, unsigned long int flags)
|
|||
if (!r) return r;
|
||||
if (r != -ENOSYS) return __syscall_ret(r);
|
||||
}
|
||||
return syscall(SYS_riscv_flush_icache, start, end, flags);
|
||||
}
|
||||
weak_alias(__riscv_flush_icache, riscv_flush_icache);
|
||||
#endif
|
||||
|
|
|
|||
56
lib/libc/musl/src/linux/clone.c
vendored
56
lib/libc/musl/src/linux/clone.c
vendored
|
|
@ -4,18 +4,62 @@
|
|||
#include <sched.h>
|
||||
#include "pthread_impl.h"
|
||||
#include "syscall.h"
|
||||
#include "lock.h"
|
||||
#include "fork_impl.h"
|
||||
|
||||
struct clone_start_args {
|
||||
int (*func)(void *);
|
||||
void *arg;
|
||||
sigset_t sigmask;
|
||||
};
|
||||
|
||||
static int clone_start(void *arg)
|
||||
{
|
||||
struct clone_start_args *csa = arg;
|
||||
__post_Fork(0);
|
||||
__restore_sigs(&csa->sigmask);
|
||||
return csa->func(csa->arg);
|
||||
}
|
||||
|
||||
int clone(int (*func)(void *), void *stack, int flags, void *arg, ...)
|
||||
{
|
||||
struct clone_start_args csa;
|
||||
va_list ap;
|
||||
pid_t *ptid, *ctid;
|
||||
void *tls;
|
||||
pid_t *ptid = 0, *ctid = 0;
|
||||
void *tls = 0;
|
||||
|
||||
/* Flags that produce an invalid thread/TLS state are disallowed. */
|
||||
int badflags = CLONE_THREAD | CLONE_SETTLS | CLONE_CHILD_CLEARTID;
|
||||
|
||||
if ((flags & badflags) || !stack)
|
||||
return __syscall_ret(-EINVAL);
|
||||
|
||||
va_start(ap, arg);
|
||||
ptid = va_arg(ap, pid_t *);
|
||||
tls = va_arg(ap, void *);
|
||||
ctid = va_arg(ap, pid_t *);
|
||||
if (flags & (CLONE_PIDFD | CLONE_PARENT_SETTID | CLONE_CHILD_SETTID))
|
||||
ptid = va_arg(ap, pid_t *);
|
||||
if (flags & CLONE_CHILD_SETTID) {
|
||||
tls = va_arg(ap, void *);
|
||||
ctid = va_arg(ap, pid_t *);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid));
|
||||
/* If CLONE_VM is used, it's impossible to give the child a consistent
|
||||
* thread structure. In this case, the best we can do is assume the
|
||||
* caller is content with an extremely restrictive execution context
|
||||
* like the one vfork() would provide. */
|
||||
if (flags & CLONE_VM) return __syscall_ret(
|
||||
__clone(func, stack, flags, arg, ptid, tls, ctid));
|
||||
|
||||
__block_all_sigs(&csa.sigmask);
|
||||
LOCK(__abort_lock);
|
||||
|
||||
/* Setup the a wrapper start function for the child process to do
|
||||
* mimic _Fork in producing a consistent execution state. */
|
||||
csa.func = func;
|
||||
csa.arg = arg;
|
||||
int ret = __clone(clone_start, stack, flags, &csa, ptid, tls, ctid);
|
||||
|
||||
__post_Fork(ret);
|
||||
__restore_sigs(&csa.sigmask);
|
||||
return __syscall_ret(ret);
|
||||
}
|
||||
|
|
|
|||
17
lib/libc/musl/src/linux/preadv2.c
vendored
Normal file
17
lib/libc/musl/src/linux/preadv2.c
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
#include "syscall.h"
|
||||
|
||||
ssize_t preadv2(int fd, const struct iovec *iov, int count, off_t ofs, int flags)
|
||||
{
|
||||
#ifdef SYS_preadv
|
||||
if (!flags) {
|
||||
if (ofs==-1) return readv(fd, iov, count);
|
||||
return syscall_cp(SYS_preadv, fd, iov, count,
|
||||
(long)(ofs), (long)(ofs>>32));
|
||||
}
|
||||
#endif
|
||||
return syscall_cp(SYS_preadv2, fd, iov, count,
|
||||
(long)(ofs), (long)(ofs>>32), flags);
|
||||
}
|
||||
17
lib/libc/musl/src/linux/pwritev2.c
vendored
Normal file
17
lib/libc/musl/src/linux/pwritev2.c
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <sys/uio.h>
|
||||
#include <unistd.h>
|
||||
#include "syscall.h"
|
||||
|
||||
ssize_t pwritev2(int fd, const struct iovec *iov, int count, off_t ofs, int flags)
|
||||
{
|
||||
#ifdef SYS_pwritev
|
||||
if (!flags) {
|
||||
if (ofs==-1) return writev(fd, iov, count);
|
||||
return syscall_cp(SYS_pwritev, fd, iov, count,
|
||||
(long)(ofs), (long)(ofs>>32));
|
||||
}
|
||||
#endif
|
||||
return syscall_cp(SYS_pwritev2, fd, iov, count,
|
||||
(long)(ofs), (long)(ofs>>32), flags);
|
||||
}
|
||||
42
lib/libc/musl/src/linux/statx.c
vendored
Normal file
42
lib/libc/musl/src/linux/statx.c
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#define _GNU_SOURCE
|
||||
#include <sys/stat.h>
|
||||
#include <string.h>
|
||||
#include <syscall.h>
|
||||
#include <sys/sysmacros.h>
|
||||
#include <errno.h>
|
||||
|
||||
int statx(int dirfd, const char *restrict path, int flags, unsigned mask, struct statx *restrict stx)
|
||||
{
|
||||
int ret = __syscall(SYS_statx, dirfd, path, flags, mask, stx);
|
||||
|
||||
#ifndef SYS_fstatat
|
||||
return __syscall_ret(ret);
|
||||
#endif
|
||||
|
||||
if (ret != -ENOSYS) return __syscall_ret(ret);
|
||||
|
||||
struct stat st;
|
||||
ret = fstatat(dirfd, path, &st, flags);
|
||||
if (ret) return ret;
|
||||
|
||||
stx->stx_dev_major = major(st.st_dev);
|
||||
stx->stx_dev_minor = minor(st.st_dev);
|
||||
stx->stx_ino = st.st_ino;
|
||||
stx->stx_mode = st.st_mode;
|
||||
stx->stx_nlink = st.st_nlink;
|
||||
stx->stx_uid = st.st_uid;
|
||||
stx->stx_gid = st.st_gid;
|
||||
stx->stx_size = st.st_size;
|
||||
stx->stx_blksize = st.st_blksize;
|
||||
stx->stx_blocks = st.st_blocks;
|
||||
stx->stx_atime.tv_sec = st.st_atim.tv_sec;
|
||||
stx->stx_atime.tv_nsec = st.st_atim.tv_nsec;
|
||||
stx->stx_mtime.tv_sec = st.st_mtim.tv_sec;
|
||||
stx->stx_mtime.tv_nsec = st.st_mtim.tv_nsec;
|
||||
stx->stx_ctime.tv_sec = st.st_ctim.tv_sec;
|
||||
stx->stx_ctime.tv_nsec = st.st_ctim.tv_nsec;
|
||||
stx->stx_btime = (struct statx_timestamp){.tv_sec=0, .tv_nsec=0};
|
||||
stx->stx_mask = STATX_BASIC_STATS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
2
lib/libc/musl/src/linux/wait4.c
vendored
2
lib/libc/musl/src/linux/wait4.c
vendored
|
|
@ -26,7 +26,7 @@ pid_t wait4(pid_t pid, int *status, int options, struct rusage *ru)
|
|||
}
|
||||
#endif
|
||||
char *dest = ru ? (char *)&ru->ru_maxrss - 4*sizeof(long) : 0;
|
||||
r = __syscall(SYS_wait4, pid, status, options, dest);
|
||||
r = __sys_wait4(pid, status, options, dest);
|
||||
if (r>0 && ru && sizeof(time_t) > sizeof(long)) {
|
||||
long kru[4];
|
||||
memcpy(kru, dest, 4*sizeof(long));
|
||||
|
|
|
|||
2
lib/libc/musl/src/locale/iconv.c
vendored
2
lib/libc/musl/src/locale/iconv.c
vendored
|
|
@ -49,7 +49,7 @@ static const unsigned char charmaps[] =
|
|||
"ucs4\0utf32\0\0\313"
|
||||
"ucs2\0\0\314"
|
||||
"eucjp\0\0\320"
|
||||
"shiftjis\0sjis\0\0\321"
|
||||
"shiftjis\0sjis\0cp932\0\0\321"
|
||||
"iso2022jp\0\0\322"
|
||||
"gb18030\0\0\330"
|
||||
"gbk\0\0\331"
|
||||
|
|
|
|||
10
lib/libc/musl/src/math/acoshl.c
vendored
10
lib/libc/musl/src/math/acoshl.c
vendored
|
|
@ -10,14 +10,18 @@ long double acoshl(long double x)
|
|||
long double acoshl(long double x)
|
||||
{
|
||||
union ldshape u = {x};
|
||||
int e = u.i.se & 0x7fff;
|
||||
int e = u.i.se;
|
||||
|
||||
if (e < 0x3fff + 1)
|
||||
/* |x| < 2, invalid if x < 1 or nan */
|
||||
/* 0 <= x < 2, invalid if x < 1 */
|
||||
return log1pl(x-1 + sqrtl((x-1)*(x-1)+2*(x-1)));
|
||||
if (e < 0x3fff + 32)
|
||||
/* |x| < 0x1p32 */
|
||||
/* 2 <= x < 0x1p32 */
|
||||
return logl(2*x - 1/(x+sqrtl(x*x-1)));
|
||||
if (e & 0x8000)
|
||||
/* x < 0 or x = -0, invalid */
|
||||
return (x - x) / (x - x);
|
||||
/* 0x1p32 <= x or nan */
|
||||
return logl(x) + 0.693147180559945309417232121458176568L;
|
||||
}
|
||||
#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
|
||||
|
|
|
|||
34
lib/libc/musl/src/math/powl.c
vendored
34
lib/libc/musl/src/math/powl.c
vendored
|
|
@ -212,25 +212,33 @@ long double powl(long double x, long double y)
|
|||
}
|
||||
if (x == 1.0)
|
||||
return 1.0; /* 1**y = 1, even if y is nan */
|
||||
if (x == -1.0 && !isfinite(y))
|
||||
return 1.0; /* -1**inf = 1 */
|
||||
if (y == 0.0)
|
||||
return 1.0; /* x**0 = 1, even if x is nan */
|
||||
if (y == 1.0)
|
||||
return x;
|
||||
if (y >= LDBL_MAX) {
|
||||
if (x > 1.0 || x < -1.0)
|
||||
return INFINITY;
|
||||
if (x != 0.0)
|
||||
/* if y*log2(x) < log2(LDBL_TRUE_MIN)-1 then x^y uflows to 0
|
||||
if y*log2(x) > -log2(LDBL_TRUE_MIN)+1 > LDBL_MAX_EXP then x^y oflows
|
||||
if |x|!=1 then |log2(x)| > |log(x)| > LDBL_EPSILON/2 so
|
||||
x^y oflows/uflows if |y|*LDBL_EPSILON/2 > -log2(LDBL_TRUE_MIN)+1 */
|
||||
if (fabsl(y) > 2*(-LDBL_MIN_EXP+LDBL_MANT_DIG+1)/LDBL_EPSILON) {
|
||||
/* y is not an odd int */
|
||||
if (x == -1.0)
|
||||
return 1.0;
|
||||
if (y == INFINITY) {
|
||||
if (x > 1.0 || x < -1.0)
|
||||
return INFINITY;
|
||||
return 0.0;
|
||||
}
|
||||
if (y <= -LDBL_MAX) {
|
||||
if (x > 1.0 || x < -1.0)
|
||||
return 0.0;
|
||||
if (x != 0.0 || y == -INFINITY)
|
||||
}
|
||||
if (y == -INFINITY) {
|
||||
if (x > 1.0 || x < -1.0)
|
||||
return 0.0;
|
||||
return INFINITY;
|
||||
}
|
||||
if ((x > 1.0 || x < -1.0) == (y > 0))
|
||||
return huge * huge;
|
||||
return twom10000 * twom10000;
|
||||
}
|
||||
if (x >= LDBL_MAX) {
|
||||
if (x == INFINITY) {
|
||||
if (y > 0.0)
|
||||
return INFINITY;
|
||||
return 0.0;
|
||||
|
|
@ -253,7 +261,7 @@ long double powl(long double x, long double y)
|
|||
yoddint = 1;
|
||||
}
|
||||
|
||||
if (x <= -LDBL_MAX) {
|
||||
if (x == -INFINITY) {
|
||||
if (y > 0.0) {
|
||||
if (yoddint)
|
||||
return -INFINITY;
|
||||
|
|
|
|||
15
lib/libc/musl/src/math/riscv32/copysign.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/copysign.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double copysign(double x, double y)
|
||||
{
|
||||
__asm__ ("fsgnj.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../copysign.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/copysignf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/copysignf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float copysignf(float x, float y)
|
||||
{
|
||||
__asm__ ("fsgnj.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../copysignf.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fabs.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fabs.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double fabs(double x)
|
||||
{
|
||||
__asm__ ("fabs.d %0, %1" : "=f"(x) : "f"(x));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fabs.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fabsf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fabsf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float fabsf(float x)
|
||||
{
|
||||
__asm__ ("fabs.s %0, %1" : "=f"(x) : "f"(x));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fabsf.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fma.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fma.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double fma(double x, double y, double z)
|
||||
{
|
||||
__asm__ ("fmadd.d %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fma.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fmaf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fmaf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float fmaf(float x, float y, float z)
|
||||
{
|
||||
__asm__ ("fmadd.s %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fmaf.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fmax.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fmax.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double fmax(double x, double y)
|
||||
{
|
||||
__asm__ ("fmax.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fmax.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fmaxf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fmaxf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float fmaxf(float x, float y)
|
||||
{
|
||||
__asm__ ("fmax.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fmaxf.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fmin.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fmin.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double fmin(double x, double y)
|
||||
{
|
||||
__asm__ ("fmin.d %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fmin.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/fminf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/fminf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float fminf(float x, float y)
|
||||
{
|
||||
__asm__ ("fmin.s %0, %1, %2" : "=f"(x) : "f"(x), "f"(y));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../fminf.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/sqrt.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/sqrt.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 64
|
||||
|
||||
double sqrt(double x)
|
||||
{
|
||||
__asm__ ("fsqrt.d %0, %1" : "=f"(x) : "f"(x));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../sqrt.c"
|
||||
|
||||
#endif
|
||||
15
lib/libc/musl/src/math/riscv32/sqrtf.c
vendored
Normal file
15
lib/libc/musl/src/math/riscv32/sqrtf.c
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <math.h>
|
||||
|
||||
#if __riscv_flen >= 32
|
||||
|
||||
float sqrtf(float x)
|
||||
{
|
||||
__asm__ ("fsqrt.s %0, %1" : "=f"(x) : "f"(x));
|
||||
return x;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "../sqrtf.c"
|
||||
|
||||
#endif
|
||||
4
lib/libc/musl/src/math/sqrtl.c
vendored
4
lib/libc/musl/src/math/sqrtl.c
vendored
|
|
@ -205,7 +205,7 @@ long double sqrtl(long double x)
|
|||
top = (top + 0x3fff) >> 1;
|
||||
|
||||
/* r ~ 1/sqrt(m) */
|
||||
static const uint64_t three = 0xc0000000;
|
||||
const uint64_t three = 0xc0000000;
|
||||
uint64_t r, s, d, u, i;
|
||||
i = (ix.hi >> 42) % 128;
|
||||
r = (uint32_t)__rsqrt_tab[i] << 16;
|
||||
|
|
@ -227,7 +227,7 @@ long double sqrtl(long double x)
|
|||
r = mul64(u, r) << 1;
|
||||
/* |r sqrt(m) - 1| < 0x1.c001p-59, switch to 128bit */
|
||||
|
||||
static const u128 threel = {.hi=three<<32, .lo=0};
|
||||
const u128 threel = {.hi=three<<32, .lo=0};
|
||||
u128 rl, sl, dl, ul;
|
||||
rl.hi = r;
|
||||
rl.lo = 0;
|
||||
|
|
|
|||
46
lib/libc/musl/src/misc/mntent.c
vendored
46
lib/libc/musl/src/misc/mntent.c
vendored
|
|
@ -20,6 +20,42 @@ int endmntent(FILE *f)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static char *unescape_ent(char *beg)
|
||||
{
|
||||
char *dest = beg;
|
||||
const char *src = beg;
|
||||
while (*src) {
|
||||
const char *val;
|
||||
unsigned char cval = 0;
|
||||
if (*src != '\\') {
|
||||
*dest++ = *src++;
|
||||
continue;
|
||||
}
|
||||
if (src[1] == '\\') {
|
||||
++src;
|
||||
*dest++ = *src++;
|
||||
continue;
|
||||
}
|
||||
val = src + 1;
|
||||
for (int i = 0; i < 3; ++i) {
|
||||
if (*val >= '0' && *val <= '7') {
|
||||
cval <<= 3;
|
||||
cval += *val++ - '0';
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (cval) {
|
||||
*dest++ = cval;
|
||||
src = val;
|
||||
} else {
|
||||
*dest++ = *src++;
|
||||
}
|
||||
}
|
||||
*dest = 0;
|
||||
return beg;
|
||||
}
|
||||
|
||||
struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int buflen)
|
||||
{
|
||||
int n[8], use_internal = (linebuf == SENTINEL);
|
||||
|
|
@ -45,7 +81,7 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle
|
|||
len = strlen(linebuf);
|
||||
if (len > INT_MAX) continue;
|
||||
for (i = 0; i < sizeof n / sizeof *n; i++) n[i] = len;
|
||||
sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d",
|
||||
sscanf(linebuf, " %n%*[^ \t]%n %n%*[^ \t]%n %n%*[^ \t]%n %n%*[^ \t]%n %d %d",
|
||||
n, n+1, n+2, n+3, n+4, n+5, n+6, n+7,
|
||||
&mnt->mnt_freq, &mnt->mnt_passno);
|
||||
} while (linebuf[n[0]] == '#' || n[1]==len);
|
||||
|
|
@ -55,10 +91,10 @@ struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int bufle
|
|||
linebuf[n[5]] = 0;
|
||||
linebuf[n[7]] = 0;
|
||||
|
||||
mnt->mnt_fsname = linebuf+n[0];
|
||||
mnt->mnt_dir = linebuf+n[2];
|
||||
mnt->mnt_type = linebuf+n[4];
|
||||
mnt->mnt_opts = linebuf+n[6];
|
||||
mnt->mnt_fsname = unescape_ent(linebuf+n[0]);
|
||||
mnt->mnt_dir = unescape_ent(linebuf+n[2]);
|
||||
mnt->mnt_type = unescape_ent(linebuf+n[4]);
|
||||
mnt->mnt_opts = unescape_ent(linebuf+n[6]);
|
||||
|
||||
return mnt;
|
||||
}
|
||||
|
|
|
|||
3
lib/libc/musl/src/misc/syslog.c
vendored
3
lib/libc/musl/src/misc/syslog.c
vendored
|
|
@ -11,6 +11,7 @@
|
|||
#include <fcntl.h>
|
||||
#include "lock.h"
|
||||
#include "fork_impl.h"
|
||||
#include "locale_impl.h"
|
||||
|
||||
static volatile int lock[1];
|
||||
static char log_ident[32];
|
||||
|
|
@ -99,7 +100,7 @@ static void _vsyslog(int priority, const char *message, va_list ap)
|
|||
|
||||
now = time(NULL);
|
||||
gmtime_r(&now, &tm);
|
||||
strftime(timebuf, sizeof timebuf, "%b %e %T", &tm);
|
||||
strftime_l(timebuf, sizeof timebuf, "%b %e %T", &tm, C_LOCALE);
|
||||
|
||||
pid = (log_opt & LOG_PID) ? getpid() : 0;
|
||||
l = snprintf(buf, sizeof buf, "<%d>%s %n%s%s%.0d%s: ",
|
||||
|
|
|
|||
2
lib/libc/musl/src/multibyte/mbrtowc.c
vendored
2
lib/libc/musl/src/multibyte/mbrtowc.c
vendored
|
|
@ -8,7 +8,7 @@ size_t mbrtowc(wchar_t *restrict wc, const char *restrict src, size_t n, mbstate
|
|||
static unsigned internal_state;
|
||||
unsigned c;
|
||||
const unsigned char *s = (const void *)src;
|
||||
const unsigned N = n;
|
||||
const size_t N = n;
|
||||
wchar_t dummy;
|
||||
|
||||
if (!st) st = (void *)&internal_state;
|
||||
|
|
|
|||
5
lib/libc/musl/src/network/dns_parse.c
vendored
5
lib/libc/musl/src/network/dns_parse.c
vendored
|
|
@ -12,16 +12,15 @@ int __dns_parse(const unsigned char *r, int rlen, int (*callback)(void *, int, c
|
|||
p = r+12;
|
||||
qdcount = r[4]*256 + r[5];
|
||||
ancount = r[6]*256 + r[7];
|
||||
if (qdcount+ancount > 64) return -1;
|
||||
while (qdcount--) {
|
||||
while (p-r < rlen && *p-1U < 127) p++;
|
||||
if (p>r+rlen-6 || *p>193 || (*p==193 && p[1]>254))
|
||||
if (p>r+rlen-6)
|
||||
return -1;
|
||||
p += 5 + !!*p;
|
||||
}
|
||||
while (ancount--) {
|
||||
while (p-r < rlen && *p-1U < 127) p++;
|
||||
if (p>r+rlen-12 || *p>193 || (*p==193 && p[1]>254))
|
||||
if (p>r+rlen-12)
|
||||
return -1;
|
||||
p += 1 + !!*p;
|
||||
len = p[8]*256 + p[9];
|
||||
|
|
|
|||
4
lib/libc/musl/src/network/getnameinfo.c
vendored
4
lib/libc/musl/src/network/getnameinfo.c
vendored
|
|
@ -162,8 +162,10 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl,
|
|||
query[3] = 0; /* don't need AD flag */
|
||||
int rlen = __res_send(query, qlen, reply, sizeof reply);
|
||||
buf[0] = 0;
|
||||
if (rlen > 0)
|
||||
if (rlen > 0) {
|
||||
if (rlen > sizeof reply) rlen = sizeof reply;
|
||||
__dns_parse(reply, rlen, dns_parse_callback, buf);
|
||||
}
|
||||
}
|
||||
if (!*buf) {
|
||||
if (flags & NI_NAMEREQD) return EAI_NONAME;
|
||||
|
|
|
|||
2
lib/libc/musl/src/network/lookup_name.c
vendored
2
lib/libc/musl/src/network/lookup_name.c
vendored
|
|
@ -109,7 +109,7 @@ struct dpc_ctx {
|
|||
#define RR_CNAME 5
|
||||
#define RR_AAAA 28
|
||||
|
||||
#define ABUF_SIZE 768
|
||||
#define ABUF_SIZE 4800
|
||||
|
||||
static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet, int plen)
|
||||
{
|
||||
|
|
|
|||
30
lib/libc/musl/src/process/_Fork.c
vendored
30
lib/libc/musl/src/process/_Fork.c
vendored
|
|
@ -5,10 +5,27 @@
|
|||
#include "lock.h"
|
||||
#include "pthread_impl.h"
|
||||
#include "aio_impl.h"
|
||||
#include "fork_impl.h"
|
||||
|
||||
static void dummy(int x) { }
|
||||
weak_alias(dummy, __aio_atfork);
|
||||
|
||||
void __post_Fork(int ret)
|
||||
{
|
||||
if (!ret) {
|
||||
pthread_t self = __pthread_self();
|
||||
self->tid = __syscall(SYS_set_tid_address, &__thread_list_lock);
|
||||
self->robust_list.off = 0;
|
||||
self->robust_list.pending = 0;
|
||||
self->next = self->prev = self;
|
||||
__thread_list_lock = 0;
|
||||
libc.threads_minus_1 = 0;
|
||||
if (libc.need_locks) libc.need_locks = -1;
|
||||
}
|
||||
UNLOCK(__abort_lock);
|
||||
if (!ret) __aio_atfork(1);
|
||||
}
|
||||
|
||||
pid_t _Fork(void)
|
||||
{
|
||||
pid_t ret;
|
||||
|
|
@ -20,18 +37,7 @@ pid_t _Fork(void)
|
|||
#else
|
||||
ret = __syscall(SYS_clone, SIGCHLD, 0);
|
||||
#endif
|
||||
if (!ret) {
|
||||
pthread_t self = __pthread_self();
|
||||
self->tid = __syscall(SYS_gettid);
|
||||
self->robust_list.off = 0;
|
||||
self->robust_list.pending = 0;
|
||||
self->next = self->prev = self;
|
||||
__thread_list_lock = 0;
|
||||
libc.threads_minus_1 = 0;
|
||||
if (libc.need_locks) libc.need_locks = -1;
|
||||
}
|
||||
UNLOCK(__abort_lock);
|
||||
if (!ret) __aio_atfork(1);
|
||||
__post_Fork(ret);
|
||||
__restore_sigs(&set);
|
||||
return __syscall_ret(ret);
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue