diff -Nur musl-0.9.15/arch/arm/bits/shm.h musl-git/arch/arm/bits/shm.h --- musl-0.9.15/arch/arm/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/arm/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -16,3 +16,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/arm/bits/termios.h musl-git/arch/arm/bits/termios.h --- musl-0.9.15/arch/arm/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/arm/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -42,6 +42,7 @@ #define IXANY 0004000 #define IXOFF 0010000 #define IMAXBEL 0020000 +#define IUTF8 0040000 #define OPOST 0000001 #define OLCUC 0000002 @@ -75,9 +76,6 @@ #define VT0 0000000 #define VT1 0040000 -/* ?? */ -#define XTABS 0014000 - #define B0 0000000 #define B50 0000001 #define B75 0000002 @@ -125,8 +123,6 @@ #define HUPCL 0002000 #define CLOCAL 0004000 -#define CRTSCTS 020000000000 - #define ISIG 0000001 #define ICANON 0000002 #define ECHO 0000010 @@ -137,14 +133,11 @@ #define TOSTOP 0000400 #define IEXTEN 0100000 -/* Extensions? */ -#define CBAUDEX 0010000 #define ECHOCTL 0001000 #define ECHOPRT 0002000 #define ECHOKE 0004000 #define FLUSHO 0010000 #define PENDIN 0040000 -#define EXTPROC 0200000 #define TCOOFF 0 #define TCOON 1 @@ -158,3 +151,10 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/arm/syscall_arch.h musl-git/arch/arm/syscall_arch.h --- musl-0.9.15/arch/arm/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/arm/syscall_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -3,6 +3,8 @@ ((union { long long ll; long l[2]; }){ .ll = x }).l[1] #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) +long (__syscall)(long, ...); + #ifndef __clang__ #define __asm_syscall(...) do { \ diff -Nur musl-0.9.15/arch/i386/bits/shm.h musl-git/arch/i386/bits/shm.h --- musl-0.9.15/arch/i386/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/i386/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -16,3 +16,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/i386/bits/termios.h musl-git/arch/i386/bits/termios.h --- musl-0.9.15/arch/i386/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/i386/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -42,6 +42,7 @@ #define IXANY 0004000 #define IXOFF 0010000 #define IMAXBEL 0020000 +#define IUTF8 0040000 #define OPOST 0000001 #define OLCUC 0000002 @@ -75,9 +76,6 @@ #define VT0 0000000 #define VT1 0040000 -/* ?? */ -#define XTABS 0014000 - #define B0 0000000 #define B50 0000001 #define B75 0000002 @@ -125,8 +123,6 @@ #define HUPCL 0002000 #define CLOCAL 0004000 -#define CRTSCTS 020000000000 - #define ISIG 0000001 #define ICANON 0000002 #define ECHO 0000010 @@ -137,14 +133,11 @@ #define TOSTOP 0000400 #define IEXTEN 0100000 -/* Extensions? */ -#define CBAUDEX 0010000 #define ECHOCTL 0001000 #define ECHOPRT 0002000 #define ECHOKE 0004000 #define FLUSHO 0010000 #define PENDIN 0040000 -#define EXTPROC 0200000 #define TCOOFF 0 #define TCOON 1 @@ -158,3 +151,10 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/microblaze/bits/shm.h musl-git/arch/microblaze/bits/shm.h --- musl-0.9.15/arch/microblaze/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/microblaze/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -16,3 +16,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/microblaze/bits/termios.h musl-git/arch/microblaze/bits/termios.h --- musl-0.9.15/arch/microblaze/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/microblaze/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -42,6 +42,7 @@ #define IXANY 0004000 #define IXOFF 0010000 #define IMAXBEL 0020000 +#define IUTF8 0040000 #define OPOST 0000001 #define OLCUC 0000002 @@ -75,9 +76,6 @@ #define VT0 0000000 #define VT1 0040000 -/* ?? */ -#define XTABS 0014000 - #define B0 0000000 #define B50 0000001 #define B75 0000002 @@ -125,8 +123,6 @@ #define HUPCL 0002000 #define CLOCAL 0004000 -#define CRTSCTS 020000000000 - #define ISIG 0000001 #define ICANON 0000002 #define ECHO 0000010 @@ -137,14 +133,11 @@ #define TOSTOP 0000400 #define IEXTEN 0100000 -/* Extensions? */ -#define CBAUDEX 0010000 #define ECHOCTL 0001000 #define ECHOPRT 0002000 #define ECHOKE 0004000 #define FLUSHO 0010000 #define PENDIN 0040000 -#define EXTPROC 0200000 #define TCOOFF 0 #define TCOON 1 @@ -158,3 +151,10 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/microblaze/syscall_arch.h musl-git/arch/microblaze/syscall_arch.h --- musl-0.9.15/arch/microblaze/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/microblaze/syscall_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -3,6 +3,8 @@ ((union { long long ll; long l[2]; }){ .ll = x }).l[1] #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) +long (__syscall)(long, ...); + #ifndef __clang__ static __inline long __syscall0(long n) diff -Nur musl-0.9.15/arch/mips/bits/fenv.h musl-git/arch/mips/bits/fenv.h --- musl-0.9.15/arch/mips/bits/fenv.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/mips/bits/fenv.h 2014-03-10 16:52:06.000000000 +0100 @@ -1,3 +1,7 @@ +#ifdef __mips_soft_float +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 +#else #define FE_INEXACT 4 #define FE_UNDERFLOW 8 #define FE_OVERFLOW 16 @@ -10,6 +14,7 @@ #define FE_TOWARDZERO 1 #define FE_UPWARD 2 #define FE_DOWNWARD 3 +#endif typedef unsigned short fexcept_t; diff -Nur musl-0.9.15/arch/mips/bits/shm.h musl-git/arch/mips/bits/shm.h --- musl-0.9.15/arch/mips/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/mips/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -13,3 +13,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/mips/bits/termios.h musl-git/arch/mips/bits/termios.h --- musl-0.9.15/arch/mips/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/mips/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -77,9 +77,6 @@ #define VT0 0000000 #define VT1 0040000 -/* ?? */ -#define XTABS 0014000 - #define B0 0000000 #define B50 0000001 #define B75 0000002 @@ -129,12 +126,6 @@ #define PARODD 0001000 #define HUPCL 0002000 #define CLOCAL 0004000 -#define CBAUDEX 0010000 - -#define CIBAUD 002003600000 -#define CMSPAR 010000000000 -#define CRTSCTS 020000000000 -#define IBSHIFT 16 #define ISIG 0000001 #define ICANON 0000002 @@ -152,9 +143,6 @@ #define PENDIN 0040000 #define TOSTOP 0100000 #define ITOSTOP 0100000 -#define EXTPROC 0200000 - -#define TIOCSER_TEMT 1 #define TCOOFF 0 #define TCOON 1 @@ -168,3 +156,14 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CIBAUD 002003600000 +#define IBSHIFT 16 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#define TIOCSER_TEMT 1 +#endif diff -Nur musl-0.9.15/arch/mips/reloc.h musl-git/arch/mips/reloc.h --- musl-0.9.15/arch/mips/reloc.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/mips/reloc.h 2014-03-10 16:52:06.000000000 +0100 @@ -8,7 +8,13 @@ #define ENDIAN_SUFFIX "" #endif -#define LDSO_ARCH "mips" ENDIAN_SUFFIX +#ifdef __mips_soft_float +#define FP_SUFFIX "-sf" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "mips" ENDIAN_SUFFIX FP_SUFFIX #define IS_COPY(x) ((x)==R_MIPS_COPY) #define IS_PLT(x) 1 diff -Nur musl-0.9.15/arch/mips/syscall_arch.h musl-git/arch/mips/syscall_arch.h --- musl-0.9.15/arch/mips/syscall_arch.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/mips/syscall_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -3,6 +3,8 @@ ((union { long long ll; long l[2]; }){ .ll = x }).l[1] #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) +long (__syscall)(long, ...); + #ifndef __clang__ #define __asm_syscall(...) do { \ diff -Nur musl-0.9.15/arch/powerpc/bits/shm.h musl-git/arch/powerpc/bits/shm.h --- musl-0.9.15/arch/powerpc/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/powerpc/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -16,3 +16,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/powerpc/bits/termios.h musl-git/arch/powerpc/bits/termios.h --- musl-0.9.15/arch/powerpc/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/powerpc/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -66,7 +66,6 @@ #define TAB1 00002000 #define TAB2 00004000 #define TAB3 00006000 -#define XTABS 00006000 #define CRDLY 00030000 #define CR0 00000000 #define CR1 00010000 @@ -101,7 +100,6 @@ #define B38400 0000017 #define EXTA B19200 #define EXTB B38400 -#define CBAUDEX 0000000 #define B57600 00020 #define B115200 00021 #define B230400 00022 @@ -120,9 +118,6 @@ #define B4000000 00036 #define BOTHER 00037 -#define CIBAUD 077600000 -#define IBSHIFT 16 - #define CSIZE 00001400 #define CS5 00000000 #define CS6 00000400 @@ -136,8 +131,6 @@ #define HUPCL 00040000 #define CLOCAL 00100000 -#define CMSPAR 010000000000 -#define CRTSCTS 020000000000 #define ISIG 0x00000080 #define ICANON 0x00000100 @@ -154,7 +147,6 @@ #define FLUSHO 0x00800000 #define PENDIN 0x20000000 #define IEXTEN 0x00000400 -#define EXTPROC 0x10000000 #define TCOOFF 0 #define TCOON 1 @@ -168,3 +160,13 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0000000 +#define CIBAUD 077600000 +#define IBSHIFT 16 +#define CMSPAR 010000000000 +#define CRTSCTS 020000000000 +#define EXTPROC 0x10000000 +#define XTABS 00006000 +#endif diff -Nur musl-0.9.15/arch/sh/atomic.h musl-git/arch/sh/atomic.h --- musl-0.9.15/arch/sh/atomic.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/atomic.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,87 @@ +#ifndef _INTERNAL_ATOMIC_H +#define _INTERNAL_ATOMIC_H + +#include + +static inline int a_ctz_l(unsigned long x) +{ + static const char debruijn32[32] = { + 0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, + 31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 + }; + return debruijn32[(x&-x)*0x076be629 >> 27]; +} + +static inline int a_ctz_64(uint64_t x) +{ + uint32_t y = x; + if (!y) { + y = x>>32; + return 32 + a_ctz_l(y); + } + return a_ctz_l(y); +} + +int __sh_cas(volatile int *, int, int); +int __sh_swap(volatile int *, int); +int __sh_fetch_add(volatile int *, int); +void __sh_store(volatile int *, int); +void __sh_and(volatile int *, int); +void __sh_or(volatile int *, int); + +#define a_cas(p,t,s) __sh_cas(p,t,s) +#define a_swap(x,v) __sh_swap(x,v) +#define a_fetch_add(x,v) __sh_fetch_add(x, v) +#define a_store(x,v) __sh_store(x, v) +#define a_and(x,v) __sh_and(x, v) +#define a_or(x,v) __sh_or(x, v) + +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + return (void *)a_cas(p, (int)t, (int)s); +} + +static inline long a_cas_l(volatile void *p, long t, long s) +{ + return a_cas(p, t, s); +} + +static inline void a_inc(volatile int *x) +{ + a_fetch_add(x, 1); +} + +static inline void a_dec(volatile int *x) +{ + a_fetch_add(x, -1); +} + +static inline void a_spin() +{ +} + +static inline void a_crash() +{ + *(volatile char *)0=0; +} + +static inline void a_or_l(volatile void *p, long v) +{ + a_or(p, v); +} + +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + union { uint64_t v; uint32_t r[2]; } u = { v }; + a_and((int *)p, u.r[0]); + a_and((int *)p+1, u.r[1]); +} + +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + union { uint64_t v; uint32_t r[2]; } u = { v }; + a_or((int *)p, u.r[0]); + a_or((int *)p+1, u.r[1]); +} + +#endif diff -Nur musl-0.9.15/arch/sh/bits/alltypes.h.in musl-git/arch/sh/bits/alltypes.h.in --- musl-0.9.15/arch/sh/bits/alltypes.h.in 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/alltypes.h.in 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,23 @@ +#define _Addr int +#define _Int64 long long +#define _Reg int + +TYPEDEF __builtin_va_list va_list; +TYPEDEF __builtin_va_list __isoc_va_list; + +#ifndef __cplusplus +TYPEDEF long wchar_t; +#endif +TYPEDEF unsigned wint_t; + +TYPEDEF float float_t; +TYPEDEF double double_t; + +TYPEDEF long time_t; +TYPEDEF long suseconds_t; + +TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_t; +TYPEDEF struct { union { int __i[6]; void *__p[6]; } __u; } pthread_mutex_t; +TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t; +TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t; +TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t; diff -Nur musl-0.9.15/arch/sh/bits/endian.h musl-git/arch/sh/bits/endian.h --- musl-0.9.15/arch/sh/bits/endian.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/endian.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +#if __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#else +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif diff -Nur musl-0.9.15/arch/sh/bits/errno.h musl-git/arch/sh/bits/errno.h --- musl-0.9.15/arch/sh/bits/errno.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/errno.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK EDEADLK +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +#define ERFKILL 132 +#define EHWPOISON 133 diff -Nur musl-0.9.15/arch/sh/bits/fcntl.h musl-git/arch/sh/bits/fcntl.h --- musl-0.9.15/arch/sh/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/fcntl.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,39 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0100000 +#define O_NOATIME 01000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff -Nur musl-0.9.15/arch/sh/bits/fenv.h musl-git/arch/sh/bits/fenv.h --- musl-0.9.15/arch/sh/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/fenv.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,26 @@ +#ifndef __SH_FPU_ANY__ + +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST 0 + +#else + +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 + +#define FE_INEXACT 0x04 +#define FE_UNDERFLOW 0x08 +#define FE_OVERFLOW 0x10 +#define FE_DIVBYZERO 0x20 +#define FE_INVALID 0x40 +#define FE_ALL_EXCEPT 0x7c + +#endif + +typedef unsigned long fexcept_t; + +typedef struct { + unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff -Nur musl-0.9.15/arch/sh/bits/float.h musl-git/arch/sh/bits/float.h --- musl-0.9.15/arch/sh/bits/float.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/float.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,17 @@ +#define FLT_ROUNDS 1 +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff -Nur musl-0.9.15/arch/sh/bits/ioctl.h musl-git/arch/sh/bits/ioctl.h --- musl-0.9.15/arch/sh/bits/ioctl.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/ioctl.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,205 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 0U +#define _IOC_WRITE 1U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define FIOCLEX _IO('f', 1) +#define FIONCLEX _IO('f', 2) +#define FIOASYNC _IOW('f', 125, int) +#define FIONBIO _IOW('f', 126, int) +#define FIONREAD _IOR('f', 127, int) +#define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, char[8]) + +#define TCGETA _IOR('t', 23, char[18]) +#define TCSETA _IOW('t', 24, char[18]) +#define TCSETAW _IOW('t', 25, char[18]) +#define TCSETAF _IOW('t', 28, char[18]) + +#define TCSBRK _IO('t', 29) +#define TCXONC _IO('t', 30) +#define TCFLSH _IO('t', 31) + +#define TIOCSWINSZ _IOW('t', 103, char[8]) +#define TIOCGWINSZ _IOR('t', 104, char[8]) +#define TIOCSTART _IO('t', 110) +#define TIOCSTOP _IO('t', 111) +#define TIOCOUTQ _IOR('t', 115, int) + +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) + +#define TIOCEXCL _IO('T', 12) +#define TIOCNXCL _IO('T', 13) +#define TIOCSCTTY _IO('T', 14) + +#define TIOCSTI _IOW('T', 18, char) +#define TIOCMGET _IOR('T', 21, unsigned int) +#define TIOCMBIS _IOW('T', 22, unsigned int) +#define TIOCMBIC _IOW('T', 23, unsigned int) +#define TIOCMSET _IOW('T', 24, unsigned int) +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 + +#define TIOCGSOFTCAR _IOR('T', 25, unsigned int) +#define TIOCSSOFTCAR _IOW('T', 26, unsigned int) +#define TIOCLINUX _IOW('T', 28, char) +#define TIOCCONS _IO('T', 29) +#define TIOCGSERIAL _IOR('T', 30, char[60]) +#define TIOCSSERIAL _IOW('T', 31, char[60]) +#define TIOCPKT _IOW('T', 32, int) +#define TIOCPKT_DATA 0 +#define TIOCPKT_FLUSHREAD 1 +#define TIOCPKT_FLUSHWRITE 2 +#define TIOCPKT_STOP 4 +#define TIOCPKT_START 8 +#define TIOCPKT_NOSTOP 16 +#define TIOCPKT_DOSTOP 32 +#define TIOCPKT_IOCTL 64 + +#define TIOCNOTTY _IO('T', 34) +#define TIOCSETD _IOW('T', 35, int) +#define TIOCGETD _IOR('T', 36, int) +#define TCSBRKP _IOW('T', 37, int) +#define TIOCSBRK _IO('T', 39) +#define TIOCCBRK _IO('T', 40) +#define TIOCGSID _IOR('T', 41, int) +#define TCGETS _IOR('T', 42, char[44]) +#define TCSETS _IOW('T', 43, char[44]) +#define TCSETSW _IOW('T', 44, char[44]) +#define TCSETSF _IOW('T', 45, char[44]) +#define TIOCGPTN _IOR('T', 48, unsigned int) +#define TIOCSPTLCK _IOW('T', 49, int) +#define TIOCGDEV _IOR('T', 50, unsigned int) +#define TIOCSIG _IOW('T', 54, int) +#define TIOCVHANGUP _IO('T', 55) +#define TIOCGPKT _IOR('T', 56, int) +#define TIOCGPTLCK _IOR('T', 57, int) +#define TIOCGEXCL _IOR('T', 64, int) + +#define TIOCSERCONFIG _IO('T', 83) +#define TIOCSERGWILD _IOR('T', 84, int) +#define TIOCSERSWILD _IOW('T', 85, int) +#define TIOCGLCKTRMIOS _IO('T', 86) +#define TIOCSLCKTRMIOS _IO('T', 87) +#define TIOCSERGSTRUCT _IOR('T', 88, char[216]) +#define TIOCSERGETLSR _IOR('T', 89, unsigned int) +#define TIOCSER_TEMT 0x01 +#define TIOCSERGETMULTI _IOR('T', 90, char[168]) +#define TIOCSERSETMULTI _IOW('T', 91, char[168]) + +#define TIOCMIWAIT _IO('T', 92) +#define TIOCGICOUNT _IO('T', 93) + +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#define TIOCM_MODEM_BITS TIOCM_OUT2 + +#define N_TTY 0 +#define N_SLIP 1 +#define N_MOUSE 2 +#define N_PPP 3 +#define N_STRIP 4 +#define N_AX25 5 +#define N_X25 6 +#define N_6PACK 7 +#define N_MASC 8 +#define N_R3964 9 +#define N_PROFIBUS_FDL 10 +#define N_IRDA 11 +#define N_SMSBLOCK 12 +#define N_HDLC 13 +#define N_SYNC_PPP 14 +#define N_HCI 15 + +#define FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) + +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, int) +#define SIOCGPGRP _IOW('s', 9, int) +#define SIOCGSTAMP _IOR('s', 100, char[8]) + +#define SIOCADDRT 0x890B +#define SIOCDELRT 0x890C +#define SIOCRTMSG 0x890D + +#define SIOCGIFNAME 0x8910 +#define SIOCSIFLINK 0x8911 +#define SIOCGIFCONF 0x8912 +#define SIOCGIFFLAGS 0x8913 +#define SIOCSIFFLAGS 0x8914 +#define SIOCGIFADDR 0x8915 +#define SIOCSIFADDR 0x8916 +#define SIOCGIFDSTADDR 0x8917 +#define SIOCSIFDSTADDR 0x8918 +#define SIOCGIFBRDADDR 0x8919 +#define SIOCSIFBRDADDR 0x891a +#define SIOCGIFNETMASK 0x891b +#define SIOCSIFNETMASK 0x891c +#define SIOCGIFMETRIC 0x891d +#define SIOCSIFMETRIC 0x891e +#define SIOCGIFMEM 0x891f +#define SIOCSIFMEM 0x8920 +#define SIOCGIFMTU 0x8921 +#define SIOCSIFMTU 0x8922 +#define SIOCSIFHWADDR 0x8924 +#define SIOCGIFENCAP 0x8925 +#define SIOCSIFENCAP 0x8926 +#define SIOCGIFHWADDR 0x8927 +#define SIOCGIFSLAVE 0x8929 +#define SIOCSIFSLAVE 0x8930 +#define SIOCADDMULTI 0x8931 +#define SIOCDELMULTI 0x8932 +#define SIOCGIFINDEX 0x8933 +#define SIOGIFINDEX SIOCGIFINDEX +#define SIOCSIFPFLAGS 0x8934 +#define SIOCGIFPFLAGS 0x8935 +#define SIOCDIFADDR 0x8936 +#define SIOCSIFHWBROADCAST 0x8937 +#define SIOCGIFCOUNT 0x8938 + +#define SIOCGIFBR 0x8940 +#define SIOCSIFBR 0x8941 + +#define SIOCGIFTXQLEN 0x8942 +#define SIOCSIFTXQLEN 0x8943 + +#define SIOCDARP 0x8953 +#define SIOCGARP 0x8954 +#define SIOCSARP 0x8955 + +#define SIOCDRARP 0x8960 +#define SIOCGRARP 0x8961 +#define SIOCSRARP 0x8962 + +#define SIOCGIFMAP 0x8970 +#define SIOCSIFMAP 0x8971 + +#define SIOCADDDLCI 0x8980 +#define SIOCDELDLCI 0x8981 + +#define SIOCDEVPRIVATE 0x89F0 +#define SIOCPROTOPRIVATE 0x89E0 diff -Nur musl-0.9.15/arch/sh/bits/ipc.h musl-git/arch/sh/bits/ipc.h --- musl-0.9.15/arch/sh/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/ipc.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,14 @@ +struct ipc_perm +{ + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + long __pad1; + long __pad2; +}; + +#define IPC_64 0x100 diff -Nur musl-0.9.15/arch/sh/bits/limits.h musl-git/arch/sh/bits/limits.h --- musl-0.9.15/arch/sh/bits/limits.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/limits.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,8 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define PAGE_SIZE 4096 +#define LONG_BIT 32 +#endif + +#define LONG_MAX 0x7fffffffL +#define LLONG_MAX 0x7fffffffffffffffLL diff -Nur musl-0.9.15/arch/sh/bits/mman.h musl-git/arch/sh/bits/mman.h --- musl-0.9.15/arch/sh/bits/mman.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/mman.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,62 @@ +#define MAP_FAILED ((void *) -1) + +#define PROT_NONE 0 +#define PROT_READ 1 +#define PROT_WRITE 2 +#define PROT_EXEC 4 +#define PROT_GROWSDOWN 0x01000000 +#define PROT_GROWSUP 0x02000000 + +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_FIXED 0x10 + +#define MAP_TYPE 0x0f +#define MAP_FILE 0x00 +#define MAP_ANON 0x20 +#define MAP_ANONYMOUS MAP_ANON +#define MAP_32BIT 0x40 +#define MAP_NORESERVE 0x4000 +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 + +#define POSIX_MADV_NORMAL 0 +#define POSIX_MADV_RANDOM 1 +#define POSIX_MADV_SEQUENTIAL 2 +#define POSIX_MADV_WILLNEED 3 +#define POSIX_MADV_DONTNEED 4 + +#define MS_ASYNC 1 +#define MS_INVALIDATE 2 +#define MS_SYNC 4 + +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +#define MADV_DONTNEED 4 +#define MADV_REMOVE 9 +#define MADV_DONTFORK 10 +#define MADV_DOFORK 11 +#define MADV_MERGEABLE 12 +#define MADV_UNMERGEABLE 13 +#define MADV_HUGEPAGE 14 +#define MADV_NOHUGEPAGE 15 +#define MADV_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MADV_HWPOISON 100 +#define MADV_SOFT_OFFLINE 101 + +#define MREMAP_MAYMOVE 1 +#define MREMAP_FIXED 2 +#endif diff -Nur musl-0.9.15/arch/sh/bits/msg.h musl-git/arch/sh/bits/msg.h --- musl-0.9.15/arch/sh/bits/msg.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/msg.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,16 @@ +struct msqid_ds +{ + struct ipc_perm msg_perm; + time_t msg_stime; + int __unused1; + time_t msg_rtime; + int __unused2; + time_t msg_ctime; + int __unused3; + unsigned long msg_cbytes; + msgqnum_t msg_qnum; + msglen_t msg_qbytes; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long __unused[2]; +}; diff -Nur musl-0.9.15/arch/sh/bits/posix.h musl-git/arch/sh/bits/posix.h --- musl-0.9.15/arch/sh/bits/posix.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/posix.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff -Nur musl-0.9.15/arch/sh/bits/setjmp.h musl-git/arch/sh/bits/setjmp.h --- musl-0.9.15/arch/sh/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/setjmp.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[13]; diff -Nur musl-0.9.15/arch/sh/bits/shm.h musl-git/arch/sh/bits/shm.h --- musl-0.9.15/arch/sh/bits/shm.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,28 @@ +#define SHMLBA 16384 + +struct shmid_ds +{ + struct ipc_perm shm_perm; + size_t shm_segsz; + time_t shm_atime; + int __unused1; + time_t shm_dtime; + int __unused2; + time_t shm_ctime; + int __unused3; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad1; + unsigned long __pad2; +}; + +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; +}; diff -Nur musl-0.9.15/arch/sh/bits/signal.h musl-git/arch/sh/bits/signal.h --- musl-0.9.15/arch/sh/bits/signal.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/signal.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,76 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef int greg_t, gregset_t[16]; +typedef int freg_t, fpregset_t[16]; +typedef struct sigcontext { + unsigned long oldmask; + unsigned long sc_regs[16]; + unsigned long sc_pc, sc_pr, sc_sr; + unsigned long sc_gbr, sc_mach, sc_macl; + unsigned long sc_fpregs[16]; + unsigned long sc_xfpregs[16]; + unsigned int sc_fpscr, sc_fpul, sc_ownedfp; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[58]; +} mcontext_t; +#endif + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; +} 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 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff -Nur musl-0.9.15/arch/sh/bits/socket.h musl-git/arch/sh/bits/socket.h --- musl-0.9.15/arch/sh/bits/socket.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/socket.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,17 @@ +struct msghdr +{ + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + int msg_iovlen; + void *msg_control; + socklen_t msg_controllen; + int msg_flags; +}; + +struct cmsghdr +{ + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; diff -Nur musl-0.9.15/arch/sh/bits/statfs.h musl-git/arch/sh/bits/statfs.h --- musl-0.9.15/arch/sh/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/statfs.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +struct statfs { + unsigned long f_type, f_bsize; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree; + fsid_t f_fsid; + unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; +}; diff -Nur musl-0.9.15/arch/sh/bits/stat.h musl-git/arch/sh/bits/stat.h --- musl-0.9.15/arch/sh/bits/stat.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/stat.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat +{ + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + ino_t st_ino; +}; diff -Nur musl-0.9.15/arch/sh/bits/stdarg.h musl-git/arch/sh/bits/stdarg.h --- musl-0.9.15/arch/sh/bits/stdarg.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/stdarg.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,4 @@ +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#define va_copy(d,s) __builtin_va_copy(d,s) diff -Nur musl-0.9.15/arch/sh/bits/stdint.h musl-git/arch/sh/bits/stdint.h --- musl-0.9.15/arch/sh/bits/stdint.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/stdint.h 2014-03-10 16:52:06.000000000 +0100 @@ -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 diff -Nur musl-0.9.15/arch/sh/bits/syscall.h musl-git/arch/sh/bits/syscall.h --- musl-0.9.15/arch/sh/bits/syscall.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/syscall.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,684 @@ +#define __NR_restart_syscall 0 +#define __NR_exit 1 +#define __NR_fork 2 +#define __NR_read 3 +#define __NR_write 4 +#define __NR_open 5 +#define __NR_close 6 +#define __NR_waitpid 7 +#define __NR_creat 8 +#define __NR_link 9 +#define __NR_unlink 10 +#define __NR_execve 11 +#define __NR_chdir 12 +#define __NR_time 13 +#define __NR_mknod 14 +#define __NR_chmod 15 +#define __NR_lchown 16 +#define __NR_oldstat 18 +#define __NR_lseek 19 +#define __NR_getpid 20 +#define __NR_mount 21 +#define __NR_umount 22 +#define __NR_setuid 23 +#define __NR_getuid 24 +#define __NR_stime 25 +#define __NR_ptrace 26 +#define __NR_alarm 27 +#define __NR_oldfstat 28 +#define __NR_pause 29 +#define __NR_utime 30 +#define __NR_access 33 +#define __NR_nice 34 +#define __NR_sync 36 +#define __NR_kill 37 +#define __NR_rename 38 +#define __NR_mkdir 39 +#define __NR_rmdir 40 +#define __NR_dup 41 +#define __NR_pipe 42 +#define __NR_times 43 +#define __NR_brk 45 +#define __NR_setgid 46 +#define __NR_getgid 47 +#define __NR_signal 48 +#define __NR_geteuid 49 +#define __NR_getegid 50 +#define __NR_acct 51 +#define __NR_umount2 52 +#define __NR_ioctl 54 +#define __NR_fcntl 55 +#define __NR_setpgid 57 +#define __NR_umask 60 +#define __NR_chroot 61 +#define __NR_ustat 62 +#define __NR_dup2 63 +#define __NR_getppid 64 +#define __NR_getpgrp 65 +#define __NR_setsid 66 +#define __NR_sigaction 67 +#define __NR_sgetmask 68 +#define __NR_ssetmask 69 +#define __NR_setreuid 70 +#define __NR_setregid 71 +#define __NR_sigsuspend 72 +#define __NR_sigpending 73 +#define __NR_sethostname 74 +#define __NR_setrlimit 75 +#define __NR_getrlimit 76 +#define __NR_getrusage 77 +#define __NR_gettimeofday 78 +#define __NR_settimeofday 79 +#define __NR_getgroups 80 +#define __NR_setgroups 81 +#define __NR_symlink 83 +#define __NR_oldlstat 84 +#define __NR_readlink 85 +#define __NR_uselib 86 +#define __NR_swapon 87 +#define __NR_reboot 88 +#define __NR_readdir 89 +#define __NR_mmap 90 +#define __NR_munmap 91 +#define __NR_truncate 92 +#define __NR_ftruncate 93 +#define __NR_fchmod 94 +#define __NR_fchown 95 +#define __NR_getpriority 96 +#define __NR_setpriority 97 +#define __NR_statfs 99 +#define __NR_fstatfs 100 +#define __NR_socketcall 102 +#define __NR_syslog 103 +#define __NR_setitimer 104 +#define __NR_getitimer 105 +#define __NR_stat 106 +#define __NR_lstat 107 +#define __NR_fstat 108 +#define __NR_olduname 109 +#define __NR_vhangup 111 +#define __NR_wait4 114 +#define __NR_swapoff 115 +#define __NR_sysinfo 116 +#define __NR_ipc 117 +#define __NR_fsync 118 +#define __NR_sigreturn 119 +#define __NR_clone 120 +#define __NR_setdomainname 121 +#define __NR_uname 122 +#define __NR_cacheflush 123 +#define __NR_adjtimex 124 +#define __NR_mprotect 125 +#define __NR_sigprocmask 126 +#define __NR_init_module 128 +#define __NR_delete_module 129 +#define __NR_quotactl 131 +#define __NR_getpgid 132 +#define __NR_fchdir 133 +#define __NR_bdflush 134 +#define __NR_sysfs 135 +#define __NR_personality 136 +#define __NR_setfsuid 138 +#define __NR_setfsgid 139 +#define __NR__llseek 140 +#define __NR_getdents 141 +#define __NR__newselect 142 +#define __NR_flock 143 +#define __NR_msync 144 +#define __NR_readv 145 +#define __NR_writev 146 +#define __NR_getsid 147 +#define __NR_fdatasync 148 +#define __NR__sysctl 149 +#define __NR_mlock 150 +#define __NR_munlock 151 +#define __NR_mlockall 152 +#define __NR_munlockall 153 +#define __NR_sched_setparam 154 +#define __NR_sched_getparam 155 +#define __NR_sched_setscheduler 156 +#define __NR_sched_getscheduler 157 +#define __NR_sched_yield 158 +#define __NR_sched_get_priority_max 159 +#define __NR_sched_get_priority_min 160 +#define __NR_sched_rr_get_interval 161 +#define __NR_nanosleep 162 +#define __NR_mremap 163 +#define __NR_setresuid 164 +#define __NR_getresuid 165 +#define __NR_poll 168 +#define __NR_nfsservctl 169 +#define __NR_setresgid 170 +#define __NR_getresgid 171 +#define __NR_prctl 172 +#define __NR_rt_sigreturn 173 +#define __NR_rt_sigaction 174 +#define __NR_rt_sigprocmask 175 +#define __NR_rt_sigpending 176 +#define __NR_rt_sigtimedwait 177 +#define __NR_rt_sigqueueinfo 178 +#define __NR_rt_sigsuspend 179 +#define __NR_pread64 180 +#define __NR_pwrite64 181 +#define __NR_chown 182 +#define __NR_getcwd 183 +#define __NR_capget 184 +#define __NR_capset 185 +#define __NR_sigaltstack 186 +#define __NR_sendfile 187 +#define __NR_vfork 190 +#define __NR_ugetrlimit 191 +#define __NR_mmap2 192 +#define __NR_truncate64 193 +#define __NR_ftruncate64 194 +#define __NR_stat64 195 +#define __NR_lstat64 196 +#define __NR_fstat64 197 +#define __NR_lchown32 198 +#define __NR_getuid32 199 +#define __NR_getgid32 200 +#define __NR_geteuid32 201 +#define __NR_getegid32 202 +#define __NR_setreuid32 203 +#define __NR_setregid32 204 +#define __NR_getgroups32 205 +#define __NR_setgroups32 206 +#define __NR_fchown32 207 +#define __NR_setresuid32 208 +#define __NR_getresuid32 209 +#define __NR_setresgid32 210 +#define __NR_getresgid32 211 +#define __NR_chown32 212 +#define __NR_setuid32 213 +#define __NR_setgid32 214 +#define __NR_setfsuid32 215 +#define __NR_setfsgid32 216 +#define __NR_pivot_root 217 +#define __NR_mincore 218 +#define __NR_madvise 219 +#define __NR_getdents64 220 +#define __NR_fcntl64 221 +#define __NR_gettid 224 +#define __NR_readahead 225 +#define __NR_setxattr 226 +#define __NR_lsetxattr 227 +#define __NR_fsetxattr 228 +#define __NR_getxattr 229 +#define __NR_lgetxattr 230 +#define __NR_fgetxattr 231 +#define __NR_listxattr 232 +#define __NR_llistxattr 233 +#define __NR_flistxattr 234 +#define __NR_removexattr 235 +#define __NR_lremovexattr 236 +#define __NR_fremovexattr 237 +#define __NR_tkill 238 +#define __NR_sendfile64 239 +#define __NR_futex 240 +#define __NR_sched_setaffinity 241 +#define __NR_sched_getaffinity 242 +#define __NR_io_setup 245 +#define __NR_io_destroy 246 +#define __NR_io_getevents 247 +#define __NR_io_submit 248 +#define __NR_io_cancel 249 +#define __NR_fadvise64 250 +#define __NR_exit_group 252 +#define __NR_lookup_dcookie 253 +#define __NR_epoll_create 254 +#define __NR_epoll_ctl 255 +#define __NR_epoll_wait 256 +#define __NR_remap_file_pages 257 +#define __NR_set_tid_address 258 +#define __NR_timer_create 259 +#define __NR_timer_settime 260 +#define __NR_timer_gettime 261 +#define __NR_timer_getoverrun 262 +#define __NR_timer_delete 263 +#define __NR_clock_settime 264 +#define __NR_clock_gettime 265 +#define __NR_clock_getres 266 +#define __NR_clock_nanosleep 267 +#define __NR_statfs64 268 +#define __NR_fstatfs64 269 +#define __NR_tgkill 270 +#define __NR_utimes 271 +#define __NR_fadvise64_64 272 +#define __NR_mbind 274 +#define __NR_get_mempolicy 275 +#define __NR_set_mempolicy 276 +#define __NR_mq_open 277 +#define __NR_mq_unlink 278 +#define __NR_mq_timedsend 279 +#define __NR_mq_timedreceive 280 +#define __NR_mq_notify 281 +#define __NR_mq_getsetattr 282 +#define __NR_kexec_load 283 +#define __NR_waitid 284 +#define __NR_add_key 285 +#define __NR_request_key 286 +#define __NR_keyctl 287 +#define __NR_ioprio_set 288 +#define __NR_ioprio_get 289 +#define __NR_inotify_init 290 +#define __NR_inotify_add_watch 291 +#define __NR_inotify_rm_watch 292 +#define __NR_migrate_pages 294 +#define __NR_openat 295 +#define __NR_mkdirat 296 +#define __NR_mknodat 297 +#define __NR_fchownat 298 +#define __NR_futimesat 299 +#define __NR_fstatat64 300 +#define __NR_unlinkat 301 +#define __NR_renameat 302 +#define __NR_linkat 303 +#define __NR_symlinkat 304 +#define __NR_readlinkat 305 +#define __NR_fchmodat 306 +#define __NR_faccessat 307 +#define __NR_pselect6 308 +#define __NR_ppoll 309 +#define __NR_unshare 310 +#define __NR_set_robust_list 311 +#define __NR_get_robust_list 312 +#define __NR_splice 313 +#define __NR_sync_file_range 314 +#define __NR_tee 315 +#define __NR_vmsplice 316 +#define __NR_move_pages 317 +#define __NR_getcpu 318 +#define __NR_epoll_pwait 319 +#define __NR_utimensat 320 +#define __NR_signalfd 321 +#define __NR_timerfd_create 322 +#define __NR_eventfd 323 +#define __NR_fallocate 324 +#define __NR_timerfd_settime 325 +#define __NR_timerfd_gettime 326 +#define __NR_signalfd4 327 +#define __NR_eventfd2 328 +#define __NR_epoll_create1 329 +#define __NR_dup3 330 +#define __NR_pipe2 331 +#define __NR_inotify_init1 332 +#define __NR_preadv 333 +#define __NR_pwritev 334 +#define __NR_rt_tgsigqueueinfo 335 +#define __NR_perf_event_open 336 +#define __NR_fanotify_init 337 +#define __NR_fanotify_mark 338 +#define __NR_prlimit64 339 +#define __NR_socket 340 +#define __NR_bind 341 +#define __NR_connect 342 +#define __NR_listen 343 +#define __NR_accept 344 +#define __NR_getsockname 345 +#define __NR_getpeername 346 +#define __NR_socketpair 347 +#define __NR_send 348 +#define __NR_sendto 349 +#define __NR_recv 350 +#define __NR_recvfrom 351 +#define __NR_shutdown 352 +#define __NR_setsockopt 353 +#define __NR_getsockopt 354 +#define __NR_sendmsg 355 +#define __NR_recvmsg 356 +#define __NR_recvmmsg 357 +#define __NR_accept4 358 +#define __NR_name_to_handle_at 359 +#define __NR_open_by_handle_at 360 +#define __NR_clock_adjtime 361 +#define __NR_syncfs 362 +#define __NR_sendmmsg 363 +#define __NR_setns 364 +#define __NR_process_vm_readv 365 +#define __NR_process_vm_writev 366 +#define __NR_kcmp 367 +#define __NR_finit_module 368 + + +/* Repeated with SYS_ prefix */ + +#define SYS_restart_syscall 0 +#define SYS_exit 1 +#define SYS_fork 2 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_waitpid 7 +#define SYS_creat 8 +#define SYS_link 9 +#define SYS_unlink 10 +#define SYS_execve 11 +#define SYS_chdir 12 +#define SYS_time 13 +#define SYS_mknod 14 +#define SYS_chmod 15 +#define SYS_lchown 16 +#define SYS_oldstat 18 +#define SYS_lseek 19 +#define SYS_getpid 20 +#define SYS_mount 21 +#define SYS_umount 22 +#define SYS_setuid 23 +#define SYS_getuid 24 +#define SYS_stime 25 +#define SYS_ptrace 26 +#define SYS_alarm 27 +#define SYS_oldfstat 28 +#define SYS_pause 29 +#define SYS_utime 30 +#define SYS_access 33 +#define SYS_nice 34 +#define SYS_sync 36 +#define SYS_kill 37 +#define SYS_rename 38 +#define SYS_mkdir 39 +#define SYS_rmdir 40 +#define SYS_dup 41 +#define SYS_pipe 42 +#define SYS_times 43 +#define SYS_brk 45 +#define SYS_setgid 46 +#define SYS_getgid 47 +#define SYS_signal 48 +#define SYS_geteuid 49 +#define SYS_getegid 50 +#define SYS_acct 51 +#define SYS_umount2 52 +#define SYS_ioctl 54 +#define SYS_fcntl 55 +#define SYS_setpgid 57 +#define SYS_umask 60 +#define SYS_chroot 61 +#define SYS_ustat 62 +#define SYS_dup2 63 +#define SYS_getppid 64 +#define SYS_getpgrp 65 +#define SYS_setsid 66 +#define SYS_sigaction 67 +#define SYS_sgetmask 68 +#define SYS_ssetmask 69 +#define SYS_setreuid 70 +#define SYS_setregid 71 +#define SYS_sigsuspend 72 +#define SYS_sigpending 73 +#define SYS_sethostname 74 +#define SYS_setrlimit 75 +#define SYS_getrlimit 76 +#define SYS_getrusage 77 +#define SYS_gettimeofday 78 +#define SYS_settimeofday 79 +#define SYS_getgroups 80 +#define SYS_setgroups 81 +#define SYS_symlink 83 +#define SYS_oldlstat 84 +#define SYS_readlink 85 +#define SYS_uselib 86 +#define SYS_swapon 87 +#define SYS_reboot 88 +#define SYS_readdir 89 +#define SYS_mmap 90 +#define SYS_munmap 91 +#define SYS_truncate 92 +#define SYS_ftruncate 93 +#define SYS_fchmod 94 +#define SYS_fchown 95 +#define SYS_getpriority 96 +#define SYS_setpriority 97 +#define SYS_statfs 99 +#define SYS_fstatfs 100 +#define SYS_socketcall 102 +#define SYS_syslog 103 +#define SYS_setitimer 104 +#define SYS_getitimer 105 +#define SYS_stat 106 +#define SYS_lstat 107 +#define SYS_fstat 108 +#define SYS_olduname 109 +#define SYS_vhangup 111 +#define SYS_wait4 114 +#define SYS_swapoff 115 +#define SYS_sysinfo 116 +#define SYS_ipc 117 +#define SYS_fsync 118 +#define SYS_sigreturn 119 +#define SYS_clone 120 +#define SYS_setdomainname 121 +#define SYS_uname 122 +#define SYS_cacheflush 123 +#define SYS_adjtimex 124 +#define SYS_mprotect 125 +#define SYS_sigprocmask 126 +#define SYS_init_module 128 +#define SYS_delete_module 129 +#define SYS_quotactl 131 +#define SYS_getpgid 132 +#define SYS_fchdir 133 +#define SYS_bdflush 134 +#define SYS_sysfs 135 +#define SYS_personality 136 +#define SYS_setfsuid 138 +#define SYS_setfsgid 139 +#define SYS__llseek 140 +#define SYS_getdents 141 +#define SYS__newselect 142 +#define SYS_flock 143 +#define SYS_msync 144 +#define SYS_readv 145 +#define SYS_writev 146 +#define SYS_getsid 147 +#define SYS_fdatasync 148 +#define SYS__sysctl 149 +#define SYS_mlock 150 +#define SYS_munlock 151 +#define SYS_mlockall 152 +#define SYS_munlockall 153 +#define SYS_sched_setparam 154 +#define SYS_sched_getparam 155 +#define SYS_sched_setscheduler 156 +#define SYS_sched_getscheduler 157 +#define SYS_sched_yield 158 +#define SYS_sched_get_priority_max 159 +#define SYS_sched_get_priority_min 160 +#define SYS_sched_rr_get_interval 161 +#define SYS_nanosleep 162 +#define SYS_mremap 163 +#define SYS_setresuid 164 +#define SYS_getresuid 165 +#define SYS_poll 168 +#define SYS_nfsservctl 169 +#define SYS_setresgid 170 +#define SYS_getresgid 171 +#define SYS_prctl 172 +#define SYS_rt_sigreturn 173 +#define SYS_rt_sigaction 174 +#define SYS_rt_sigprocmask 175 +#define SYS_rt_sigpending 176 +#define SYS_rt_sigtimedwait 177 +#define SYS_rt_sigqueueinfo 178 +#define SYS_rt_sigsuspend 179 +#define SYS_pread64 180 +#define SYS_pwrite64 181 +#define SYS_chown 182 +#define SYS_getcwd 183 +#define SYS_capget 184 +#define SYS_capset 185 +#define SYS_sigaltstack 186 +#define SYS_sendfile 187 +#define SYS_vfork 190 +#define SYS_ugetrlimit 191 +#define SYS_mmap2 192 +#define SYS_truncate64 193 +#define SYS_ftruncate64 194 +#define SYS_stat64 195 +#define SYS_lstat64 196 +#define SYS_fstat64 197 +#define SYS_lchown32 198 +#define SYS_getuid32 199 +#define SYS_getgid32 200 +#define SYS_geteuid32 201 +#define SYS_getegid32 202 +#define SYS_setreuid32 203 +#define SYS_setregid32 204 +#define SYS_getgroups32 205 +#define SYS_setgroups32 206 +#define SYS_fchown32 207 +#define SYS_setresuid32 208 +#define SYS_getresuid32 209 +#define SYS_setresgid32 210 +#define SYS_getresgid32 211 +#define SYS_chown32 212 +#define SYS_setuid32 213 +#define SYS_setgid32 214 +#define SYS_setfsuid32 215 +#define SYS_setfsgid32 216 +#define SYS_pivot_root 217 +#define SYS_mincore 218 +#define SYS_madvise 219 +#define SYS_getdents64 220 +#define SYS_fcntl64 221 +#define SYS_gettid 224 +#define SYS_readahead 225 +#define SYS_setxattr 226 +#define SYS_lsetxattr 227 +#define SYS_fsetxattr 228 +#define SYS_getxattr 229 +#define SYS_lgetxattr 230 +#define SYS_fgetxattr 231 +#define SYS_listxattr 232 +#define SYS_llistxattr 233 +#define SYS_flistxattr 234 +#define SYS_removexattr 235 +#define SYS_lremovexattr 236 +#define SYS_fremovexattr 237 +#define SYS_tkill 238 +#define SYS_sendfile64 239 +#define SYS_futex 240 +#define SYS_sched_setaffinity 241 +#define SYS_sched_getaffinity 242 +#define SYS_io_setup 245 +#define SYS_io_destroy 246 +#define SYS_io_getevents 247 +#define SYS_io_submit 248 +#define SYS_io_cancel 249 +#define SYS_fadvise64 250 +#define SYS_exit_group 252 +#define SYS_lookup_dcookie 253 +#define SYS_epoll_create 254 +#define SYS_epoll_ctl 255 +#define SYS_epoll_wait 256 +#define SYS_remap_file_pages 257 +#define SYS_set_tid_address 258 +#define SYS_timer_create 259 +#define SYS_timer_settime 260 +#define SYS_timer_gettime 261 +#define SYS_timer_getoverrun 262 +#define SYS_timer_delete 263 +#define SYS_clock_settime 264 +#define SYS_clock_gettime 265 +#define SYS_clock_getres 266 +#define SYS_clock_nanosleep 267 +#define SYS_statfs64 268 +#define SYS_fstatfs64 269 +#define SYS_tgkill 270 +#define SYS_utimes 271 +#define SYS_fadvise64_64 272 +#define SYS_mbind 274 +#define SYS_get_mempolicy 275 +#define SYS_set_mempolicy 276 +#define SYS_mq_open 277 +#define SYS_mq_unlink 278 +#define SYS_mq_timedsend 279 +#define SYS_mq_timedreceive 280 +#define SYS_mq_notify 281 +#define SYS_mq_getsetattr 282 +#define SYS_kexec_load 283 +#define SYS_waitid 284 +#define SYS_add_key 285 +#define SYS_request_key 286 +#define SYS_keyctl 287 +#define SYS_ioprio_set 288 +#define SYS_ioprio_get 289 +#define SYS_inotify_init 290 +#define SYS_inotify_add_watch 291 +#define SYS_inotify_rm_watch 292 +#define SYS_migrate_pages 294 +#define SYS_openat 295 +#define SYS_mkdirat 296 +#define SYS_mknodat 297 +#define SYS_fchownat 298 +#define SYS_futimesat 299 +#define SYS_fstatat64 300 +#define SYS_unlinkat 301 +#define SYS_renameat 302 +#define SYS_linkat 303 +#define SYS_symlinkat 304 +#define SYS_readlinkat 305 +#define SYS_fchmodat 306 +#define SYS_faccessat 307 +#define SYS_pselect6 308 +#define SYS_ppoll 309 +#define SYS_unshare 310 +#define SYS_set_robust_list 311 +#define SYS_get_robust_list 312 +#define SYS_splice 313 +#define SYS_sync_file_range 314 +#define SYS_tee 315 +#define SYS_vmsplice 316 +#define SYS_move_pages 317 +#define SYS_getcpu 318 +#define SYS_epoll_pwait 319 +#define SYS_utimensat 320 +#define SYS_signalfd 321 +#define SYS_timerfd_create 322 +#define SYS_eventfd 323 +#define SYS_fallocate 324 +#define SYS_timerfd_settime 325 +#define SYS_timerfd_gettime 326 +#define SYS_signalfd4 327 +#define SYS_eventfd2 328 +#define SYS_epoll_create1 329 +#define SYS_dup3 330 +#define SYS_pipe2 331 +#define SYS_inotify_init1 332 +#define SYS_preadv 333 +#define SYS_pwritev 334 +#define SYS_rt_tgsigqueueinfo 335 +#define SYS_perf_event_open 336 +#define SYS_fanotify_init 337 +#define SYS_fanotify_mark 338 +#define SYS_prlimit64 339 +#define SYS_socket 340 +#define SYS_bind 341 +#define SYS_connect 342 +#define SYS_listen 343 +#define SYS_accept 344 +#define SYS_getsockname 345 +#define SYS_getpeername 346 +#define SYS_socketpair 347 +#define SYS_send 348 +#define SYS_sendto 349 +#define SYS_recv 350 +#define SYS_recvfrom 351 +#define SYS_shutdown 352 +#define SYS_setsockopt 353 +#define SYS_getsockopt 354 +#define SYS_sendmsg 355 +#define SYS_recvmsg 356 +#define SYS_recvmmsg 357 +#define SYS_accept4 358 +#define SYS_name_to_handle_at 359 +#define SYS_open_by_handle_at 360 +#define SYS_clock_adjtime 361 +#define SYS_syncfs 362 +#define SYS_sendmmsg 363 +#define SYS_setns 364 +#define SYS_process_vm_readv 365 +#define SYS_process_vm_writev 366 +#define SYS_kcmp 367 +#define SYS_finit_module 368 diff -Nur musl-0.9.15/arch/sh/bits/termios.h musl-git/arch/sh/bits/termios.h --- musl-0.9.15/arch/sh/bits/termios.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,160 @@ +struct termios +{ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +#define VTIME 5 +#define VMIN 6 +#define VSWTC 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VEOL 11 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOL2 16 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CBAUD 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/sh/bits/user.h musl-git/arch/sh/bits/user.h --- musl-0.9.15/arch/sh/bits/user.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/bits/user.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,75 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 + +#define REG_REG0 0 +#define REG_REG15 15 +#define REG_PC 16 +#define REG_PR 17 +#define REG_SR 18 +#define REG_GBR 19 +#define REG_MACH 20 +#define REG_MACL 21 +#define REG_SYSCALL 22 +#define REG_FPREG0 23 +#define REG_FPREG15 38 +#define REG_XFREG0 39 +#define REG_XFREG15 54 +#define REG_FPSCR 55 +#define REG_FPUL 56 + +struct pt_regs { + unsigned long regs[16]; + unsigned long pc; + unsigned long pr; + unsigned long sr; + unsigned long gbr; + unsigned long mach; + unsigned long macl; + long tra; +}; + +struct pt_dspregs { + unsigned long a1; + unsigned long a0g; + unsigned long a1g; + unsigned long m0; + unsigned long m1; + unsigned long a0; + unsigned long x0; + unsigned long x1; + unsigned long y0; + unsigned long y1; + unsigned long dsr; + unsigned long rs; + unsigned long re; + unsigned long mod; +}; + +struct user_fpu_struct { + unsigned long fp_regs[16]; + unsigned long xfp_regs[16]; + unsigned long fpscr; + unsigned long fpul; +}; + +#define ELF_NGREG 23 +typedef unsigned long elf_greg_t; +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; +typedef struct user_fpu_struct elf_fpregset_t; + +struct user { + struct pt_regs regs; + struct user_fpu_struct fpu; + int u_fpvalid; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_data; + unsigned long start_stack; + long int signal; + unsigned long u_ar0; + struct user_fpu_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; +}; diff -Nur musl-0.9.15/arch/sh/crt_arch.h musl-git/arch/sh/crt_arch.h --- musl-0.9.15/arch/sh/crt_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/crt_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,9 @@ +__asm__("\ +.global _start \n\ +_start: \n\ + mov r15, r4 \n\ + mov #-16, r0 \n\ + and r0, r15 \n\ + bsr __cstart \n\ + nop \n\ +"); diff -Nur musl-0.9.15/arch/sh/pthread_arch.h musl-git/arch/sh/pthread_arch.h --- musl-0.9.15/arch/sh/pthread_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/pthread_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,11 @@ +static inline struct pthread *__pthread_self() +{ + char *self; + __asm__ __volatile__ ("stc gbr,%0" : "=r" (self) ); + return (struct pthread *) (self + 8 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8) + +#define CANCEL_REG_IP 17 diff -Nur musl-0.9.15/arch/sh/reloc.h musl-git/arch/sh/reloc.h --- musl-0.9.15/arch/sh/reloc.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/reloc.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,47 @@ +#if __BYTE_ORDER == __BIG_ENDIAN +#define ENDIAN_SUFFIX "eb" +#else +#define ENDIAN_SUFFIX "" +#endif + +#define LDSO_ARCH "sh" ENDIAN_SUFFIX + +#define IS_COPY(x) ((x) == R_SH_COPY) +#define IS_PLT(x) ((x) == R_SH_JMP_SLOT) + +static inline void do_single_reloc( + struct dso *self, unsigned char *base_addr, + size_t *reloc_addr, int type, size_t addend, + Sym *sym, size_t sym_size, + struct symdef def, size_t sym_val) +{ + switch(type) { + case R_SH_GLOB_DAT: + case R_SH_JMP_SLOT: + *reloc_addr = sym_val; + break; + case R_SH_RELATIVE: + *reloc_addr = (size_t)base_addr + addend; + break; + case R_SH_DIR32: + *reloc_addr = sym_val + addend; + break; + case R_SH_REL32: + *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; + break; + case R_SH_COPY: + memcpy(reloc_addr, (void *)sym_val, sym_size); + break; + case R_SH_TLS_DTPMOD32: + *reloc_addr += def.dso ? def.dso->tls_id : self->tls_id; + break; + case R_SH_TLS_DTPOFF32: + *reloc_addr += def.sym->st_value; + break; + case R_SH_TLS_TPOFF32: + *reloc_addr += def.sym + ? def.sym->st_value + def.dso->tls_offset + 8 + : self->tls_offset + 8; + break; + } +} diff -Nur musl-0.9.15/arch/sh/src/atomic.c musl-git/arch/sh/src/atomic.c --- musl-0.9.15/arch/sh/src/atomic.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/src/atomic.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,146 @@ +#include "libc.h" + +#define LLSC_CLOBBERS "r0", "t", "memory" +#define LLSC_START(mem) \ + "0: movli.l @" mem ", r0\n" +#define LLSC_END(mem) \ + "1: movco.l r0, @" mem "\n" \ + " bf 0b\n" \ + " synco\n" + +/* gusa is a hack in the kernel which lets you create a sequence of instructions + * which will be restarted if the process is preempted in the middle of the + * sequence. It will do for implementing atomics on non-smp systems. ABI is: + * r0 = address of first instruction after the atomic sequence + * r1 = original stack pointer + * r15 = -1 * length of atomic sequence in bytes + */ +#define GUSA_CLOBBERS "r0", "r1", "memory" +#define GUSA_START(mem,old,nop) \ + " .align 2\n" \ + " mova 1f, r0\n" \ + nop \ + " mov r15, r1\n" \ + " mov #(0f-1f), r15\n" \ + "0: mov.l @" mem ", " old "\n" +/* the target of mova must be 4 byte aligned, so we may need a nop */ +#define GUSA_START_ODD(mem,old) GUSA_START(mem,old,"") +#define GUSA_START_EVEN(mem,old) GUSA_START(mem,old,"\tnop\n") +#define GUSA_END(mem,new) \ + " mov.l " new ", @" mem "\n" \ + "1: mov r1, r15\n" + +#define CPU_HAS_LLSC 0x0040 + +int __sh_cas(volatile int *p, int t, int s) +{ + int old; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " cmp/eq %0, %2\n" + " bf 1f\n" + " mov %3, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(p), "r"(t), "r"(s) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%1", "%0") + " cmp/eq %0, %2\n" + " bf 1f\n" + GUSA_END("%1", "%3") + : "=&r"(old) : "r"(p), "r"(t), "r"(s) : GUSA_CLOBBERS, "t"); + } + return old; +} + +int __sh_swap(volatile int *x, int v) +{ + int old; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " mov %2, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%1", "%0") + GUSA_END("%1", "%2") + : "=&r"(old) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } + return old; +} + +int __sh_fetch_add(volatile int *x, int v) +{ + int old, dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " add %2, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%2", "%0") + " mov %0, %1\n" + " add %3, %1\n" + GUSA_END("%2", "%1") + : "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } + return old; +} + +void __sh_store(volatile int *p, int x) +{ + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + " mov.l %1, @%0\n" + " synco\n" + : : "r"(p), "r"(x) : "memory"); + } else { + __asm__ __volatile__( + " mov.l %1, @%0\n" + : : "r"(p), "r"(x) : "memory"); + } +} + +void __sh_and(volatile int *x, int v) +{ + int dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%0") + " and %1, r0\n" + LLSC_END("%0") + : : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_ODD("%1", "%0") + " and %2, %0\n" + GUSA_END("%1", "%0") + : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } +} + +void __sh_or(volatile int *x, int v) +{ + int dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%0") + " or %1, r0\n" + LLSC_END("%0") + : : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_ODD("%1", "%0") + " or %2, %0\n" + GUSA_END("%1", "%0") + : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } +} diff -Nur musl-0.9.15/arch/sh/src/__fpsrc_values.c musl-git/arch/sh/src/__fpsrc_values.c --- musl-0.9.15/arch/sh/src/__fpsrc_values.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/src/__fpsrc_values.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,2 @@ +/* used by gcc for switching the FPU between single and double precision */ +const unsigned long __fpscr_values[2] = { 0, 0x80000 }; diff -Nur musl-0.9.15/arch/sh/syscall_arch.h musl-git/arch/sh/syscall_arch.h --- musl-0.9.15/arch/sh/syscall_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/sh/syscall_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,87 @@ +#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)) + +/* The extra OR instructions are to work around a hardware bug: + * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf + */ +#define __asm_syscall(trapno, ...) do { \ + __asm__ __volatile__ ( \ + "trapa #" #trapno "\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + : "=r"(r0) : __VA_ARGS__ : "memory"); \ + return r0; \ + } while (0) + +static inline long __syscall0(long n) +{ + register long r3 __asm__("r3") = n; + register long r0 __asm__("r0"); + __asm_syscall(16, "r"(r3)); +} + +static inline long __syscall1(long n, long a) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r0 __asm__("r0"); + __asm_syscall(17, "r"(r3), "r"(r4)); +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r0 __asm__("r0"); + __asm_syscall(18, "r"(r3), "r"(r4), "r"(r5)); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r0 __asm__("r0"); + __asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6)); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0"); + __asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + __asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0)); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + register long r1 __asm__("r1") = f; + __asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1)); +} diff -Nur musl-0.9.15/arch/x32/atomic.h musl-git/arch/x32/atomic.h --- musl-0.9.15/arch/x32/atomic.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/atomic.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,125 @@ +#ifndef _INTERNAL_ATOMIC_H +#define _INTERNAL_ATOMIC_H + +#include + +static inline int a_ctz_64(uint64_t x) +{ + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; +} + +static inline int a_ctz_l(unsigned long x) +{ + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; +} + +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + __asm__( "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + __asm__( "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); +} + +static inline void a_store_l(volatile void *p, long x) +{ + __asm__( "mov %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); +} + +static inline void a_or_l(volatile void *p, long v) +{ + __asm__( "lock ; or %1, %0" + : "=m"(*(long *)p) : "r"(v) : "memory" ); +} + +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ + __asm__( "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +static inline long a_cas_l(volatile void *p, long t, long s) +{ + __asm__( "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +static inline int a_cas(volatile int *p, int t, int s) +{ + __asm__( "lock ; cmpxchg %3, %1" + : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); + return t; +} + +static inline void *a_swap_p(void *volatile *x, void *v) +{ + __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(void **)x) : "0"(v) : "memory" ); + return v; +} +static inline long a_swap_l(volatile void *x, long v) +{ + __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(long *)x) : "0"(v) : "memory" ); + return v; +} + +static inline void a_or(volatile void *p, int v) +{ + __asm__( "lock ; or %1, %0" + : "=m"(*(int *)p) : "r"(v) : "memory" ); +} + +static inline void a_and(volatile void *p, int v) +{ + __asm__( "lock ; and %1, %0" + : "=m"(*(int *)p) : "r"(v) : "memory" ); +} + +static inline int a_swap(volatile int *x, int v) +{ + __asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" ); + return v; +} + +#define a_xchg a_swap + +static inline int a_fetch_add(volatile int *x, int v) +{ + __asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" ); + return v; +} + +static inline void a_inc(volatile int *x) +{ + __asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" ); +} + +static inline void a_dec(volatile int *x) +{ + __asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" ); +} + +static inline void a_store(volatile int *p, int x) +{ + __asm__( "mov %1, %0" : "=m"(*p) : "r"(x) : "memory" ); +} + +static inline void a_spin() +{ + __asm__ __volatile__( "pause" : : : "memory" ); +} + +static inline void a_crash() +{ + __asm__ __volatile__( "hlt" : : : "memory" ); +} + + +#endif diff -Nur musl-0.9.15/arch/x32/bits/alltypes.h.in musl-git/arch/x32/bits/alltypes.h.in --- musl-0.9.15/arch/x32/bits/alltypes.h.in 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/alltypes.h.in 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,28 @@ +#define _Addr int +#define _Int64 long long +#define _Reg long long + +TYPEDEF __builtin_va_list va_list; +TYPEDEF __builtin_va_list __isoc_va_list; + +#ifndef __cplusplus +TYPEDEF long wchar_t; +#endif +TYPEDEF unsigned wint_t; + +#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 2 +TYPEDEF long double float_t; +TYPEDEF long double double_t; +#else +TYPEDEF float float_t; +TYPEDEF double double_t; +#endif + +TYPEDEF long long time_t; +TYPEDEF long long suseconds_t; + +TYPEDEF struct { union { int __i[14]; unsigned long __s[7]; } __u; } pthread_attr_t; +TYPEDEF struct { union { int __i[10]; void *__p[5]; } __u; } pthread_mutex_t; +TYPEDEF struct { union { int __i[12]; void *__p[6]; } __u; } pthread_cond_t; +TYPEDEF struct { union { int __i[14]; void *__p[7]; } __u; } pthread_rwlock_t; +TYPEDEF struct { union { int __i[8]; void *__p[4]; } __u; } pthread_barrier_t; diff -Nur musl-0.9.15/arch/x32/bits/endian.h musl-git/arch/x32/bits/endian.h --- musl-0.9.15/arch/x32/bits/endian.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/endian.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +#define __BYTE_ORDER __LITTLE_ENDIAN diff -Nur musl-0.9.15/arch/x32/bits/errno.h musl-git/arch/x32/bits/errno.h --- musl-0.9.15/arch/x32/bits/errno.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/errno.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,134 @@ +#define EPERM 1 +#define ENOENT 2 +#define ESRCH 3 +#define EINTR 4 +#define EIO 5 +#define ENXIO 6 +#define E2BIG 7 +#define ENOEXEC 8 +#define EBADF 9 +#define ECHILD 10 +#define EAGAIN 11 +#define ENOMEM 12 +#define EACCES 13 +#define EFAULT 14 +#define ENOTBLK 15 +#define EBUSY 16 +#define EEXIST 17 +#define EXDEV 18 +#define ENODEV 19 +#define ENOTDIR 20 +#define EISDIR 21 +#define EINVAL 22 +#define ENFILE 23 +#define EMFILE 24 +#define ENOTTY 25 +#define ETXTBSY 26 +#define EFBIG 27 +#define ENOSPC 28 +#define ESPIPE 29 +#define EROFS 30 +#define EMLINK 31 +#define EPIPE 32 +#define EDOM 33 +#define ERANGE 34 +#define EDEADLK 35 +#define ENAMETOOLONG 36 +#define ENOLCK 37 +#define ENOSYS 38 +#define ENOTEMPTY 39 +#define ELOOP 40 +#define EWOULDBLOCK EAGAIN +#define ENOMSG 42 +#define EIDRM 43 +#define ECHRNG 44 +#define EL2NSYNC 45 +#define EL3HLT 46 +#define EL3RST 47 +#define ELNRNG 48 +#define EUNATCH 49 +#define ENOCSI 50 +#define EL2HLT 51 +#define EBADE 52 +#define EBADR 53 +#define EXFULL 54 +#define ENOANO 55 +#define EBADRQC 56 +#define EBADSLT 57 +#define EDEADLOCK EDEADLK +#define EBFONT 59 +#define ENOSTR 60 +#define ENODATA 61 +#define ETIME 62 +#define ENOSR 63 +#define ENONET 64 +#define ENOPKG 65 +#define EREMOTE 66 +#define ENOLINK 67 +#define EADV 68 +#define ESRMNT 69 +#define ECOMM 70 +#define EPROTO 71 +#define EMULTIHOP 72 +#define EDOTDOT 73 +#define EBADMSG 74 +#define EOVERFLOW 75 +#define ENOTUNIQ 76 +#define EBADFD 77 +#define EREMCHG 78 +#define ELIBACC 79 +#define ELIBBAD 80 +#define ELIBSCN 81 +#define ELIBMAX 82 +#define ELIBEXEC 83 +#define EILSEQ 84 +#define ERESTART 85 +#define ESTRPIPE 86 +#define EUSERS 87 +#define ENOTSOCK 88 +#define EDESTADDRREQ 89 +#define EMSGSIZE 90 +#define EPROTOTYPE 91 +#define ENOPROTOOPT 92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP 95 +#define ENOTSUP EOPNOTSUPP +#define EPFNOSUPPORT 96 +#define EAFNOSUPPORT 97 +#define EADDRINUSE 98 +#define EADDRNOTAVAIL 99 +#define ENETDOWN 100 +#define ENETUNREACH 101 +#define ENETRESET 102 +#define ECONNABORTED 103 +#define ECONNRESET 104 +#define ENOBUFS 105 +#define EISCONN 106 +#define ENOTCONN 107 +#define ESHUTDOWN 108 +#define ETOOMANYREFS 109 +#define ETIMEDOUT 110 +#define ECONNREFUSED 111 +#define EHOSTDOWN 112 +#define EHOSTUNREACH 113 +#define EALREADY 114 +#define EINPROGRESS 115 +#define ESTALE 116 +#define EUCLEAN 117 +#define ENOTNAM 118 +#define ENAVAIL 119 +#define EISNAM 120 +#define EREMOTEIO 121 +#define EDQUOT 122 +#define ENOMEDIUM 123 +#define EMEDIUMTYPE 124 +#define ECANCELED 125 +#define ENOKEY 126 +#define EKEYEXPIRED 127 +#define EKEYREVOKED 128 +#define EKEYREJECTED 129 +#define EOWNERDEAD 130 +#define ENOTRECOVERABLE 131 +#define ERFKILL 132 +#define EHWPOISON 133 diff -Nur musl-0.9.15/arch/x32/bits/fcntl.h musl-git/arch/x32/bits/fcntl.h --- musl-0.9.15/arch/x32/bits/fcntl.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/fcntl.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,39 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0 +#define O_NOATIME 01000000 +#define O_TMPFILE 020200000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD 0 +#define F_GETFD 1 +#define F_SETFD 2 +#define F_GETFL 3 +#define F_SETFL 4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 + +#define F_SETOWN_EX 15 +#define F_GETOWN_EX 16 + +#define F_GETOWNER_UIDS 17 diff -Nur musl-0.9.15/arch/x32/bits/fenv.h musl-git/arch/x32/bits/fenv.h --- musl-0.9.15/arch/x32/bits/fenv.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/fenv.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,34 @@ +#define FE_INVALID 1 +#define __FE_DENORM 2 +#define FE_DIVBYZERO 4 +#define FE_OVERFLOW 8 +#define FE_UNDERFLOW 16 +#define FE_INEXACT 32 + +#define FE_ALL_EXCEPT 63 + +#define FE_TONEAREST 0 +#define FE_DOWNWARD 0x400 +#define FE_UPWARD 0x800 +#define FE_TOWARDZERO 0xc00 + +typedef unsigned short fexcept_t; + +typedef struct { + unsigned short __control_word; + unsigned short __unused1; + unsigned short __status_word; + unsigned short __unused2; + unsigned short __tags; + unsigned short __unused3; + unsigned int __eip; + unsigned short __cs_selector; + unsigned int __opcode:11; + unsigned int __unused4:5; + unsigned int __data_offset; + unsigned short __data_selector; + unsigned short __unused5; + unsigned int __mxcsr; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff -Nur musl-0.9.15/arch/x32/bits/float.h musl-git/arch/x32/bits/float.h --- musl-0.9.15/arch/x32/bits/float.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/float.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,21 @@ +#define FLT_ROUNDS 1 +#ifdef __FLT_EVAL_METHOD__ +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#else +#define FLT_EVAL_METHOD 0 +#endif + +#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L +#define LDBL_MIN 3.3621031431120935063e-4932L +#define LDBL_MAX 1.1897314953572317650e+4932L +#define LDBL_EPSILON 1.0842021724855044340e-19L + +#define LDBL_MANT_DIG 64 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 18 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 21 diff -Nur musl-0.9.15/arch/x32/bits/ioctl.h musl-git/arch/x32/bits/ioctl.h --- musl-0.9.15/arch/x32/bits/ioctl.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/ioctl.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,197 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 0U +#define _IOC_WRITE 1U +#define _IOC_READ 2U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c)) + +#define TCGETS 0x5401 +#define TCSETS 0x5402 +#define TCSETSW 0x5403 +#define TCSETSF 0x5404 +#define TCGETA 0x5405 +#define TCSETA 0x5406 +#define TCSETAW 0x5407 +#define TCSETAF 0x5408 +#define TCSBRK 0x5409 +#define TCXONC 0x540A +#define TCFLSH 0x540B +#define TIOCEXCL 0x540C +#define TIOCNXCL 0x540D +#define TIOCSCTTY 0x540E +#define TIOCGPGRP 0x540F +#define TIOCSPGRP 0x5410 +#define TIOCOUTQ 0x5411 +#define TIOCSTI 0x5412 +#define TIOCGWINSZ 0x5413 +#define TIOCSWINSZ 0x5414 +#define TIOCMGET 0x5415 +#define TIOCMBIS 0x5416 +#define TIOCMBIC 0x5417 +#define TIOCMSET 0x5418 +#define TIOCGSOFTCAR 0x5419 +#define TIOCSSOFTCAR 0x541A +#define FIONREAD 0x541B +#define TIOCINQ FIONREAD +#define TIOCLINUX 0x541C +#define TIOCCONS 0x541D +#define TIOCGSERIAL 0x541E +#define TIOCSSERIAL 0x541F +#define TIOCPKT 0x5420 +#define FIONBIO 0x5421 +#define TIOCNOTTY 0x5422 +#define TIOCSETD 0x5423 +#define TIOCGETD 0x5424 +#define TCSBRKP 0x5425 +#define TIOCTTYGSTRUCT 0x5426 +#define TIOCSBRK 0x5427 +#define TIOCCBRK 0x5428 +#define TIOCGSID 0x5429 +#define TIOCGPTN 0x80045430 +#define TIOCSPTLCK 0x40045431 +#define TCGETX 0x5432 +#define TCSETX 0x5433 +#define TCSETXF 0x5434 +#define TCSETXW 0x5435 + +#define FIONCLEX 0x5450 +#define FIOCLEX 0x5451 +#define FIOASYNC 0x5452 +#define TIOCSERCONFIG 0x5453 +#define TIOCSERGWILD 0x5454 +#define TIOCSERSWILD 0x5455 +#define TIOCGLCKTRMIOS 0x5456 +#define TIOCSLCKTRMIOS 0x5457 +#define TIOCSERGSTRUCT 0x5458 +#define TIOCSERGETLSR 0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT 0x545C +#define TIOCGICOUNT 0x545D +#define TIOCGHAYESESP 0x545E +#define TIOCSHAYESESP 0x545F +#define FIOQSIZE 0x5460 + +#define TIOCPKT_DATA 0 +#define TIOCPKT_FLUSHREAD 1 +#define TIOCPKT_FLUSHWRITE 2 +#define TIOCPKT_STOP 4 +#define TIOCPKT_START 8 +#define TIOCPKT_NOSTOP 16 +#define TIOCPKT_DOSTOP 32 +#define TIOCPKT_IOCTL 64 + +#define TIOCSER_TEMT 0x01 + +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#define TIOCM_LE 0x001 +#define TIOCM_DTR 0x002 +#define TIOCM_RTS 0x004 +#define TIOCM_ST 0x008 +#define TIOCM_SR 0x010 +#define TIOCM_CTS 0x020 +#define TIOCM_CAR 0x040 +#define TIOCM_RNG 0x080 +#define TIOCM_DSR 0x100 +#define TIOCM_CD TIOCM_CAR +#define TIOCM_RI TIOCM_RNG +#define TIOCM_OUT1 0x2000 +#define TIOCM_OUT2 0x4000 +#define TIOCM_LOOP 0x8000 +#define TIOCM_MODEM_BITS TIOCM_OUT2 + +#define N_TTY 0 +#define N_SLIP 1 +#define N_MOUSE 2 +#define N_PPP 3 +#define N_STRIP 4 +#define N_AX25 5 +#define N_X25 6 +#define N_6PACK 7 +#define N_MASC 8 +#define N_R3964 9 +#define N_PROFIBUS_FDL 10 +#define N_IRDA 11 +#define N_SMSBLOCK 12 +#define N_HDLC 13 +#define N_SYNC_PPP 14 +#define N_HCI 15 + +#define FIOSETOWN 0x8901 +#define SIOCSPGRP 0x8902 +#define FIOGETOWN 0x8903 +#define SIOCGPGRP 0x8904 +#define SIOCATMARK 0x8905 +#define SIOCGSTAMP 0x8906 + +#define SIOCADDRT 0x890B +#define SIOCDELRT 0x890C +#define SIOCRTMSG 0x890D + +#define SIOCGIFNAME 0x8910 +#define SIOCSIFLINK 0x8911 +#define SIOCGIFCONF 0x8912 +#define SIOCGIFFLAGS 0x8913 +#define SIOCSIFFLAGS 0x8914 +#define SIOCGIFADDR 0x8915 +#define SIOCSIFADDR 0x8916 +#define SIOCGIFDSTADDR 0x8917 +#define SIOCSIFDSTADDR 0x8918 +#define SIOCGIFBRDADDR 0x8919 +#define SIOCSIFBRDADDR 0x891a +#define SIOCGIFNETMASK 0x891b +#define SIOCSIFNETMASK 0x891c +#define SIOCGIFMETRIC 0x891d +#define SIOCSIFMETRIC 0x891e +#define SIOCGIFMEM 0x891f +#define SIOCSIFMEM 0x8920 +#define SIOCGIFMTU 0x8921 +#define SIOCSIFMTU 0x8922 +#define SIOCSIFHWADDR 0x8924 +#define SIOCGIFENCAP 0x8925 +#define SIOCSIFENCAP 0x8926 +#define SIOCGIFHWADDR 0x8927 +#define SIOCGIFSLAVE 0x8929 +#define SIOCSIFSLAVE 0x8930 +#define SIOCADDMULTI 0x8931 +#define SIOCDELMULTI 0x8932 +#define SIOCGIFINDEX 0x8933 +#define SIOGIFINDEX SIOCGIFINDEX +#define SIOCSIFPFLAGS 0x8934 +#define SIOCGIFPFLAGS 0x8935 +#define SIOCDIFADDR 0x8936 +#define SIOCSIFHWBROADCAST 0x8937 +#define SIOCGIFCOUNT 0x8938 + +#define SIOCGIFBR 0x8940 +#define SIOCSIFBR 0x8941 + +#define SIOCGIFTXQLEN 0x8942 +#define SIOCSIFTXQLEN 0x8943 + +#define SIOCDARP 0x8953 +#define SIOCGARP 0x8954 +#define SIOCSARP 0x8955 + +#define SIOCDRARP 0x8960 +#define SIOCGRARP 0x8961 +#define SIOCSRARP 0x8962 + +#define SIOCGIFMAP 0x8970 +#define SIOCSIFMAP 0x8971 + +#define SIOCADDDLCI 0x8980 +#define SIOCDELDLCI 0x8981 + +#define SIOCDEVPRIVATE 0x89F0 +#define SIOCPROTOPRIVATE 0x89E0 diff -Nur musl-0.9.15/arch/x32/bits/io.h musl-git/arch/x32/bits/io.h --- musl-0.9.15/arch/x32/bits/io.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/io.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,77 @@ +static __inline void outb(unsigned char __val, unsigned short __port) +{ + __asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outw(unsigned short __val, unsigned short __port) +{ + __asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline void outl(unsigned int __val, unsigned short __port) +{ + __asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port)); +} + +static __inline unsigned char inb(unsigned short __port) +{ + unsigned char __val; + __asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned short inw(unsigned short __port) +{ + unsigned short __val; + __asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline unsigned int inl(unsigned short __port) +{ + unsigned int __val; + __asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port)); + return __val; +} + +static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsb" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsw" + : "+S" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; outsl" + : "+S" (__buf), "+c"(__n) + : "d" (__port)); +} + +static __inline void insb(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insb" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insw(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insw" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} + +static __inline void insl(unsigned short __port, void *__buf, unsigned long __n) +{ + __asm__ volatile ("cld; rep; insl" + : "+D" (__buf), "+c" (__n) + : "d" (__port)); +} diff -Nur musl-0.9.15/arch/x32/bits/ipc.h musl-git/arch/x32/bits/ipc.h --- musl-0.9.15/arch/x32/bits/ipc.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/ipc.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,14 @@ +struct ipc_perm +{ + key_t __ipc_perm_key; + uid_t uid; + gid_t gid; + uid_t cuid; + gid_t cgid; + mode_t mode; + int __ipc_perm_seq; + long long __pad1; + long long __pad2; +}; + +#define IPC_64 0 diff -Nur musl-0.9.15/arch/x32/bits/limits.h musl-git/arch/x32/bits/limits.h --- musl-0.9.15/arch/x32/bits/limits.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/limits.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,8 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define PAGE_SIZE 4096 +#define LONG_BIT 32 +#endif + +#define LONG_MAX 0x7fffffffL +#define LLONG_MAX 0x7fffffffffffffffLL diff -Nur musl-0.9.15/arch/x32/bits/mman.h musl-git/arch/x32/bits/mman.h --- musl-0.9.15/arch/x32/bits/mman.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/mman.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,62 @@ +#define MAP_FAILED ((void *) -1) + +#define PROT_NONE 0 +#define PROT_READ 1 +#define PROT_WRITE 2 +#define PROT_EXEC 4 +#define PROT_GROWSDOWN 0x01000000 +#define PROT_GROWSUP 0x02000000 + +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_FIXED 0x10 + +#define MAP_TYPE 0x0f +#define MAP_FILE 0x00 +#define MAP_ANON 0x20 +#define MAP_ANONYMOUS MAP_ANON +#define MAP_32BIT 0x40 +#define MAP_NORESERVE 0x4000 +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 + +#define POSIX_MADV_NORMAL 0 +#define POSIX_MADV_RANDOM 1 +#define POSIX_MADV_SEQUENTIAL 2 +#define POSIX_MADV_WILLNEED 3 +#define POSIX_MADV_DONTNEED 0 + +#define MS_ASYNC 1 +#define MS_INVALIDATE 2 +#define MS_SYNC 4 + +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +#define MADV_DONTNEED 4 +#define MADV_REMOVE 9 +#define MADV_DONTFORK 10 +#define MADV_DOFORK 11 +#define MADV_MERGEABLE 12 +#define MADV_UNMERGEABLE 13 +#define MADV_HUGEPAGE 14 +#define MADV_NOHUGEPAGE 15 +#define MADV_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MADV_HWPOISON 100 +#define MADV_SOFT_OFFLINE 101 + +#define MREMAP_MAYMOVE 1 +#define MREMAP_FIXED 2 +#endif diff -Nur musl-0.9.15/arch/x32/bits/msg.h musl-git/arch/x32/bits/msg.h --- musl-0.9.15/arch/x32/bits/msg.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/msg.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,16 @@ +struct msqid_ds +{ + struct ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + time_t msg_ctime; + unsigned long msg_cbytes; + long __unused1; + msgqnum_t msg_qnum; + long __unused2; + msglen_t msg_qbytes; + long __unused3; + pid_t msg_lspid; + pid_t msg_lrpid; + unsigned long long __unused[2]; +}; diff -Nur musl-0.9.15/arch/x32/bits/posix.h musl-git/arch/x32/bits/posix.h --- musl-0.9.15/arch/x32/bits/posix.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/posix.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,2 @@ +#define _POSIX_V6_LP64_OFF64 1 +#define _POSIX_V7_LP64_OFF64 1 diff -Nur musl-0.9.15/arch/x32/bits/reg.h musl-git/arch/x32/bits/reg.h --- musl-0.9.15/arch/x32/bits/reg.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/reg.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,29 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +#define R15 0 +#define R14 1 +#define R13 2 +#define R12 3 +#define RBP 4 +#define RBX 5 +#define R11 6 +#define R10 7 +#define R9 8 +#define R8 9 +#define RAX 10 +#define RCX 11 +#define RDX 12 +#define RSI 13 +#define RDI 14 +#define ORIG_RAX 15 +#define RIP 16 +#define CS 17 +#define EFLAGS 18 +#define RSP 19 +#define SS 20 +#define FS_BASE 21 +#define GS_BASE 22 +#define DS 23 +#define ES 24 +#define FS 25 +#define GS 26 diff -Nur musl-0.9.15/arch/x32/bits/setjmp.h musl-git/arch/x32/bits/setjmp.h --- musl-0.9.15/arch/x32/bits/setjmp.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/setjmp.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[8]; diff -Nur musl-0.9.15/arch/x32/bits/shm.h musl-git/arch/x32/bits/shm.h --- musl-0.9.15/arch/x32/bits/shm.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,33 @@ +#define SHMLBA 4096 + +struct shmid_ds +{ + struct ipc_perm shm_perm; + size_t shm_segsz; + time_t shm_atime; + time_t shm_dtime; + time_t shm_ctime; + pid_t shm_cpid; + pid_t shm_lpid; + unsigned long shm_nattch; + unsigned long __pad0; + unsigned long long __pad1; + unsigned long long __pad2; +}; + +struct shminfo { + unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2, + shmseg, __pad3, shmall, __pad4; + unsigned long long __unused[4]; +}; + +struct shm_info { + int __used_ids; + int __pad_ids; + unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2; + unsigned long __swap_attempts, __pad3, __swap_successes, __pad4; +} +#ifdef __GNUC__ +__attribute__((__aligned__(8))) +#endif +; diff -Nur musl-0.9.15/arch/x32/bits/signal.h musl-git/arch/x32/bits/signal.h --- musl-0.9.15/arch/x32/bits/signal.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/signal.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,119 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#ifdef _GNU_SOURCE +#define REG_R8 0 +#define REG_R9 1 +#define REG_R10 2 +#define REG_R11 3 +#define REG_R12 4 +#define REG_R13 5 +#define REG_R14 6 +#define REG_R15 7 +#define REG_RDI 8 +#define REG_RSI 9 +#define REG_RBP 10 +#define REG_RBX 11 +#define REG_RDX 12 +#define REG_RAX 13 +#define REG_RCX 14 +#define REG_RSP 15 +#define REG_RIP 16 +#define REG_EFL 17 +#define REG_CSGSFS 18 +#define REG_ERR 19 +#define REG_TRAPNO 20 +#define REG_OLDMASK 21 +#define REG_CR2 22 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef long long greg_t, gregset_t[23]; +typedef struct _fpstate { + unsigned short cwd, swd, ftw, fop; + unsigned long long rip, rdp; + unsigned mxcsr, mxcr_mask; + struct { + unsigned short significand[4], exponent, padding[3]; + } _st[8]; + struct { + unsigned element[4]; + } _xmm[16]; + unsigned padding[24]; +} *fpregset_t; +struct sigcontext { + unsigned long long r8, r9, r10, r11, r12, r13, r14, r15; + unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags; + unsigned short cs, gs, fs, __pad0; + unsigned long long err, trapno, oldmask, cr2; + struct _fpstate *fpstate; + unsigned long long __reserved1[8]; +}; +typedef struct { + gregset_t gregs; + fpregset_t fpregs; + unsigned long long __reserved1[8]; +} mcontext_t; +#else +typedef struct { + unsigned long long __space[32]; +} mcontext_t; +#endif + +typedef struct __ucontext { + unsigned long uc_flags; + struct __ucontext *uc_link; + stack_t uc_stack; + mcontext_t uc_mcontext; + sigset_t uc_sigmask; + unsigned long long __fpregs_mem[64]; +} 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 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 + diff -Nur musl-0.9.15/arch/x32/bits/socket.h musl-git/arch/x32/bits/socket.h --- musl-0.9.15/arch/x32/bits/socket.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/socket.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,18 @@ +struct msghdr +{ + void *msg_name; + socklen_t msg_namelen; + struct iovec *msg_iov; + int msg_iovlen, __pad1; + void *msg_control; + socklen_t msg_controllen, __pad2; + int msg_flags; +}; + +struct cmsghdr +{ + socklen_t cmsg_len; + int __pad1; + int cmsg_level; + int cmsg_type; +}; diff -Nur musl-0.9.15/arch/x32/bits/statfs.h musl-git/arch/x32/bits/statfs.h --- musl-0.9.15/arch/x32/bits/statfs.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/statfs.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +struct statfs { + unsigned long f_type, f_bsize; + fsblkcnt_t f_blocks, f_bfree, f_bavail; + fsfilcnt_t f_files, f_ffree; + fsid_t f_fsid; + unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; +}; diff -Nur musl-0.9.15/arch/x32/bits/stat.h musl-git/arch/x32/bits/stat.h --- musl-0.9.15/arch/x32/bits/stat.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/stat.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat { + dev_t st_dev; + ino_t st_ino; + nlink_t st_nlink; + + mode_t st_mode; + uid_t st_uid; + gid_t st_gid; + unsigned int __pad0; + dev_t st_rdev; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + long long __unused[3]; +}; diff -Nur musl-0.9.15/arch/x32/bits/stdarg.h musl-git/arch/x32/bits/stdarg.h --- musl-0.9.15/arch/x32/bits/stdarg.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/stdarg.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,4 @@ +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#define va_copy(d,s) __builtin_va_copy(d,s) diff -Nur musl-0.9.15/arch/x32/bits/stdint.h musl-git/arch/x32/bits/stdint.h --- musl-0.9.15/arch/x32/bits/stdint.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/stdint.h 2014-03-10 16:52:06.000000000 +0100 @@ -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 diff -Nur musl-0.9.15/arch/x32/bits/syscall.h musl-git/arch/x32/bits/syscall.h --- musl-0.9.15/arch/x32/bits/syscall.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/syscall.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,634 @@ +#define __X32_SYSCALL_BIT 0x40000000 +#define __NR_read (__X32_SYSCALL_BIT + 0) +#define __NR_write (__X32_SYSCALL_BIT + 1) +#define __NR_open (__X32_SYSCALL_BIT + 2) +#define __NR_close (__X32_SYSCALL_BIT + 3) +#define __NR_stat (__X32_SYSCALL_BIT + 4) +#define __NR_fstat (__X32_SYSCALL_BIT + 5) +#define __NR_lstat (__X32_SYSCALL_BIT + 6) +#define __NR_poll (__X32_SYSCALL_BIT + 7) +#define __NR_lseek (__X32_SYSCALL_BIT + 8) +#define __NR_mmap (__X32_SYSCALL_BIT + 9) +#define __NR_mprotect (__X32_SYSCALL_BIT + 10) +#define __NR_munmap (__X32_SYSCALL_BIT + 11) +#define __NR_brk (__X32_SYSCALL_BIT + 12) +#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14) +#define __NR_pread64 (__X32_SYSCALL_BIT + 17) +#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18) +#define __NR_access (__X32_SYSCALL_BIT + 21) +#define __NR_pipe (__X32_SYSCALL_BIT + 22) +#define __NR_select (__X32_SYSCALL_BIT + 23) +#define __NR_sched_yield (__X32_SYSCALL_BIT + 24) +#define __NR_mremap (__X32_SYSCALL_BIT + 25) +#define __NR_msync (__X32_SYSCALL_BIT + 26) +#define __NR_mincore (__X32_SYSCALL_BIT + 27) +#define __NR_madvise (__X32_SYSCALL_BIT + 28) +#define __NR_shmget (__X32_SYSCALL_BIT + 29) +#define __NR_shmat (__X32_SYSCALL_BIT + 30) +#define __NR_shmctl (__X32_SYSCALL_BIT + 31) +#define __NR_dup (__X32_SYSCALL_BIT + 32) +#define __NR_dup2 (__X32_SYSCALL_BIT + 33) +#define __NR_pause (__X32_SYSCALL_BIT + 34) +#define __NR_nanosleep (__X32_SYSCALL_BIT + 35) +#define __NR_getitimer (__X32_SYSCALL_BIT + 36) +#define __NR_alarm (__X32_SYSCALL_BIT + 37) +#define __NR_setitimer (__X32_SYSCALL_BIT + 38) +#define __NR_getpid (__X32_SYSCALL_BIT + 39) +#define __NR_sendfile (__X32_SYSCALL_BIT + 40) +#define __NR_socket (__X32_SYSCALL_BIT + 41) +#define __NR_connect (__X32_SYSCALL_BIT + 42) +#define __NR_accept (__X32_SYSCALL_BIT + 43) +#define __NR_sendto (__X32_SYSCALL_BIT + 44) +#define __NR_shutdown (__X32_SYSCALL_BIT + 48) +#define __NR_bind (__X32_SYSCALL_BIT + 49) +#define __NR_listen (__X32_SYSCALL_BIT + 50) +#define __NR_getsockname (__X32_SYSCALL_BIT + 51) +#define __NR_getpeername (__X32_SYSCALL_BIT + 52) +#define __NR_socketpair (__X32_SYSCALL_BIT + 53) +#define __NR_clone (__X32_SYSCALL_BIT + 56) +#define __NR_fork (__X32_SYSCALL_BIT + 57) +#define __NR_vfork (__X32_SYSCALL_BIT + 58) +#define __NR_exit (__X32_SYSCALL_BIT + 60) +#define __NR_wait4 (__X32_SYSCALL_BIT + 61) +#define __NR_kill (__X32_SYSCALL_BIT + 62) +#define __NR_uname (__X32_SYSCALL_BIT + 63) +#define __NR_semget (__X32_SYSCALL_BIT + 64) +#define __NR_semop (__X32_SYSCALL_BIT + 65) +#define __NR_semctl (__X32_SYSCALL_BIT + 66) +#define __NR_shmdt (__X32_SYSCALL_BIT + 67) +#define __NR_msgget (__X32_SYSCALL_BIT + 68) +#define __NR_msgsnd (__X32_SYSCALL_BIT + 69) +#define __NR_msgrcv (__X32_SYSCALL_BIT + 70) +#define __NR_msgctl (__X32_SYSCALL_BIT + 71) +#define __NR_fcntl (__X32_SYSCALL_BIT + 72) +#define __NR_flock (__X32_SYSCALL_BIT + 73) +#define __NR_fsync (__X32_SYSCALL_BIT + 74) +#define __NR_fdatasync (__X32_SYSCALL_BIT + 75) +#define __NR_truncate (__X32_SYSCALL_BIT + 76) +#define __NR_ftruncate (__X32_SYSCALL_BIT + 77) +#define __NR_getdents (__X32_SYSCALL_BIT + 78) +#define __NR_getcwd (__X32_SYSCALL_BIT + 79) +#define __NR_chdir (__X32_SYSCALL_BIT + 80) +#define __NR_fchdir (__X32_SYSCALL_BIT + 81) +#define __NR_rename (__X32_SYSCALL_BIT + 82) +#define __NR_mkdir (__X32_SYSCALL_BIT + 83) +#define __NR_rmdir (__X32_SYSCALL_BIT + 84) +#define __NR_creat (__X32_SYSCALL_BIT + 85) +#define __NR_link (__X32_SYSCALL_BIT + 86) +#define __NR_unlink (__X32_SYSCALL_BIT + 87) +#define __NR_symlink (__X32_SYSCALL_BIT + 88) +#define __NR_readlink (__X32_SYSCALL_BIT + 89) +#define __NR_chmod (__X32_SYSCALL_BIT + 90) +#define __NR_fchmod (__X32_SYSCALL_BIT + 91) +#define __NR_chown (__X32_SYSCALL_BIT + 92) +#define __NR_fchown (__X32_SYSCALL_BIT + 93) +#define __NR_lchown (__X32_SYSCALL_BIT + 94) +#define __NR_umask (__X32_SYSCALL_BIT + 95) +#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96) +#define __NR_getrlimit (__X32_SYSCALL_BIT + 97) +#define __NR_getrusage (__X32_SYSCALL_BIT + 98) +#define __NR_sysinfo (__X32_SYSCALL_BIT + 99) +#define __NR_times (__X32_SYSCALL_BIT + 100) +#define __NR_getuid (__X32_SYSCALL_BIT + 102) +#define __NR_syslog (__X32_SYSCALL_BIT + 103) +#define __NR_getgid (__X32_SYSCALL_BIT + 104) +#define __NR_setuid (__X32_SYSCALL_BIT + 105) +#define __NR_setgid (__X32_SYSCALL_BIT + 106) +#define __NR_geteuid (__X32_SYSCALL_BIT + 107) +#define __NR_getegid (__X32_SYSCALL_BIT + 108) +#define __NR_setpgid (__X32_SYSCALL_BIT + 109) +#define __NR_getppid (__X32_SYSCALL_BIT + 110) +#define __NR_getpgrp (__X32_SYSCALL_BIT + 111) +#define __NR_setsid (__X32_SYSCALL_BIT + 112) +#define __NR_setreuid (__X32_SYSCALL_BIT + 113) +#define __NR_setregid (__X32_SYSCALL_BIT + 114) +#define __NR_getgroups (__X32_SYSCALL_BIT + 115) +#define __NR_setgroups (__X32_SYSCALL_BIT + 116) +#define __NR_setresuid (__X32_SYSCALL_BIT + 117) +#define __NR_getresuid (__X32_SYSCALL_BIT + 118) +#define __NR_setresgid (__X32_SYSCALL_BIT + 119) +#define __NR_getresgid (__X32_SYSCALL_BIT + 120) +#define __NR_getpgid (__X32_SYSCALL_BIT + 121) +#define __NR_setfsuid (__X32_SYSCALL_BIT + 122) +#define __NR_setfsgid (__X32_SYSCALL_BIT + 123) +#define __NR_getsid (__X32_SYSCALL_BIT + 124) +#define __NR_capget (__X32_SYSCALL_BIT + 125) +#define __NR_capset (__X32_SYSCALL_BIT + 126) +#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130) +#define __NR_utime (__X32_SYSCALL_BIT + 132) +#define __NR_mknod (__X32_SYSCALL_BIT + 133) +#define __NR_personality (__X32_SYSCALL_BIT + 135) +#define __NR_ustat (__X32_SYSCALL_BIT + 136) +#define __NR_statfs (__X32_SYSCALL_BIT + 137) +#define __NR_fstatfs (__X32_SYSCALL_BIT + 138) +#define __NR_sysfs (__X32_SYSCALL_BIT + 139) +#define __NR_getpriority (__X32_SYSCALL_BIT + 140) +#define __NR_setpriority (__X32_SYSCALL_BIT + 141) +#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142) +#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143) +#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144) +#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145) +#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146) +#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147) +#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148) +#define __NR_mlock (__X32_SYSCALL_BIT + 149) +#define __NR_munlock (__X32_SYSCALL_BIT + 150) +#define __NR_mlockall (__X32_SYSCALL_BIT + 151) +#define __NR_munlockall (__X32_SYSCALL_BIT + 152) +#define __NR_vhangup (__X32_SYSCALL_BIT + 153) +#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154) +#define __NR_pivot_root (__X32_SYSCALL_BIT + 155) +#define __NR_prctl (__X32_SYSCALL_BIT + 157) +#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158) +#define __NR_adjtimex (__X32_SYSCALL_BIT + 159) +#define __NR_setrlimit (__X32_SYSCALL_BIT + 160) +#define __NR_chroot (__X32_SYSCALL_BIT + 161) +#define __NR_sync (__X32_SYSCALL_BIT + 162) +#define __NR_acct (__X32_SYSCALL_BIT + 163) +#define __NR_settimeofday (__X32_SYSCALL_BIT + 164) +#define __NR_mount (__X32_SYSCALL_BIT + 165) +#define __NR_umount2 (__X32_SYSCALL_BIT + 166) +#define __NR_swapon (__X32_SYSCALL_BIT + 167) +#define __NR_swapoff (__X32_SYSCALL_BIT + 168) +#define __NR_reboot (__X32_SYSCALL_BIT + 169) +#define __NR_sethostname (__X32_SYSCALL_BIT + 170) +#define __NR_setdomainname (__X32_SYSCALL_BIT + 171) +#define __NR_iopl (__X32_SYSCALL_BIT + 172) +#define __NR_ioperm (__X32_SYSCALL_BIT + 173) +#define __NR_init_module (__X32_SYSCALL_BIT + 175) +#define __NR_delete_module (__X32_SYSCALL_BIT + 176) +#define __NR_quotactl (__X32_SYSCALL_BIT + 179) +#define __NR_getpmsg (__X32_SYSCALL_BIT + 181) +#define __NR_putpmsg (__X32_SYSCALL_BIT + 182) +#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183) +#define __NR_tuxcall (__X32_SYSCALL_BIT + 184) +#define __NR_security (__X32_SYSCALL_BIT + 185) +#define __NR_gettid (__X32_SYSCALL_BIT + 186) +#define __NR_readahead (__X32_SYSCALL_BIT + 187) +#define __NR_setxattr (__X32_SYSCALL_BIT + 188) +#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189) +#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190) +#define __NR_getxattr (__X32_SYSCALL_BIT + 191) +#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192) +#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193) +#define __NR_listxattr (__X32_SYSCALL_BIT + 194) +#define __NR_llistxattr (__X32_SYSCALL_BIT + 195) +#define __NR_flistxattr (__X32_SYSCALL_BIT + 196) +#define __NR_removexattr (__X32_SYSCALL_BIT + 197) +#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198) +#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199) +#define __NR_tkill (__X32_SYSCALL_BIT + 200) +#define __NR_time (__X32_SYSCALL_BIT + 201) +#define __NR_futex (__X32_SYSCALL_BIT + 202) +#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203) +#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204) +#define __NR_io_setup (__X32_SYSCALL_BIT + 206) +#define __NR_io_destroy (__X32_SYSCALL_BIT + 207) +#define __NR_io_getevents (__X32_SYSCALL_BIT + 208) +#define __NR_io_submit (__X32_SYSCALL_BIT + 209) +#define __NR_io_cancel (__X32_SYSCALL_BIT + 210) +#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212) +#define __NR_epoll_create (__X32_SYSCALL_BIT + 213) +#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216) +#define __NR_getdents64 (__X32_SYSCALL_BIT + 217) +#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218) +#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219) +#define __NR_semtimedop (__X32_SYSCALL_BIT + 220) +#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221) +#define __NR_timer_settime (__X32_SYSCALL_BIT + 223) +#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224) +#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225) +#define __NR_timer_delete (__X32_SYSCALL_BIT + 226) +#define __NR_clock_settime (__X32_SYSCALL_BIT + 227) +#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228) +#define __NR_clock_getres (__X32_SYSCALL_BIT + 229) +#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230) +#define __NR_exit_group (__X32_SYSCALL_BIT + 231) +#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232) +#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233) +#define __NR_tgkill (__X32_SYSCALL_BIT + 234) +#define __NR_utimes (__X32_SYSCALL_BIT + 235) +#define __NR_mbind (__X32_SYSCALL_BIT + 237) +#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238) +#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239) +#define __NR_mq_open (__X32_SYSCALL_BIT + 240) +#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241) +#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242) +#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243) +#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245) +#define __NR_add_key (__X32_SYSCALL_BIT + 248) +#define __NR_request_key (__X32_SYSCALL_BIT + 249) +#define __NR_keyctl (__X32_SYSCALL_BIT + 250) +#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251) +#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252) +#define __NR_inotify_init (__X32_SYSCALL_BIT + 253) +#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254) +#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255) +#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256) +#define __NR_openat (__X32_SYSCALL_BIT + 257) +#define __NR_mkdirat (__X32_SYSCALL_BIT + 258) +#define __NR_mknodat (__X32_SYSCALL_BIT + 259) +#define __NR_fchownat (__X32_SYSCALL_BIT + 260) +#define __NR_futimesat (__X32_SYSCALL_BIT + 261) +#define __NR_newfstatat (__X32_SYSCALL_BIT + 262) +#define __NR_unlinkat (__X32_SYSCALL_BIT + 263) +#define __NR_renameat (__X32_SYSCALL_BIT + 264) +#define __NR_linkat (__X32_SYSCALL_BIT + 265) +#define __NR_symlinkat (__X32_SYSCALL_BIT + 266) +#define __NR_readlinkat (__X32_SYSCALL_BIT + 267) +#define __NR_fchmodat (__X32_SYSCALL_BIT + 268) +#define __NR_faccessat (__X32_SYSCALL_BIT + 269) +#define __NR_pselect6 (__X32_SYSCALL_BIT + 270) +#define __NR_ppoll (__X32_SYSCALL_BIT + 271) +#define __NR_unshare (__X32_SYSCALL_BIT + 272) +#define __NR_splice (__X32_SYSCALL_BIT + 275) +#define __NR_tee (__X32_SYSCALL_BIT + 276) +#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277) +#define __NR_utimensat (__X32_SYSCALL_BIT + 280) +#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281) +#define __NR_signalfd (__X32_SYSCALL_BIT + 282) +#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283) +#define __NR_eventfd (__X32_SYSCALL_BIT + 284) +#define __NR_fallocate (__X32_SYSCALL_BIT + 285) +#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286) +#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287) +#define __NR_accept4 (__X32_SYSCALL_BIT + 288) +#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289) +#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290) +#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291) +#define __NR_dup3 (__X32_SYSCALL_BIT + 292) +#define __NR_pipe2 (__X32_SYSCALL_BIT + 293) +#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294) +#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298) +#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300) +#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301) +#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302) +#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303) +#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304) +#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305) +#define __NR_syncfs (__X32_SYSCALL_BIT + 306) +#define __NR_setns (__X32_SYSCALL_BIT + 308) +#define __NR_getcpu (__X32_SYSCALL_BIT + 309) +#define __NR_kcmp (__X32_SYSCALL_BIT + 312) +#define __NR_finit_module (__X32_SYSCALL_BIT + 313) +#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) +#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) +#define __NR_ioctl (__X32_SYSCALL_BIT + 514) +#define __NR_readv (__X32_SYSCALL_BIT + 515) +#define __NR_writev (__X32_SYSCALL_BIT + 516) +#define __NR_recvfrom (__X32_SYSCALL_BIT + 517) +#define __NR_sendmsg (__X32_SYSCALL_BIT + 518) +#define __NR_recvmsg (__X32_SYSCALL_BIT + 519) +#define __NR_execve (__X32_SYSCALL_BIT + 520) +#define __NR_ptrace (__X32_SYSCALL_BIT + 521) +#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522) +#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523) +#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524) +#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525) +#define __NR_timer_create (__X32_SYSCALL_BIT + 526) +#define __NR_mq_notify (__X32_SYSCALL_BIT + 527) +#define __NR_kexec_load (__X32_SYSCALL_BIT + 528) +#define __NR_waitid (__X32_SYSCALL_BIT + 529) +#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530) +#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531) +#define __NR_vmsplice (__X32_SYSCALL_BIT + 532) +#define __NR_move_pages (__X32_SYSCALL_BIT + 533) +#define __NR_preadv (__X32_SYSCALL_BIT + 534) +#define __NR_pwritev (__X32_SYSCALL_BIT + 535) +#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536) +#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537) +#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538) +#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539) +#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540) +#define __NR_setsockopt (__X32_SYSCALL_BIT + 541) +#define __NR_getsockopt (__X32_SYSCALL_BIT + 542) + +#undef __NR_fstatat +#undef __NR_pread +#undef __NR_pwrite +#undef __NR_getdents +#define __NR_fstatat __NR_newfstatat +#define __NR_pread __NR_pread64 +#define __NR_pwrite __NR_pwrite64 +#define __NR_getdents __NR_getdents64 +#define __NR_fadvise __NR_fadvise64 + + + +/* Repeat with SYS_ prefix */ + + + +#define SYS_read __NR_read +#define SYS_write __NR_write +#define SYS_open __NR_open +#define SYS_close __NR_close +#define SYS_stat __NR_stat +#define SYS_fstat __NR_fstat +#define SYS_lstat __NR_lstat +#define SYS_poll __NR_poll +#define SYS_lseek __NR_lseek +#define SYS_mmap __NR_mmap +#define SYS_mprotect __NR_mprotect +#define SYS_munmap __NR_munmap +#define SYS_brk __NR_brk +#define SYS_rt_sigprocmask __NR_rt_sigprocmask +#define SYS_pread64 __NR_pread64 +#define SYS_pwrite64 __NR_pwrite64 +#define SYS_access __NR_access +#define SYS_pipe __NR_pipe +#define SYS_select __NR_select +#define SYS_sched_yield __NR_sched_yield +#define SYS_mremap __NR_mremap +#define SYS_msync __NR_msync +#define SYS_mincore __NR_mincore +#define SYS_madvise __NR_madvise +#define SYS_shmget __NR_shmget +#define SYS_shmat __NR_shmat +#define SYS_shmctl __NR_shmctl +#define SYS_dup __NR_dup +#define SYS_dup2 __NR_dup2 +#define SYS_pause __NR_pause +#define SYS_nanosleep __NR_nanosleep +#define SYS_getitimer __NR_getitimer +#define SYS_alarm __NR_alarm +#define SYS_setitimer __NR_setitimer +#define SYS_getpid __NR_getpid +#define SYS_sendfile __NR_sendfile +#define SYS_socket __NR_socket +#define SYS_connect __NR_connect +#define SYS_accept __NR_accept +#define SYS_sendto __NR_sendto +#define SYS_shutdown __NR_shutdown +#define SYS_bind __NR_bind +#define SYS_listen __NR_listen +#define SYS_getsockname __NR_getsockname +#define SYS_getpeername __NR_getpeername +#define SYS_socketpair __NR_socketpair +#define SYS_clone __NR_clone +#define SYS_fork __NR_fork +#define SYS_vfork __NR_vfork +#define SYS_exit __NR_exit +#define SYS_wait4 __NR_wait4 +#define SYS_kill __NR_kill +#define SYS_uname __NR_uname +#define SYS_semget __NR_semget +#define SYS_semop __NR_semop +#define SYS_semctl __NR_semctl +#define SYS_shmdt __NR_shmdt +#define SYS_msgget __NR_msgget +#define SYS_msgsnd __NR_msgsnd +#define SYS_msgrcv __NR_msgrcv +#define SYS_msgctl __NR_msgctl +#define SYS_fcntl __NR_fcntl +#define SYS_flock __NR_flock +#define SYS_fsync __NR_fsync +#define SYS_fdatasync __NR_fdatasync +#define SYS_truncate __NR_truncate +#define SYS_ftruncate __NR_ftruncate +#define SYS_getdents __NR_getdents +#define SYS_getcwd __NR_getcwd +#define SYS_chdir __NR_chdir +#define SYS_fchdir __NR_fchdir +#define SYS_rename __NR_rename +#define SYS_mkdir __NR_mkdir +#define SYS_rmdir __NR_rmdir +#define SYS_creat __NR_creat +#define SYS_link __NR_link +#define SYS_unlink __NR_unlink +#define SYS_symlink __NR_symlink +#define SYS_readlink __NR_readlink +#define SYS_chmod __NR_chmod +#define SYS_fchmod __NR_fchmod +#define SYS_chown __NR_chown +#define SYS_fchown __NR_fchown +#define SYS_lchown __NR_lchown +#define SYS_umask __NR_umask +#define SYS_gettimeofday __NR_gettimeofday +#define SYS_getrlimit __NR_getrlimit +#define SYS_getrusage __NR_getrusage +#define SYS_sysinfo __NR_sysinfo +#define SYS_times __NR_times +#define SYS_getuid __NR_getuid +#define SYS_syslog __NR_syslog +#define SYS_getgid __NR_getgid +#define SYS_setuid __NR_setuid +#define SYS_setgid __NR_setgid +#define SYS_geteuid __NR_geteuid +#define SYS_getegid __NR_getegid +#define SYS_setpgid __NR_setpgid +#define SYS_getppid __NR_getppid +#define SYS_getpgrp __NR_getpgrp +#define SYS_setsid __NR_setsid +#define SYS_setreuid __NR_setreuid +#define SYS_setregid __NR_setregid +#define SYS_getgroups __NR_getgroups +#define SYS_setgroups __NR_setgroups +#define SYS_setresuid __NR_setresuid +#define SYS_getresuid __NR_getresuid +#define SYS_setresgid __NR_setresgid +#define SYS_getresgid __NR_getresgid +#define SYS_getpgid __NR_getpgid +#define SYS_setfsuid __NR_setfsuid +#define SYS_setfsgid __NR_setfsgid +#define SYS_getsid __NR_getsid +#define SYS_capget __NR_capget +#define SYS_capset __NR_capset +#define SYS_rt_sigsuspend __NR_rt_sigsuspend +#define SYS_utime __NR_utime +#define SYS_mknod __NR_mknod +#define SYS_personality __NR_personality +#define SYS_ustat __NR_ustat +#define SYS_statfs __NR_statfs +#define SYS_fstatfs __NR_fstatfs +#define SYS_sysfs __NR_sysfs +#define SYS_getpriority __NR_getpriority +#define SYS_setpriority __NR_setpriority +#define SYS_sched_setparam __NR_sched_setparam +#define SYS_sched_getparam __NR_sched_getparam +#define SYS_sched_setscheduler __NR_sched_setscheduler +#define SYS_sched_getscheduler __NR_sched_getscheduler +#define SYS_sched_get_priority_max __NR_sched_get_priority_max +#define SYS_sched_get_priority_min __NR_sched_get_priority_min +#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval +#define SYS_mlock __NR_mlock +#define SYS_munlock __NR_munlock +#define SYS_mlockall __NR_mlockall +#define SYS_munlockall __NR_munlockall +#define SYS_vhangup __NR_vhangup +#define SYS_modify_ldt __NR_modify_ldt +#define SYS_pivot_root __NR_pivot_root +#define SYS_prctl __NR_prctl +#define SYS_arch_prctl __NR_arch_prctl +#define SYS_adjtimex __NR_adjtimex +#define SYS_setrlimit __NR_setrlimit +#define SYS_chroot __NR_chroot +#define SYS_sync __NR_sync +#define SYS_acct __NR_acct +#define SYS_settimeofday __NR_settimeofday +#define SYS_mount __NR_mount +#define SYS_umount2 __NR_umount2 +#define SYS_swapon __NR_swapon +#define SYS_swapoff __NR_swapoff +#define SYS_reboot __NR_reboot +#define SYS_sethostname __NR_sethostname +#define SYS_setdomainname __NR_setdomainname +#define SYS_iopl __NR_iopl +#define SYS_ioperm __NR_ioperm +#define SYS_init_module __NR_init_module +#define SYS_delete_module __NR_delete_module +#define SYS_quotactl __NR_quotactl +#define SYS_getpmsg __NR_getpmsg +#define SYS_putpmsg __NR_putpmsg +#define SYS_afs_syscall __NR_afs_syscall +#define SYS_tuxcall __NR_tuxcall +#define SYS_security __NR_security +#define SYS_gettid __NR_gettid +#define SYS_readahead __NR_readahead +#define SYS_setxattr __NR_setxattr +#define SYS_lsetxattr __NR_lsetxattr +#define SYS_fsetxattr __NR_fsetxattr +#define SYS_getxattr __NR_getxattr +#define SYS_lgetxattr __NR_lgetxattr +#define SYS_fgetxattr __NR_fgetxattr +#define SYS_listxattr __NR_listxattr +#define SYS_llistxattr __NR_llistxattr +#define SYS_flistxattr __NR_flistxattr +#define SYS_removexattr __NR_removexattr +#define SYS_lremovexattr __NR_lremovexattr +#define SYS_fremovexattr __NR_fremovexattr +#define SYS_tkill __NR_tkill +#define SYS_time __NR_time +#define SYS_futex __NR_futex +#define SYS_sched_setaffinity __NR_sched_setaffinity +#define SYS_sched_getaffinity __NR_sched_getaffinity +#define SYS_io_setup __NR_io_setup +#define SYS_io_destroy __NR_io_destroy +#define SYS_io_getevents __NR_io_getevents +#define SYS_io_submit __NR_io_submit +#define SYS_io_cancel __NR_io_cancel +#define SYS_lookup_dcookie __NR_lookup_dcookie +#define SYS_epoll_create __NR_epoll_create +#define SYS_remap_file_pages __NR_remap_file_pages +#define SYS_getdents64 __NR_getdents64 +#define SYS_set_tid_address __NR_set_tid_address +#define SYS_restart_syscall __NR_restart_syscall +#define SYS_semtimedop __NR_semtimedop +#define SYS_fadvise64 __NR_fadvise64 +#define SYS_timer_settime __NR_timer_settime +#define SYS_timer_gettime __NR_timer_gettime +#define SYS_timer_getoverrun __NR_timer_getoverrun +#define SYS_timer_delete __NR_timer_delete +#define SYS_clock_settime __NR_clock_settime +#define SYS_clock_gettime __NR_clock_gettime +#define SYS_clock_getres __NR_clock_getres +#define SYS_clock_nanosleep __NR_clock_nanosleep +#define SYS_exit_group __NR_exit_group +#define SYS_epoll_wait __NR_epoll_wait +#define SYS_epoll_ctl __NR_epoll_ctl +#define SYS_tgkill __NR_tgkill +#define SYS_utimes __NR_utimes +#define SYS_mbind __NR_mbind +#define SYS_set_mempolicy __NR_set_mempolicy +#define SYS_get_mempolicy __NR_get_mempolicy +#define SYS_mq_open __NR_mq_open +#define SYS_mq_unlink __NR_mq_unlink +#define SYS_mq_timedsend __NR_mq_timedsend +#define SYS_mq_timedreceive __NR_mq_timedreceive +#define SYS_mq_getsetattr __NR_mq_getsetattr +#define SYS_add_key __NR_add_key +#define SYS_request_key __NR_request_key +#define SYS_keyctl __NR_keyctl +#define SYS_ioprio_set __NR_ioprio_set +#define SYS_ioprio_get __NR_ioprio_get +#define SYS_inotify_init __NR_inotify_init +#define SYS_inotify_add_watch __NR_inotify_add_watch +#define SYS_inotify_rm_watch __NR_inotify_rm_watch +#define SYS_migrate_pages __NR_migrate_pages +#define SYS_openat __NR_openat +#define SYS_mkdirat __NR_mkdirat +#define SYS_mknodat __NR_mknodat +#define SYS_fchownat __NR_fchownat +#define SYS_futimesat __NR_futimesat +#define SYS_newfstatat __NR_newfstatat +#define SYS_unlinkat __NR_unlinkat +#define SYS_renameat __NR_renameat +#define SYS_linkat __NR_linkat +#define SYS_symlinkat __NR_symlinkat +#define SYS_readlinkat __NR_readlinkat +#define SYS_fchmodat __NR_fchmodat +#define SYS_faccessat __NR_faccessat +#define SYS_pselect6 __NR_pselect6 +#define SYS_ppoll __NR_ppoll +#define SYS_unshare __NR_unshare +#define SYS_splice __NR_splice +#define SYS_tee __NR_tee +#define SYS_sync_file_range __NR_sync_file_range +#define SYS_utimensat __NR_utimensat +#define SYS_epoll_pwait __NR_epoll_pwait +#define SYS_signalfd __NR_signalfd +#define SYS_timerfd_create __NR_timerfd_create +#define SYS_eventfd __NR_eventfd +#define SYS_fallocate __NR_fallocate +#define SYS_timerfd_settime __NR_timerfd_settime +#define SYS_timerfd_gettime __NR_timerfd_gettime +#define SYS_accept4 __NR_accept4 +#define SYS_signalfd4 __NR_signalfd4 +#define SYS_eventfd2 __NR_eventfd2 +#define SYS_epoll_create1 __NR_epoll_create1 +#define SYS_dup3 __NR_dup3 +#define SYS_pipe2 __NR_pipe2 +#define SYS_inotify_init1 __NR_inotify_init1 +#define SYS_perf_event_open __NR_perf_event_open +#define SYS_fanotify_init __NR_fanotify_init +#define SYS_fanotify_mark __NR_fanotify_mark +#define SYS_prlimit64 __NR_prlimit64 +#define SYS_name_to_handle_at __NR_name_to_handle_at +#define SYS_open_by_handle_at __NR_open_by_handle_at +#define SYS_clock_adjtime __NR_clock_adjtime +#define SYS_syncfs __NR_syncfs +#define SYS_setns __NR_setns +#define SYS_getcpu __NR_getcpu +#define SYS_kcmp __NR_kcmp +#define SYS_finit_module __NR_finit_module +#define SYS_rt_sigaction __NR_rt_sigaction +#define SYS_rt_sigreturn __NR_rt_sigreturn +#define SYS_ioctl __NR_ioctl +#define SYS_readv __NR_readv +#define SYS_writev __NR_writev +#define SYS_recvfrom __NR_recvfrom +#define SYS_sendmsg __NR_sendmsg +#define SYS_recvmsg __NR_recvmsg +#define SYS_execve __NR_execve +#define SYS_ptrace __NR_ptrace +#define SYS_rt_sigpending __NR_rt_sigpending +#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait +#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo +#define SYS_sigaltstack __NR_sigaltstack +#define SYS_timer_create __NR_timer_create +#define SYS_mq_notify __NR_mq_notify +#define SYS_kexec_load __NR_kexec_load +#define SYS_waitid __NR_waitid +#define SYS_set_robust_list __NR_set_robust_list +#define SYS_get_robust_list __NR_get_robust_list +#define SYS_vmsplice __NR_vmsplice +#define SYS_move_pages __NR_move_pages +#define SYS_preadv __NR_preadv +#define SYS_pwritev __NR_pwritev +#define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo +#define SYS_recvmmsg __NR_recvmmsg +#define SYS_sendmmsg __NR_sendmmsg +#define SYS_process_vm_readv __NR_process_vm_readv +#define SYS_process_vm_writev __NR_process_vm_writev +#define SYS_setsockopt __NR_setsockopt +#define SYS_getsockopt __NR_getsockopt + +#undef SYS_fstatat +#undef SYS_pread +#undef SYS_pwrite +#undef SYS_getdents +#define SYS_fstatat SYS_newfstatat +#define SYS_pread SYS_pread64 +#define SYS_pwrite SYS_pwrite64 +#define SYS_getdents SYS_getdents64 +#define SYS_fadvise SYS_fadvise64 diff -Nur musl-0.9.15/arch/x32/bits/termios.h musl-git/arch/x32/bits/termios.h --- musl-0.9.15/arch/x32/bits/termios.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,160 @@ +struct termios +{ + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[NCCS]; + speed_t __c_ispeed; + speed_t __c_ospeed; +}; + +#define VINTR 0 +#define VQUIT 1 +#define VERASE 2 +#define VKILL 3 +#define VEOF 4 +#define VTIME 5 +#define VMIN 6 +#define VSWTC 7 +#define VSTART 8 +#define VSTOP 9 +#define VSUSP 10 +#define VEOL 11 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE 14 +#define VLNEXT 15 +#define VEOL2 16 + +#define IGNBRK 0000001 +#define BRKINT 0000002 +#define IGNPAR 0000004 +#define PARMRK 0000010 +#define INPCK 0000020 +#define ISTRIP 0000040 +#define INLCR 0000100 +#define IGNCR 0000200 +#define ICRNL 0000400 +#define IUCLC 0001000 +#define IXON 0002000 +#define IXANY 0004000 +#define IXOFF 0010000 +#define IMAXBEL 0020000 +#define IUTF8 0040000 + +#define OPOST 0000001 +#define OLCUC 0000002 +#define ONLCR 0000004 +#define OCRNL 0000010 +#define ONOCR 0000020 +#define ONLRET 0000040 +#define OFILL 0000100 +#define OFDEL 0000200 +#define NLDLY 0000400 +#define NL0 0000000 +#define NL1 0000400 +#define CRDLY 0003000 +#define CR0 0000000 +#define CR1 0001000 +#define CR2 0002000 +#define CR3 0003000 +#define TABDLY 0014000 +#define TAB0 0000000 +#define TAB1 0004000 +#define TAB2 0010000 +#define TAB3 0014000 +#define BSDLY 0020000 +#define BS0 0000000 +#define BS1 0020000 +#define FFDLY 0100000 +#define FF0 0000000 +#define FF1 0100000 + +#define VTDLY 0040000 +#define VT0 0000000 +#define VT1 0040000 + +#define B0 0000000 +#define B50 0000001 +#define B75 0000002 +#define B110 0000003 +#define B134 0000004 +#define B150 0000005 +#define B200 0000006 +#define B300 0000007 +#define B600 0000010 +#define B1200 0000011 +#define B1800 0000012 +#define B2400 0000013 +#define B4800 0000014 +#define B9600 0000015 +#define B19200 0000016 +#define B38400 0000017 + +#define B57600 0010001 +#define B115200 0010002 +#define B230400 0010003 +#define B460800 0010004 +#define B500000 0010005 +#define B576000 0010006 +#define B921600 0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CBAUD 0010017 + +#define CSIZE 0000060 +#define CS5 0000000 +#define CS6 0000020 +#define CS7 0000040 +#define CS8 0000060 +#define CSTOPB 0000100 +#define CREAD 0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL 0002000 +#define CLOCAL 0004000 + +#define ISIG 0000001 +#define ICANON 0000002 +#define ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 + +#define TCOOFF 0 +#define TCOON 1 +#define TCIOFF 2 +#define TCION 3 + +#define TCIFLUSH 0 +#define TCOFLUSH 1 +#define TCIOFLUSH 2 + +#define TCSANOW 0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/x32/bits/user.h musl-git/arch/x32/bits/user.h --- musl-0.9.15/arch/x32/bits/user.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/bits/user.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,44 @@ +#undef __WORDSIZE +#define __WORDSIZE 64 + +typedef struct user_fpregs_struct +{ + uint16_t cwd, swd, ftw, fop; + uint64_t rip, rdp; + uint32_t mxcsr, mxcs_mask; + uint32_t st_space[32], xmm_space[64], padding[24]; +} elf_fpregset_t; + +struct user_regs_struct +{ + unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8; + unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip; + unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs; +}; +#define ELF_NGREG 27 +typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +struct user +{ + struct user_regs_struct regs; + int u_fpvalid; + struct user_fpregs_struct i387; + unsigned long u_tsize; + unsigned long u_dsize; + unsigned long u_ssize; + unsigned long start_code; + unsigned long start_stack; + long signal; + int reserved; + struct user_regs_struct *u_ar0; + struct user_fpregs_struct *u_fpstate; + unsigned long magic; + char u_comm[32]; + unsigned long u_debugreg[8]; +}; + +#define PAGE_MASK (~(PAGE_SIZE-1)) +#define NBPG PAGE_SIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) diff -Nur musl-0.9.15/arch/x32/crt_arch.h musl-git/arch/x32/crt_arch.h --- musl-0.9.15/arch/x32/crt_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/crt_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,9 @@ +__asm__("\ +.text \n\ +.global _start \n\ +_start: \n\ + xor %rbp,%rbp \n\ + mov %rsp,%rdi \n\ + andq $-16,%rsp \n\ + call __cstart \n\ +"); diff -Nur musl-0.9.15/arch/x32/pthread_arch.h musl-git/arch/x32/pthread_arch.h --- musl-0.9.15/arch/x32/pthread_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/pthread_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,10 @@ +static inline struct pthread *__pthread_self() +{ + struct pthread *self; + __asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) ); + return self; +} + +#define TP_ADJ(p) (p) + +#define CANCEL_REG_IP 16 diff -Nur musl-0.9.15/arch/x32/reloc.h musl-git/arch/x32/reloc.h --- musl-0.9.15/arch/x32/reloc.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/reloc.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,46 @@ +#include +#include +#include + +#define LDSO_ARCH "x32" + +#define IS_COPY(x) ((x)==R_X86_64_COPY) +#define IS_PLT(x) ((x)==R_X86_64_JUMP_SLOT) + +static inline void do_single_reloc( + struct dso *self, unsigned char *base_addr, + size_t *reloc_addr, int type, size_t addend, + Sym *sym, size_t sym_size, + struct symdef def, size_t sym_val) +{ + switch(type) { + case R_X86_64_GLOB_DAT: + case R_X86_64_JUMP_SLOT: + case R_X86_64_64: + *reloc_addr = sym_val + addend; + break; + case R_X86_64_32: + *(uint32_t *)reloc_addr = sym_val + addend; + break; + case R_X86_64_PC32: + *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; + break; + case R_X86_64_RELATIVE: + *reloc_addr = (size_t)base_addr + addend; + break; + case R_X86_64_COPY: + memcpy(reloc_addr, (void *)sym_val, sym_size); + break; + case R_X86_64_DTPMOD64: + *reloc_addr = def.dso ? def.dso->tls_id : self->tls_id; + break; + case R_X86_64_DTPOFF64: + *reloc_addr = def.sym->st_value + addend; + break; + case R_X86_64_TPOFF64: + *reloc_addr = (def.sym + ? def.sym->st_value - def.dso->tls_offset + : 0 - self->tls_offset) + addend; + break; + } +} diff -Nur musl-0.9.15/arch/x32/src/syscall_cp_fixup.c musl-git/arch/x32/src/syscall_cp_fixup.c --- musl-0.9.15/arch/x32/src/syscall_cp_fixup.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/src/syscall_cp_fixup.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,31 @@ +#include +long __syscall_cp_internal(volatile void*, long long, long long, long long, long long, + long long, long long, long long); + +struct __timespec { long long tv_sec; long tv_nsec; }; +struct __timespec_kernel { long long tv_sec; long long tv_nsec; }; +#define __tsc(X) ((struct __timespec*)(unsigned long)(X)) +#define __fixup(X) do { if(X) X = (unsigned long) (&(struct __timespec_kernel) \ + { .tv_sec = __tsc(X)->tv_sec, .tv_nsec = __tsc(X)->tv_nsec}); } while(0) + +long __syscall_cp_asm (volatile void * foo, long long n, long long a1, long long a2, long long a3, + long long a4, long long a5, long long a6) { + switch (n) { + case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6: + __fixup(a5); + break; + case SYS_futex: + if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) + __fixup(a4); + break; + case SYS_clock_nanosleep: + case SYS_rt_sigtimedwait: case SYS_ppoll: + __fixup(a3); + break; + case SYS_nanosleep: + __fixup(a1); + break; + } + return __syscall_cp_internal(foo, n, a1, a2, a3, a4, a5, a6); +} + diff -Nur musl-0.9.15/arch/x32/src/sysinfo.c musl-git/arch/x32/src/sysinfo.c --- musl-0.9.15/arch/x32/src/sysinfo.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/src/sysinfo.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,47 @@ +#include +#include "syscall.h" + +#define klong long long +#define kulong unsigned long long + +struct kernel_sysinfo { + klong uptime; + kulong loads[3]; + kulong totalram; + kulong freeram; + kulong sharedram; + kulong bufferram; + kulong totalswap; + kulong freeswap; + short procs; + short pad; + kulong totalhigh; + kulong freehigh; + unsigned mem_unit; +}; + +int __x32_sysinfo(struct sysinfo *info) +{ + struct kernel_sysinfo tmp; + int ret = syscall(SYS_sysinfo, &tmp); + if(ret == -1) return ret; + info->uptime = tmp.uptime; + info->loads[0] = tmp.loads[0]; + info->loads[1] = tmp.loads[1]; + info->loads[2] = tmp.loads[2]; + kulong shifts; + kulong max = tmp.totalram | tmp.totalswap; + __asm__("bsr %1,%0" : "=r"(shifts) : "r"(max)); + shifts = shifts >= 32 ? shifts - 31 : 0; + info->totalram = tmp.totalram >> shifts; + info->freeram = tmp.freeram >> shifts; + info->sharedram = tmp.sharedram >> shifts; + info->bufferram = tmp.bufferram >> shifts; + info->totalswap = tmp.totalswap >> shifts; + info->freeswap = tmp.freeswap >> shifts; + info->procs = tmp.procs ; + info->totalhigh = tmp.totalhigh >> shifts; + info->freehigh = tmp.freehigh >> shifts; + info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts; + return ret; +} diff -Nur musl-0.9.15/arch/x32/syscall_arch.h musl-git/arch/x32/syscall_arch.h --- musl-0.9.15/arch/x32/syscall_arch.h 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/arch/x32/syscall_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,117 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X) +typedef long long syscall_arg_t; +struct __timespec { long long tv_sec; long tv_nsec; }; +struct __timespec_kernel { long long tv_sec; long long tv_nsec; }; +#define __tsc(X) ((struct __timespec*)(unsigned long)(X)) +#define __fixup(X) do { if(X) X = (unsigned long) (&(struct __timespec_kernel) \ + { .tv_sec = __tsc(X)->tv_sec, .tv_nsec = __tsc(X)->tv_nsec}); } while(0) +#define __fixup_case_2 \ + case SYS_nanosleep: \ + __fixup(a1); break; \ + case SYS_clock_settime: \ + __fixup(a2); break; +#define __fixup_case_3 \ + case SYS_clock_nanosleep: case SYS_rt_sigtimedwait: case SYS_ppoll: \ + __fixup(a3); break; \ + case SYS_utimensat: \ + if(a3) a3 = (unsigned long) ((struct __timespec_kernel[2]) { \ + [0] = {.tv_sec = __tsc(a3)[0].tv_sec, .tv_nsec = __tsc(a3)[0].tv_nsec}, \ + [1] = {.tv_sec = __tsc(a3)[1].tv_sec, .tv_nsec = __tsc(a3)[1].tv_nsec}, \ + }); break; +#define __fixup_case_4 \ + case SYS_futex: \ + if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) __fixup(a4); break; +#define __fixup_case_5 \ + case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6: \ + __fixup(a5); break; + +static __inline long __syscall0(long long n) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall1(long long n, long long a1) +{ + unsigned long ret; + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall2(long long n, long long a1, long long a2) +{ + unsigned long ret; + struct __timespec *ts2 = 0; + switch (n) { + __fixup_case_2; + } + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2) + : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall3(long long n, long long a1, long long a2, long long a3) +{ + unsigned long ret; + switch (n) { + __fixup_case_2; + __fixup_case_3; + } + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall4(long long n, long long a1, long long a2, long long a3, + long long a4_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + switch (n) { + __fixup_case_2; + __fixup_case_3; + __fixup_case_4; + } + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4): "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall5(long long n, long long a1, long long a2, long long a3, + long long a4_, long long a5_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + register long long a5 __asm__("r8") = a5_; + switch (n) { + __fixup_case_2; + __fixup_case_3; + __fixup_case_4; + __fixup_case_5; + } + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4), "r"(a5) : "rcx", "r11", "memory"); + return ret; +} + +static __inline long __syscall6(long long n, long long a1, long long a2, long long a3, + long long a4_, long long a5_, long long a6_) +{ + unsigned long ret; + register long long a4 __asm__("r10") = a4_; + register long long a5 __asm__("r8") = a5_; + register long long a6 __asm__("r9") = a6_; + switch (n) { + __fixup_case_2; + __fixup_case_3; + __fixup_case_4; + __fixup_case_5; + } + __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), + "d"(a3), "r"(a4), "r"(a5), "r"(a6) : "rcx", "r11", "memory"); + return ret; +} diff -Nur musl-0.9.15/arch/x86_64/atomic.h musl-git/arch/x86_64/atomic.h --- musl-0.9.15/arch/x86_64/atomic.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/x86_64/atomic.h 2014-03-10 16:52:06.000000000 +0100 @@ -5,38 +5,36 @@ static inline int a_ctz_64(uint64_t x) { - long r; - __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); - return r; + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; } static inline int a_ctz_l(unsigned long x) { - long r; - __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) ); - return r; + __asm__( "bsf %1,%0" : "=r"(x) : "r"(x) ); + return x; } static inline void a_and_64(volatile uint64_t *p, uint64_t v) { - __asm__( "lock ; andq %1, %0" - : "=m"(*(long *)p) : "r"(v) : "memory" ); + __asm__( "lock ; and %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); } static inline void a_or_64(volatile uint64_t *p, uint64_t v) { - __asm__( "lock ; orq %1, %0" - : "=m"(*(long *)p) : "r"(v) : "memory" ); + __asm__( "lock ; or %1, %0" + : "=m"(*p) : "r"(v) : "memory" ); } static inline void a_store_l(volatile void *p, long x) { - __asm__( "movq %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); + __asm__( "mov %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" ); } static inline void a_or_l(volatile void *p, long v) { - __asm__( "lock ; orq %1, %0" + __asm__( "lock ; or %1, %0" : "=m"(*(long *)p) : "r"(v) : "memory" ); } @@ -56,7 +54,7 @@ static inline int a_cas(volatile int *p, int t, int s) { - __asm__( "lock ; cmpxchgl %3, %1" + __asm__( "lock ; cmpxchg %3, %1" : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" ); return t; } @@ -74,13 +72,13 @@ static inline void a_or(volatile void *p, int v) { - __asm__( "lock ; orl %1, %0" + __asm__( "lock ; or %1, %0" : "=m"(*(int *)p) : "r"(v) : "memory" ); } static inline void a_and(volatile void *p, int v) { - __asm__( "lock ; andl %1, %0" + __asm__( "lock ; and %1, %0" : "=m"(*(int *)p) : "r"(v) : "memory" ); } @@ -110,7 +108,7 @@ static inline void a_store(volatile int *p, int x) { - __asm__( "movl %1, %0" : "=m"(*p) : "r"(x) : "memory" ); + __asm__( "mov %1, %0" : "=m"(*p) : "r"(x) : "memory" ); } static inline void a_spin() diff -Nur musl-0.9.15/arch/x86_64/bits/shm.h musl-git/arch/x86_64/bits/shm.h --- musl-0.9.15/arch/x86_64/bits/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/x86_64/bits/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -13,3 +13,14 @@ unsigned long __pad1; unsigned long __pad2; }; + +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; +}; + diff -Nur musl-0.9.15/arch/x86_64/bits/stat.h musl-git/arch/x86_64/bits/stat.h --- musl-0.9.15/arch/x86_64/bits/stat.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/x86_64/bits/stat.h 2014-03-10 16:52:06.000000000 +0100 @@ -2,7 +2,7 @@ * by the corresponding correctly-sized userspace types. */ struct stat { - unsigned long st_dev; + dev_t st_dev; ino_t st_ino; nlink_t st_nlink; diff -Nur musl-0.9.15/arch/x86_64/bits/termios.h musl-git/arch/x86_64/bits/termios.h --- musl-0.9.15/arch/x86_64/bits/termios.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/x86_64/bits/termios.h 2014-03-10 16:52:06.000000000 +0100 @@ -42,6 +42,7 @@ #define IXANY 0004000 #define IXOFF 0010000 #define IMAXBEL 0020000 +#define IUTF8 0040000 #define OPOST 0000001 #define OLCUC 0000002 @@ -75,9 +76,6 @@ #define VT0 0000000 #define VT1 0040000 -/* ?? */ -#define XTABS 0014000 - #define B0 0000000 #define B50 0000001 #define B75 0000002 @@ -125,8 +123,6 @@ #define HUPCL 0002000 #define CLOCAL 0004000 -#define CRTSCTS 020000000000 - #define ISIG 0000001 #define ICANON 0000002 #define ECHO 0000010 @@ -137,14 +133,11 @@ #define TOSTOP 0000400 #define IEXTEN 0100000 -/* Extensions? */ -#define CBAUDEX 0010000 #define ECHOCTL 0001000 #define ECHOPRT 0002000 #define ECHOKE 0004000 #define FLUSHO 0010000 #define PENDIN 0040000 -#define EXTPROC 0200000 #define TCOOFF 0 #define TCOON 1 @@ -158,3 +151,10 @@ #define TCSANOW 0 #define TCSADRAIN 1 #define TCSAFLUSH 2 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff -Nur musl-0.9.15/arch/x86_64/pthread_arch.h musl-git/arch/x86_64/pthread_arch.h --- musl-0.9.15/arch/x86_64/pthread_arch.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/arch/x86_64/pthread_arch.h 2014-03-10 16:52:06.000000000 +0100 @@ -1,7 +1,7 @@ static inline struct pthread *__pthread_self() { struct pthread *self; - __asm__ __volatile__ ("movq %%fs:0,%0" : "=r" (self) ); + __asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) ); return self; } diff -Nur musl-0.9.15/configure musl-git/configure --- musl-0.9.15/configure 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/configure 2014-03-10 16:52:06.000000000 +0100 @@ -222,12 +222,16 @@ # Convert to just ARCH # case "$target" in +# Catch these early to simplify matching for 32-bit archs +mips64*|powerpc64*) fail "$0: unsupported target \"$target\"" ;; arm*) ARCH=arm ;; i?86*) ARCH=i386 ;; +x86_64-x32*|x32*) ARCH=x32 ;; x86_64*) ARCH=x86_64 ;; -mips-*|mipsel-*) ARCH=mips ;; -microblaze-*) ARCH=microblaze ;; -powerpc-*) ARCH=powerpc ;; +mips*) ARCH=mips ;; +microblaze*) ARCH=microblaze ;; +powerpc*) ARCH=powerpc ;; +sh[1-9bel-]*|sh|superh*) ARCH=sh ;; unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; *) fail "$0: unknown or unsupported target \"$target\"" ;; esac @@ -381,6 +385,7 @@ tryflag CFLAGS_AUTO -Wno-unused-value tryflag CFLAGS_AUTO -Wno-unused-but-set-variable tryflag CFLAGS_AUTO -Wno-unknown-pragmas +tryflag CFLAGS_AUTO -Wno-pointer-to-int-cast fi # Some patched GCC builds have these defaults messed up... @@ -410,12 +415,33 @@ trycppif __ARM_PCS_VFP "$t" && SUBARCH=${SUBARCH}hf fi -test "$ARCH" = "mips" && trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" \ -&& SUBARCH=${SUBARCH}el +if test "$ARCH" = "mips" ; then +trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" && SUBARCH=${SUBARCH}el +trycppif __mips_soft_float "$t" && SUBARCH=${SUBARCH}-sf +fi test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ && SUBARCH=${SUBARCH}el +if test "$ARCH" = "sh" ; then +trycppif __BIG_ENDIAN__ "$t" && SUBARCH=${SUBARCH}eb +if trycppif __SH_FPU_ANY__ "$t" ; then +# Some sh configurations are broken and replace double with float +# rather than using softfloat when the fpu is present but only +# supports single precision. Reject them. +printf "checking whether compiler's double type is IEEE double... " +echo 'typedef char dblcheck[(int)sizeof(double)-5];' > "$tmpc" +if $CC $CFLAGS_C99FSE $CPPFLAGS $CFLAGS -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then +printf "yes\n" +else +printf "no\n" +fail "$0: error: compiler's floating point configuration is unsupported" +fi +else +SUBARCH=${SUBARCH}-nofpu +fi +fi + test "$SUBARCH" \ && printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH" diff -Nur musl-0.9.15/COPYRIGHT musl-git/COPYRIGHT --- musl-0.9.15/COPYRIGHT 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/COPYRIGHT 2014-03-10 16:52:06.000000000 +0100 @@ -1,6 +1,6 @@ musl as a whole is licensed under the following standard MIT license: -Copyright © 2005-2013 Rich Felker +Copyright © 2005-2014 Rich Felker Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -79,7 +79,7 @@ from Bionic libc, used on Android. All other files which have no copyright comments are original works -Copyright © 2005-2013 Rich Felker, the main author of this library. +Copyright © 2005-2014 Rich Felker, the main author of this library. The decision to exclude such comments is intentional, as it should be possible to carry around the complete source code on tiny storage media. All public header files (include/* and arch/*/bits/*) should be diff -Nur musl-0.9.15/crt/superh/crti.s musl-git/crt/superh/crti.s --- musl-0.9.15/crt/superh/crti.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/crt/superh/crti.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,13 @@ +.section .init +.global _init +.type _init, @function +_init: + sts.l pr, @-r15 + nop + +.section .fini +.global _fini +.type _fini, @function +_fini: + sts.l pr, @-r15 + nop diff -Nur musl-0.9.15/crt/superh/crtn.s musl-git/crt/superh/crtn.s --- musl-0.9.15/crt/superh/crtn.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/crt/superh/crtn.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,9 @@ +.section .init + lds.l @r15+, pr + rts + nop + +.section .fini + lds.l @r15+, pr + rts + nop diff -Nur musl-0.9.15/crt/x32/crti.s musl-git/crt/x32/crti.s --- musl-0.9.15/crt/x32/crti.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/crt/x32/crti.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,9 @@ +.section .init +.global _init +_init: + push %rax + +.section .fini +.global _fini +_fini: + push %rax diff -Nur musl-0.9.15/crt/x32/crtn.s musl-git/crt/x32/crtn.s --- musl-0.9.15/crt/x32/crtn.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/crt/x32/crtn.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.section .init + pop %rax + ret + +.section .fini + pop %rax + ret diff -Nur musl-0.9.15/.gitignore musl-git/.gitignore --- musl-0.9.15/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/.gitignore 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,11 @@ +*.o +*.lo +*.a +*.so +*.so.1 +arch/*/bits/alltypes.h +config.mak +include/bits +tools/musl-gcc +lib/musl-gcc.specs +src/internal/version.h diff -Nur musl-0.9.15/include/arpa/inet.h musl-git/include/arpa/inet.h --- musl-0.9.15/include/arpa/inet.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/arpa/inet.h 2014-03-10 16:52:06.000000000 +0100 @@ -20,7 +20,7 @@ const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t); int inet_aton (const char *, struct in_addr *); -struct in_addr inet_makeaddr(int, int); +struct in_addr inet_makeaddr(in_addr_t, in_addr_t); in_addr_t inet_lnaof(struct in_addr); in_addr_t inet_netof(struct in_addr); diff -Nur musl-0.9.15/include/dlfcn.h musl-git/include/dlfcn.h --- musl-0.9.15/include/dlfcn.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/dlfcn.h 2014-03-10 16:52:06.000000000 +0100 @@ -31,7 +31,7 @@ const char *dli_sname; void *dli_saddr; } Dl_info; -int dladdr(void *, Dl_info *); +int dladdr(const void *, Dl_info *); int dlinfo(void *, int, void *); #endif diff -Nur musl-0.9.15/include/elf.h musl-git/include/elf.h --- musl-0.9.15/include/elf.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/elf.h 2014-03-10 16:52:06.000000000 +0100 @@ -1153,6 +1153,7 @@ #define EF_MIPS_64BIT_WHIRL 16 #define EF_MIPS_ABI2 32 #define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_NAN2008 1024 #define EF_MIPS_ARCH 0xf0000000 @@ -2092,6 +2093,117 @@ #define R_AARCH64_NONE 0 #define R_AARCH64_ABS64 257 #define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 #define R_AARCH64_COPY 1024 #define R_AARCH64_GLOB_DAT 1025 #define R_AARCH64_JUMP_SLOT 1026 diff -Nur musl-0.9.15/include/fcntl.h musl-git/include/fcntl.h --- musl-0.9.15/include/fcntl.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/fcntl.h 2014-03-10 16:52:06.000000000 +0100 @@ -148,6 +148,7 @@ #define SPLICE_F_MORE 4 #define SPLICE_F_GIFT 8 int fallocate(int, int, off_t, off_t); +#define fallocate64 fallocate ssize_t readahead(int, off_t, size_t); int sync_file_range(int, off_t, off_t, unsigned); ssize_t vmsplice(int, const struct iovec *, size_t, unsigned); @@ -160,6 +161,7 @@ #define F_GETLK64 F_GETLK #define F_SETLK64 F_SETLK #define F_SETLKW64 F_SETLKW +#define flock64 flock #define open64 open #define openat64 openat #define creat64 creat diff -Nur musl-0.9.15/include/math.h musl-git/include/math.h --- musl-0.9.15/include/math.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/math.h 2014-03-10 16:52:06.000000000 +0100 @@ -42,12 +42,14 @@ static __inline unsigned __FLOAT_BITS(float __f) { - union {float __f; unsigned __i;} __u = {__f}; + union {float __f; unsigned __i;} __u; + __u.__f = __f; return __u.__i; } static __inline unsigned long long __DOUBLE_BITS(double __f) { - union {double __f; unsigned long long __i;} __u = {__f}; + union {double __f; unsigned long long __i;} __u; + __u.__f = __f; return __u.__i; } diff -Nur musl-0.9.15/include/netdb.h musl-git/include/netdb.h --- musl-0.9.15/include/netdb.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/netdb.h 2014-03-10 16:52:06.000000000 +0100 @@ -131,6 +131,7 @@ #define TRY_AGAIN 2 #define NO_RECOVERY 3 #define NO_DATA 4 +#define NO_ADDRESS NO_DATA #endif #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) diff -Nur musl-0.9.15/include/netinet/if_ether.h musl-git/include/netinet/if_ether.h --- musl-0.9.15/include/netinet/if_ether.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/netinet/if_ether.h 2014-03-10 16:52:06.000000000 +0100 @@ -54,6 +54,7 @@ #define ETH_P_8021AH 0x88E7 #define ETH_P_MVRP 0x88F5 #define ETH_P_1588 0x88F7 +#define ETH_P_PRP 0x88FB #define ETH_P_FCOE 0x8906 #define ETH_P_TDLS 0x890D #define ETH_P_FIP 0x8914 diff -Nur musl-0.9.15/include/netinet/in.h musl-git/include/netinet/in.h --- musl-0.9.15/include/netinet/in.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/netinet/in.h 2014-03-10 16:52:06.000000000 +0100 @@ -149,7 +149,7 @@ (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe)) #define __ARE_4_EQUAL(a,b) \ - (!( 0[a]-0[b] | 1[a]-1[b] | 2[a]-2[b] | 3[a]-3[b] )) + (!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) )) #define IN6_ARE_ADDR_EQUAL(a,b) \ __ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b)) @@ -211,27 +211,13 @@ #define IP_MULTICAST_ALL 49 #define IP_UNICAST_IF 50 -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -#define MCAST_JOIN_GROUP 42 -#define MCAST_BLOCK_SOURCE 43 -#define MCAST_UNBLOCK_SOURCE 44 -#define MCAST_LEAVE_GROUP 45 -#define MCAST_JOIN_SOURCE_GROUP 46 -#define MCAST_LEAVE_SOURCE_GROUP 47 -#define MCAST_MSFILTER 48 - -#define MCAST_EXCLUDE 0 -#define MCAST_INCLUDE 1 -#endif - #define IP_RECVRETOPTS IP_RETOPTS #define IP_PMTUDISC_DONT 0 #define IP_PMTUDISC_WANT 1 #define IP_PMTUDISC_DO 2 #define IP_PMTUDISC_PROBE 3 - -#define SOL_IP 0 +#define IP_PMTUDISC_INTERFACE 4 #define IP_DEFAULT_MULTICAST_TTL 1 #define IP_DEFAULT_MULTICAST_LOOP 1 @@ -243,6 +229,19 @@ char ip_opts[40]; }; +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#define MCAST_JOIN_GROUP 42 +#define MCAST_BLOCK_SOURCE 43 +#define MCAST_UNBLOCK_SOURCE 44 +#define MCAST_LEAVE_GROUP 45 +#define MCAST_JOIN_SOURCE_GROUP 46 +#define MCAST_LEAVE_SOURCE_GROUP 47 +#define MCAST_MSFILTER 48 + +#define MCAST_EXCLUDE 0 +#define MCAST_INCLUDE 1 + struct ip_mreq { struct in_addr imr_multiaddr; @@ -273,7 +272,6 @@ (sizeof(struct ip_msfilter) - sizeof(struct in_addr) \ + (numsrc) * sizeof(struct in_addr)) -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) struct group_req { uint32_t gr_interface; struct sockaddr_storage gr_group; @@ -295,7 +293,6 @@ #define GROUP_FILTER_SIZE(numsrc) \ (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \ + (numsrc) * sizeof(struct sockaddr_storage)) -#endif struct in_pktinfo { @@ -315,6 +312,7 @@ struct sockaddr_in6 ip6m_addr; uint32_t ip6m_mtu; }; +#endif #define IPV6_ADDRFORM 1 #define IPV6_2292PKTINFO 2 @@ -324,7 +322,6 @@ #define IPV6_2292PKTOPTIONS 6 #define IPV6_CHECKSUM 7 #define IPV6_2292HOPLIMIT 8 -#define SCM_SRCRT IPV6_RXSRCRT #define IPV6_NEXTHOP 9 #define IPV6_AUTHHDR 10 #define IPV6_UNICAST_HOPS 16 @@ -363,15 +360,11 @@ #define IPV6_RXHOPOPTS IPV6_HOPOPTS #define IPV6_RXDSTOPTS IPV6_DSTOPTS - #define IPV6_PMTUDISC_DONT 0 #define IPV6_PMTUDISC_WANT 1 #define IPV6_PMTUDISC_DO 2 #define IPV6_PMTUDISC_PROBE 3 -#define SOL_IPV6 41 -#define SOL_ICMPV6 58 - #define IPV6_RTHDR_LOOSE 0 #define IPV6_RTHDR_STRICT 1 diff -Nur musl-0.9.15/include/netinet/tcp.h musl-git/include/netinet/tcp.h --- musl-0.9.15/include/netinet/tcp.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/netinet/tcp.h 2014-03-10 16:52:06.000000000 +0100 @@ -44,42 +44,80 @@ #define SOL_TCP 6 #include #include -#endif +#include +#include + +typedef uint32_t tcp_seq; +#define TH_FIN 0x01 +#define TH_SYN 0x02 +#define TH_RST 0x04 +#define TH_PUSH 0x08 +#define TH_ACK 0x10 +#define TH_URG 0x20 + +struct tcphdr { #ifdef _GNU_SOURCE -#include -struct tcphdr -{ - u_int16_t source; - u_int16_t dest; - u_int32_t seq; - u_int32_t ack_seq; +#ifdef __GNUC__ + __extension__ +#endif + union { struct { + + uint16_t source; + uint16_t dest; + uint32_t seq; + uint32_t ack_seq; +#if __BYTE_ORDER == __LITTLE_ENDIAN + uint16_t res1:4; + uint16_t doff:4; + uint16_t fin:1; + uint16_t syn:1; + uint16_t rst:1; + uint16_t psh:1; + uint16_t ack:1; + uint16_t urg:1; + uint16_t res2:2; +#else + uint16_t doff:4; + uint16_t res1:4; + uint16_t res2:2; + uint16_t urg:1; + uint16_t ack:1; + uint16_t psh:1; + uint16_t rst:1; + uint16_t syn:1; + uint16_t fin:1; +#endif + uint16_t window; + uint16_t check; + uint16_t urg_ptr; + + }; struct { +#endif + + uint16_t th_sport; + uint16_t th_dport; + uint32_t th_seq; + uint32_t th_ack; #if __BYTE_ORDER == __LITTLE_ENDIAN - u_int16_t res1:4; - u_int16_t doff:4; - u_int16_t fin:1; - u_int16_t syn:1; - u_int16_t rst:1; - u_int16_t psh:1; - u_int16_t ack:1; - u_int16_t urg:1; - u_int16_t res2:2; + uint8_t th_x2:4; + uint8_t th_off:4; #else - u_int16_t doff:4; - u_int16_t res1:4; - u_int16_t res2:2; - u_int16_t urg:1; - u_int16_t ack:1; - u_int16_t psh:1; - u_int16_t rst:1; - u_int16_t syn:1; - u_int16_t fin:1; -#endif - u_int16_t window; - u_int16_t check; - u_int16_t urg_ptr; + uint8_t th_off:4; + uint8_t th_x2:4; +#endif + uint8_t th_flags; + uint16_t th_win; + uint16_t th_sum; + uint16_t th_urp; + +#ifdef _GNU_SOURCE + }; }; +#endif }; +#endif +#ifdef _GNU_SOURCE #define TCPI_OPT_TIMESTAMPS 1 #define TCPI_OPT_SACK 2 #define TCPI_OPT_WSCALE 4 @@ -93,37 +131,37 @@ struct tcp_info { - u_int8_t tcpi_state; - u_int8_t tcpi_ca_state; - u_int8_t tcpi_retransmits; - u_int8_t tcpi_probes; - u_int8_t tcpi_backoff; - u_int8_t tcpi_options; - u_int8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; - u_int32_t tcpi_rto; - u_int32_t tcpi_ato; - u_int32_t tcpi_snd_mss; - u_int32_t tcpi_rcv_mss; - u_int32_t tcpi_unacked; - u_int32_t tcpi_sacked; - u_int32_t tcpi_lost; - u_int32_t tcpi_retrans; - u_int32_t tcpi_fackets; - u_int32_t tcpi_last_data_sent; - u_int32_t tcpi_last_ack_sent; - u_int32_t tcpi_last_data_recv; - u_int32_t tcpi_last_ack_recv; - u_int32_t tcpi_pmtu; - u_int32_t tcpi_rcv_ssthresh; - u_int32_t tcpi_rtt; - u_int32_t tcpi_rttvar; - u_int32_t tcpi_snd_ssthresh; - u_int32_t tcpi_snd_cwnd; - u_int32_t tcpi_advmss; - u_int32_t tcpi_reordering; - u_int32_t tcpi_rcv_rtt; - u_int32_t tcpi_rcv_space; - u_int32_t tcpi_total_retrans; + uint8_t tcpi_state; + uint8_t tcpi_ca_state; + uint8_t tcpi_retransmits; + uint8_t tcpi_probes; + uint8_t tcpi_backoff; + uint8_t tcpi_options; + uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; + uint32_t tcpi_rto; + uint32_t tcpi_ato; + uint32_t tcpi_snd_mss; + uint32_t tcpi_rcv_mss; + uint32_t tcpi_unacked; + uint32_t tcpi_sacked; + uint32_t tcpi_lost; + uint32_t tcpi_retrans; + uint32_t tcpi_fackets; + uint32_t tcpi_last_data_sent; + uint32_t tcpi_last_ack_sent; + uint32_t tcpi_last_data_recv; + uint32_t tcpi_last_ack_recv; + uint32_t tcpi_pmtu; + uint32_t tcpi_rcv_ssthresh; + uint32_t tcpi_rtt; + uint32_t tcpi_rttvar; + uint32_t tcpi_snd_ssthresh; + uint32_t tcpi_snd_cwnd; + uint32_t tcpi_advmss; + uint32_t tcpi_reordering; + uint32_t tcpi_rcv_rtt; + uint32_t tcpi_rcv_space; + uint32_t tcpi_total_retrans; }; #define TCP_MD5SIG_MAXKEYLEN 80 @@ -131,10 +169,10 @@ struct tcp_md5sig { struct sockaddr_storage tcpm_addr; - u_int16_t __tcpm_pad1; - u_int16_t tcpm_keylen; - u_int32_t __tcpm_pad2; - u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; + uint16_t __tcpm_pad1; + uint16_t tcpm_keylen; + uint32_t __tcpm_pad2; + uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; }; #endif diff -Nur musl-0.9.15/include/netinet/udp.h musl-git/include/netinet/udp.h --- musl-0.9.15/include/netinet/udp.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/netinet/udp.h 2014-03-10 16:52:06.000000000 +0100 @@ -5,19 +5,22 @@ extern "C" { #endif +#include #include -struct udphdr { - uint16_t source; - uint16_t dest; - uint16_t len; - uint16_t check; -}; - +#ifdef _GNU_SOURCE #define uh_sport source #define uh_dport dest #define uh_ulen len #define uh_sum check +#endif + +struct udphdr { + uint16_t uh_sport; + uint16_t uh_dport; + uint16_t uh_ulen; + uint16_t uh_sum; +}; #define UDP_CORK 1 #define UDP_ENCAP 100 diff -Nur musl-0.9.15/include/sched.h musl-git/include/sched.h --- musl-0.9.15/include/sched.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sched.h 2014-03-10 16:52:06.000000000 +0100 @@ -78,7 +78,7 @@ int sched_getaffinity(pid_t, size_t, cpu_set_t *); int sched_setaffinity(pid_t, size_t, const cpu_set_t *); -#define __CPU_op_S(i, size, set, op) ( (i)/8 >= (size) ? 0 : \ +#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \ ((set)->__bits[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) ) #define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=) diff -Nur musl-0.9.15/include/signal.h musl-git/include/signal.h --- musl-0.9.15/include/signal.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/signal.h 2014-03-10 16:52:06.000000000 +0100 @@ -227,8 +227,8 @@ typedef void (*sighandler_t)(int); void (*bsd_signal(int, void (*)(int)))(int); int sigisemptyset(const sigset_t *); -int sigorset (sigset_t *, sigset_t *, sigset_t *); -int sigandset(sigset_t *, sigset_t *, sigset_t *); +int sigorset (sigset_t *, const sigset_t *, const sigset_t *); +int sigandset(sigset_t *, const sigset_t *, const sigset_t *); #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND diff -Nur musl-0.9.15/include/stdlib.h musl-git/include/stdlib.h --- musl-0.9.15/include/stdlib.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/stdlib.h 2014-03-10 16:52:06.000000000 +0100 @@ -93,7 +93,7 @@ #define WSTOPSIG(s) WEXITSTATUS(s) #define WIFEXITED(s) (!WTERMSIG(s)) #define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) -#define WIFSIGNALED(s) (((s)&0xffff)-1 < 0xffu) +#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) int posix_memalign (void **, size_t, size_t); int setenv (const char *, const char *, int); diff -Nur musl-0.9.15/include/sys/inotify.h musl-git/include/sys/inotify.h --- musl-0.9.15/include/sys/inotify.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/inotify.h 2014-03-10 16:52:06.000000000 +0100 @@ -48,7 +48,7 @@ int inotify_init(void); int inotify_init1(int); int inotify_add_watch(int, const char *, uint32_t); -int inotify_rm_watch(int, uint32_t); +int inotify_rm_watch(int, int); #ifdef __cplusplus } diff -Nur musl-0.9.15/include/sys/mman.h musl-git/include/sys/mman.h --- musl-0.9.15/include/sys/mman.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/mman.h 2014-03-10 16:52:06.000000000 +0100 @@ -33,7 +33,7 @@ #ifdef _GNU_SOURCE void *mremap (void *, size_t, size_t, int, ...); -int remap_file_pages (void *, size_t, int, ssize_t, int); +int remap_file_pages (void *, size_t, int, size_t, int); #endif #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) diff -Nur musl-0.9.15/include/sys/procfs.h musl-git/include/sys/procfs.h --- musl-0.9.15/include/sys/procfs.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/procfs.h 2014-03-10 16:52:06.000000000 +0100 @@ -40,7 +40,7 @@ char pr_zomb; char pr_nice; unsigned long int pr_flag; -#if __WORDSIZE == 32 +#if UINTPTR_MAX == 0xffffffff unsigned short int pr_uid; unsigned short int pr_gid; #else diff -Nur musl-0.9.15/include/sys/sem.h musl-git/include/sys/sem.h --- musl-0.9.15/include/sys/sem.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/sem.h 2014-03-10 16:52:06.000000000 +0100 @@ -29,19 +29,19 @@ struct semid_ds { struct ipc_perm sem_perm; - long sem_otime; - unsigned long __unused1; - long sem_ctime; - unsigned long __unused2; + time_t sem_otime; + time_t __unused1; + time_t sem_ctime; + time_t __unused2; #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned short sem_nsems; - char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; #else - char __sem_nsems_pad[sizeof(long)-sizeof(short)]; + char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; unsigned short sem_nsems; #endif - unsigned long __unused3; - unsigned long __unused4; + time_t __unused3; + time_t __unused4; }; #define _SEM_SEMUN_UNDEFINED 1 diff -Nur musl-0.9.15/include/sys/shm.h musl-git/include/sys/shm.h --- musl-0.9.15/include/sys/shm.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/shm.h 2014-03-10 16:52:06.000000000 +0100 @@ -14,6 +14,13 @@ #include #include + +#ifdef _GNU_SOURCE +#define __used_ids used_ids +#define __swap_attempts swap_attempts +#define __swap_successes swap_successes +#endif + #include #define SHM_R 0400 @@ -33,20 +40,6 @@ #define SHM_HUGETLB 04000 #define SHM_NORESERVE 010000 -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; -#ifdef _GNU_SOURCE - unsigned long swap_attempts, swap_successes; -#else - unsigned long __reserved[2]; -#endif -}; - typedef unsigned long shmatt_t; void *shmat(int, const void *, int); diff -Nur musl-0.9.15/include/sys/socket.h musl-git/include/sys/socket.h --- musl-0.9.15/include/sys/socket.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/socket.h 2014-03-10 16:52:06.000000000 +0100 @@ -202,11 +202,16 @@ #define SO_LOCK_FILTER 44 #define SO_SELECT_ERR_QUEUE 45 #define SO_BUSY_POLL 46 +#define SO_MAX_PACING_RATE 47 #ifndef SOL_SOCKET #define SOL_SOCKET 1 #endif +#define SOL_IP 0 +#define SOL_IPV6 41 +#define SOL_ICMPV6 58 + #define SOL_RAW 255 #define SOL_DECNET 261 #define SOL_X25 262 diff -Nur musl-0.9.15/include/sys/sysctl.h musl-git/include/sys/sysctl.h --- musl-0.9.15/include/sys/sysctl.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/sysctl.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -#ifndef _SYS_SYSCTL_H -#define _SYS_SYSCTL_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define __NEED_size_t -#include - -int sysctl (int *, int, void *, size_t *, void *, size_t); - -#ifdef __cplusplus -} -#endif - -#endif diff -Nur musl-0.9.15/include/sys/time.h musl-git/include/sys/time.h --- musl-0.9.15/include/sys/time.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/time.h 2014-03-10 16:52:06.000000000 +0100 @@ -51,6 +51,17 @@ ((a)->tv_usec += 1000000, (a)->tv_sec--) ) #endif +#if defined(_GNU_SOURCE) +#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \ + (ts)->tv_sec = (tv)->tv_sec, \ + (ts)->tv_nsec = (tv)->tv_usec * 1000, \ + (void)0 ) +#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \ + (tv)->tv_sec = (ts)->tv_sec, \ + (tv)->tv_usec = (ts)->tv_nsec / 1000, \ + (void)0 ) +#endif + #ifdef __cplusplus } #endif diff -Nur musl-0.9.15/include/sys/wait.h musl-git/include/sys/wait.h --- musl-0.9.15/include/sys/wait.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/sys/wait.h 2014-03-10 16:52:06.000000000 +0100 @@ -50,7 +50,7 @@ #define WCOREDUMP(s) ((s) & 0x80) #define WIFEXITED(s) (!WTERMSIG(s)) #define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00) -#define WIFSIGNALED(s) (((s)&0xffff)-1 < 0xffu) +#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu) #define WIFCONTINUED(s) ((s) == 0xffff) #ifdef __cplusplus diff -Nur musl-0.9.15/include/syslog.h musl-git/include/syslog.h --- musl-0.9.15/include/syslog.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/syslog.h 2014-03-10 16:52:06.000000000 +0100 @@ -21,7 +21,7 @@ #define LOG_MAKEPRI(f, p) (((f)<<3)|(p)) #define LOG_MASK(p) (1<<(p)) -#define LOG_UPTO(p) ((1<<(p)+1)-1) +#define LOG_UPTO(p) ((1<<((p)+1))-1) #define LOG_KERN (0<<3) #define LOG_USER (1<<3) diff -Nur musl-0.9.15/include/time.h musl-git/include/time.h --- musl-0.9.15/include/time.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/time.h 2014-03-10 16:52:06.000000000 +0100 @@ -125,7 +125,7 @@ #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -int stime(time_t *); +int stime(const time_t *); time_t timegm(struct tm *); #endif diff -Nur musl-0.9.15/include/utmp.h musl-git/include/utmp.h --- musl-0.9.15/include/utmp.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/utmp.h 2014-03-10 16:52:06.000000000 +0100 @@ -10,6 +10,7 @@ #define ACCOUNTING 9 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 +#define UT_LINESIZE 32 struct lastlog { time_t ll_time; @@ -22,6 +23,8 @@ #define ut_addr ut_addr_v6[0] #define utmp utmpx #define utmpname(x) (-1) +#define e_exit __e_exit +#define e_termination __e_termination void endutent(void); struct utmp *getutent(void); diff -Nur musl-0.9.15/include/utmpx.h musl-git/include/utmpx.h --- musl-0.9.15/include/utmpx.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/include/utmpx.h 2014-03-10 16:52:06.000000000 +0100 @@ -5,6 +5,8 @@ extern "C" { #endif +#include + #define __NEED_pid_t #define __NEED_time_t #define __NEED_suseconds_t @@ -12,19 +14,17 @@ #include -#define UT_LINESIZE 32 - struct utmpx { short ut_type; pid_t ut_pid; - char ut_line[UT_LINESIZE]; + char ut_line[32]; char ut_id[4]; char ut_user[32]; char ut_host[256]; struct { - short e_termination; - short e_exit; + short __e_termination; + short __e_exit; } ut_exit; long ut_session; struct timeval ut_tv; @@ -39,7 +39,11 @@ struct utmpx *pututxline(const struct utmpx *); void setutxent(void); +#if defined(_BSD_SOURCE) | defined(_GNU_SOURCE) +#define e_exit __e_exit +#define e_termination __e_termination void updwtmpx(const char *, const struct utmpx *); +#endif #define EMPTY 0 #define RUN_LVL 1 diff -Nur musl-0.9.15/src/crypt/crypt_des.c musl-git/src/crypt/crypt_des.c --- musl-0.9.15/src/crypt/crypt_des.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/crypt/crypt_des.c 2014-03-10 16:52:06.000000000 +0100 @@ -692,7 +692,7 @@ return saltbits; } -static void des_setkey(const unsigned char *key, struct expanded_key *ekey) +void __des_setkey(const unsigned char *key, struct expanded_key *ekey) { uint32_t k0, k1, rawkey0, rawkey1; unsigned int shifts, round, i, ibit; @@ -753,7 +753,7 @@ /* * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format. */ -static void do_des(uint32_t l_in, uint32_t r_in, +void __do_des(uint32_t l_in, uint32_t r_in, uint32_t *l_out, uint32_t *r_out, uint32_t count, uint32_t saltbits, const struct expanded_key *ekey) { @@ -862,7 +862,7 @@ ((uint32_t)in[5] << 16) | ((uint32_t)in[4] << 24); - do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey); + __do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey); out[0] = l_out >> 24; out[1] = l_out >> 16; @@ -894,7 +894,7 @@ if (*key) key++; } - des_setkey(keybuf, &ekey); + __des_setkey(keybuf, &ekey); if (*setting == _PASSWORD_EFMT1) { /* @@ -929,7 +929,7 @@ q = keybuf; while (q <= &keybuf[sizeof(keybuf) - 1] && *key) *q++ ^= *key++ << 1; - des_setkey(keybuf, &ekey); + __des_setkey(keybuf, &ekey); } memcpy(output, setting, 9); @@ -957,7 +957,7 @@ /* * Do it. */ - do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey); + __do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey); /* * Now encode the result... diff -Nur musl-0.9.15/src/crypt/encrypt.c musl-git/src/crypt/encrypt.c --- musl-0.9.15/src/crypt/encrypt.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/crypt/encrypt.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,60 @@ +#include +#include +#include + +struct expanded_key { + uint32_t l[16], r[16]; +}; + +void __des_setkey(const unsigned char *key, struct expanded_key *ekey); +void __do_des(uint32_t l_in, uint32_t r_in, + uint32_t *l_out, uint32_t *r_out, + uint32_t count, uint32_t saltbits, const struct expanded_key *ekey); + + +static struct expanded_key __encrypt_key; + +void setkey(const char *key) +{ + unsigned char bkey[8]; + int i, j; + + for (i = 0; i < 8; i++) { + bkey[i] = 0; + for (j = 7; j >= 0; j--, key++) + bkey[i] |= (uint32_t)(*key & 1) << j; + } + + __des_setkey(bkey, &__encrypt_key); +} + +void encrypt(char *block, int edflag) +{ + struct expanded_key decrypt_key, *key; + uint32_t b[2]; + int i, j; + char *p; + + p = block; + for (i = 0; i < 2; i++) { + b[i] = 0; + for (j = 31; j >= 0; j--, p++) + b[i] |= (uint32_t)(*p & 1) << j; + } + + key = &__encrypt_key; + if (edflag) { + key = &decrypt_key; + for (i = 0; i < 16; i++) { + decrypt_key.l[i] = __encrypt_key.l[15-i]; + decrypt_key.r[i] = __encrypt_key.r[15-i]; + } + } + + __do_des(b[0], b[1], b, b + 1, 1, 0, key); + + p = block; + for (i = 0; i < 2; i++) + for (j = 31; j >= 0; j--) + *p++ = b[i]>>j & 1; +} diff -Nur musl-0.9.15/src/dirent/readdir.c musl-git/src/dirent/readdir.c --- musl-0.9.15/src/dirent/readdir.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/dirent/readdir.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,5 +1,7 @@ #include +#include #include "__dirent.h" +#include "syscall.h" #include "libc.h" int __getdents(int, struct dirent *, size_t); @@ -9,8 +11,11 @@ struct dirent *de; if (dir->buf_pos >= dir->buf_end) { - int len = __getdents(dir->fd, (void *)dir->buf, sizeof dir->buf); - if (len <= 0) return 0; + int len = __syscall(SYS_getdents, dir->fd, dir->buf, sizeof dir->buf); + if (len <= 0) { + if (len < 0 && len != -ENOENT) errno = -len; + return 0; + } dir->buf_end = len; dir->buf_pos = 0; } diff -Nur musl-0.9.15/src/errno/strerror.c musl-git/src/errno/strerror.c --- musl-0.9.15/src/errno/strerror.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/errno/strerror.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,7 +1,7 @@ #include #include -#define E(a,b) a, +#define E(a,b) ((unsigned char)a), static const unsigned char errid[] = { #include "__strerror.h" }; @@ -16,6 +16,12 @@ { const char *s; int i; + /* mips has one error code outside of the 8-bit range due to a + * historical typo, so we just remap it. */ + if (EDQUOT==1133) { + if (e==109) e=-1; + else if (e==EDQUOT) e=109; + } for (i=0; errid[i] && errid[i] != e; i++); for (s=errmsg; i; s++, i--) for (; *s; s++); return (char *)s; diff -Nur musl-0.9.15/src/fcntl/fcntl.c musl-git/src/fcntl/fcntl.c --- musl-0.9.15/src/fcntl/fcntl.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/fcntl/fcntl.c 2014-03-10 16:52:06.000000000 +0100 @@ -7,17 +7,17 @@ int fcntl(int fd, int cmd, ...) { - long arg; + unsigned long arg; va_list ap; va_start(ap, cmd); - arg = va_arg(ap, long); + arg = va_arg(ap, unsigned long); va_end(ap); if (cmd == F_SETFL) arg |= O_LARGEFILE; - if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, arg); + if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, (void *)arg); if (cmd == F_GETOWN) { struct f_owner_ex ex; int ret = __syscall(SYS_fcntl, fd, F_GETOWN_EX, &ex); - if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, arg); + if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, (void *)arg); if (ret) return __syscall_ret(ret); return ex.type == F_OWNER_PGRP ? -ex.pid : ex.pid; } @@ -37,5 +37,14 @@ if (ret >= 0) __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); return __syscall_ret(ret); } - return syscall(SYS_fcntl, fd, cmd, arg); + switch (cmd) { + case F_SETLK: + case F_SETLKW: + case F_GETLK: + case F_GETOWN_EX: + case F_SETOWN_EX: + return syscall(SYS_fcntl, fd, cmd, (void *)arg); + default: + return syscall(SYS_fcntl, fd, cmd, arg); + } } diff -Nur musl-0.9.15/src/fcntl/posix_fadvise.c musl-git/src/fcntl/posix_fadvise.c --- musl-0.9.15/src/fcntl/posix_fadvise.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/fcntl/posix_fadvise.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,8 +1,11 @@ #include #include "syscall.h" +#include "libc.h" int posix_fadvise(int fd, off_t base, off_t len, int advice) { return -(__syscall)(SYS_fadvise, fd, __SYSCALL_LL_O(base), __SYSCALL_LL_E(len), advice); } + +LFS64(posix_fadvise); diff -Nur musl-0.9.15/src/fcntl/posix_fallocate.c musl-git/src/fcntl/posix_fallocate.c --- musl-0.9.15/src/fcntl/posix_fallocate.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/fcntl/posix_fallocate.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,8 +1,11 @@ #include #include "syscall.h" +#include "libc.h" int posix_fallocate(int fd, off_t base, off_t len) { return -__syscall(SYS_fallocate, fd, 0, __SYSCALL_LL_E(base), __SYSCALL_LL_E(len)); } + +LFS64(posix_fallocate); diff -Nur musl-0.9.15/src/fenv/i386/fenv.s musl-git/src/fenv/i386/fenv.s --- musl-0.9.15/src/fenv/i386/fenv.s 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/fenv/i386/fenv.s 2014-03-10 16:52:06.000000000 +0100 @@ -126,7 +126,7 @@ push %eax push %eax push %eax - push %eax + pushl $0xffff push %eax pushl $0x37f fldenv (%esp) diff -Nur musl-0.9.15/src/fenv/mipsel-sf/fenv.sub musl-git/src/fenv/mipsel-sf/fenv.sub --- musl-0.9.15/src/fenv/mipsel-sf/fenv.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/mipsel-sf/fenv.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../fenv.c diff -Nur musl-0.9.15/src/fenv/mips-sf/fenv.sub musl-git/src/fenv/mips-sf/fenv.sub --- musl-0.9.15/src/fenv/mips-sf/fenv.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/mips-sf/fenv.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../fenv.c diff -Nur musl-0.9.15/src/fenv/sh/fenv.s musl-git/src/fenv/sh/fenv.s --- musl-0.9.15/src/fenv/sh/fenv.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/sh/fenv.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,74 @@ +.global fegetround +.type fegetround, @function +fegetround: + sts fpscr, r0 + rts + and #3, r0 + +.global __fesetround +.type __fesetround, @function +__fesetround: + sts fpscr, r0 + or r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global fetestexcept +.type fetestexcept, @function +fetestexcept: + sts fpscr, r0 + and r4, r0 + rts + and #0x7c, r0 + +.global feclearexcept +.type feclearexcept, @function +feclearexcept: + mov r4, r0 + and #0x7c, r0 + not r0, r4 + sts fpscr, r0 + and r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global feraiseexcept +.type feraiseexcept, @function +feraiseexcept: + mov r4, r0 + and #0x7c, r0 + sts fpscr, r4 + or r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global fegetenv +.type fegetenv, @function +fegetenv: + sts fpscr, r0 + mov.l r0, @r4 + rts + mov #0, r0 + +.global fesetenv +.type fesetenv, @function +fesetenv: + mov r4, r0 + cmp/eq #-1, r0 + bf 1f + + ! the default environment is complicated by the fact that we need to + ! preserve the current precision bit, which we do not know a priori + sts fpscr, r0 + mov #8, r1 + swap.w r1, r1 + bra 2f + and r1, r0 + +1: mov.l @r4, r0 ! non-default environment +2: lds r0, fpscr + rts + mov #0, r0 diff -Nur musl-0.9.15/src/fenv/sheb-nofpu/fenv.sub musl-git/src/fenv/sheb-nofpu/fenv.sub --- musl-0.9.15/src/fenv/sheb-nofpu/fenv.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/sheb-nofpu/fenv.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../fenv.c diff -Nur musl-0.9.15/src/fenv/sh-nofpu/fenv.sub musl-git/src/fenv/sh-nofpu/fenv.sub --- musl-0.9.15/src/fenv/sh-nofpu/fenv.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/sh-nofpu/fenv.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../fenv.c diff -Nur musl-0.9.15/src/fenv/x32/fenv.s musl-git/src/fenv/x32/fenv.s --- musl-0.9.15/src/fenv/x32/fenv.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/fenv/x32/fenv.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,97 @@ +.global feclearexcept +.type feclearexcept,@function +feclearexcept: + # maintain exceptions in the sse mxcsr, clear x87 exceptions + mov %edi,%ecx + and $0x3f,%ecx + fnstsw %ax + test %eax,%ecx + jz 1f + fnclex +1: stmxcsr -8(%esp) + and $0x3f,%eax + or %eax,-8(%esp) + test %ecx,-8(%esp) + jz 1f + not %ecx + and %ecx,-8(%esp) + ldmxcsr -8(%esp) +1: xor %eax,%eax + ret + +.global feraiseexcept +.type feraiseexcept,@function +feraiseexcept: + and $0x3f,%edi + stmxcsr -8(%esp) + or %edi,-8(%esp) + ldmxcsr -8(%esp) + xor %eax,%eax + ret + +.global __fesetround +.type __fesetround,@function +__fesetround: + push %rax + xor %eax,%eax + mov %edi,%ecx + fnstcw (%esp) + andb $0xf3,1(%esp) + or %ch,1(%esp) + fldcw (%esp) + stmxcsr (%esp) + shl $3,%ch + andb $0x9f,1(%esp) + or %ch,1(%esp) + ldmxcsr (%esp) + pop %rcx + ret + +.global fegetround +.type fegetround,@function +fegetround: + push %rax + stmxcsr (%esp) + pop %rax + shr $3,%eax + and $0xc00,%eax + ret + +.global fegetenv +.type fegetenv,@function +fegetenv: + xor %eax,%eax + fnstenv (%edi) + stmxcsr 28(%edi) + ret + +.global fesetenv +.type fesetenv,@function +fesetenv: + xor %eax,%eax + inc %edi + jz 1f + fldenv -1(%edi) + ldmxcsr 27(%edi) + ret +1: push %rax + push %rax + pushq $0xffff + pushq $0x37f + fldenv (%esp) + pushq $0x1f80 + ldmxcsr (%esp) + add $40,%esp + ret + +.global fetestexcept +.type fetestexcept,@function +fetestexcept: + and $0x3f,%edi + push %rax + stmxcsr (%esp) + pop %rsi + fnstsw %ax + or %esi,%eax + and %edi,%eax + ret diff -Nur musl-0.9.15/src/fenv/x86_64/fenv.s musl-git/src/fenv/x86_64/fenv.s --- musl-0.9.15/src/fenv/x86_64/fenv.s 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/fenv/x86_64/fenv.s 2014-03-10 16:52:06.000000000 +0100 @@ -76,7 +76,7 @@ ret 1: push %rax push %rax - push %rax + pushq $0xffff pushq $0x37f fldenv (%rsp) pushq $0x1f80 diff -Nur musl-0.9.15/src/internal/sh/syscall.s musl-git/src/internal/sh/syscall.s --- musl-0.9.15/src/internal/sh/syscall.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/internal/sh/syscall.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +.global __syscall +.type __syscall, @function +__syscall: + ! The kernel syscall entry point documents that the trap number indicates + ! the number of arguments being passed, but it then ignores that information. + ! Since we do not actually know how many arguments are being passed, we will + ! say there are six, since that is the maximum we support here. + mov r4, r3 + mov r5, r4 + mov r6, r5 + mov r7, r6 + mov.l @r15, r7 + mov.l @(4,r15), r0 + mov.l @(8,r15), r1 + trapa #22 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + rts + nop diff -Nur musl-0.9.15/src/internal/stdio_impl.h musl-git/src/internal/stdio_impl.h --- musl-0.9.15/src/internal/stdio_impl.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/internal/stdio_impl.h 2014-03-10 16:52:06.000000000 +0100 @@ -17,6 +17,7 @@ #define F_EOF 16 #define F_ERR 32 #define F_SVB 64 +#define F_APP 128 struct _IO_FILE { unsigned flags; diff -Nur musl-0.9.15/src/internal/syscall.h musl-git/src/internal/syscall.h --- musl-0.9.15/src/internal/syscall.h 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/internal/syscall.h 2014-03-10 16:52:06.000000000 +0100 @@ -1,22 +1,28 @@ #ifndef _INTERNAL_SYSCALL_H #define _INTERNAL_SYSCALL_H -#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303) -__attribute__((visibility("protected"))) -#endif -long __syscall_ret(unsigned long), __syscall(long, ...), - __syscall_cp(long, long, long, long, long, long, long); - #include #include "syscall_arch.h" -#define __syscall1(n,a) __syscall1(n,(long)(a)) -#define __syscall2(n,a,b) __syscall2(n,(long)(a),(long)(b)) -#define __syscall3(n,a,b,c) __syscall3(n,(long)(a),(long)(b),(long)(c)) -#define __syscall4(n,a,b,c,d) __syscall4(n,(long)(a),(long)(b),(long)(c),(long)(d)) -#define __syscall5(n,a,b,c,d,e) __syscall5(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e)) -#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f)) -#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f),(long)g) +#ifndef __scc +#define __scc(X) ((long) (X)) +typedef long syscall_arg_t; +#endif + +#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303) +__attribute__((visibility("protected"))) +#endif +long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...), + __syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t); + +#define __syscall1(n,a) __syscall1(n,__scc(a)) +#define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b)) +#define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c)) +#define __syscall4(n,a,b,c,d) __syscall4(n,__scc(a),__scc(b),__scc(c),__scc(d)) +#define __syscall5(n,a,b,c,d,e) __syscall5(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e)) +#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) +#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g)) #define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n #define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) @@ -31,12 +37,12 @@ #define socketcall_cp __socketcall_cp #define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0) -#define __syscall_cp1(n,a) (__syscall_cp)(n,(long)(a),0,0,0,0,0) -#define __syscall_cp2(n,a,b) (__syscall_cp)(n,(long)(a),(long)(b),0,0,0,0) -#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),0,0,0) -#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),0,0) -#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),0) -#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f)) +#define __syscall_cp1(n,a) (__syscall_cp)(n,__scc(a),0,0,0,0,0) +#define __syscall_cp2(n,a,b) (__syscall_cp)(n,__scc(a),__scc(b),0,0,0,0) +#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),0,0,0) +#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),0,0) +#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0) +#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f)) #define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__) #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__)) diff -Nur musl-0.9.15/src/internal/x32/syscall.s musl-git/src/internal/x32/syscall.s --- musl-0.9.15/src/internal/x32/syscall.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/internal/x32/syscall.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,12 @@ +.global __syscall +.type __syscall,@function +__syscall: + movq %rdi,%rax + movq %rsi,%rdi + movq %rdx,%rsi + movq %rcx,%rdx + movq %r8,%r10 + movq %r9,%r8 + movq 8(%rsp),%r9 + syscall + ret diff -Nur musl-0.9.15/src/ipc/semctl.c musl-git/src/ipc/semctl.c --- musl-0.9.15/src/ipc/semctl.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/ipc/semctl.c 2014-03-10 16:52:06.000000000 +0100 @@ -3,16 +3,22 @@ #include "syscall.h" #include "ipc.h" +union semun { + int val; + struct semid_ds *buf; + unsigned short *array; +}; + int semctl(int id, int num, int cmd, ...) { - long arg; + union semun arg; va_list ap; va_start(ap, cmd); - arg = va_arg(ap, long); + arg = va_arg(ap, union semun); va_end(ap); #ifdef SYS_semctl - return syscall(SYS_semctl, id, num, cmd | IPC_64, arg); + return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf); #else - return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg); + return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf); #endif } diff -Nur musl-0.9.15/src/ldso/dladdr.c musl-git/src/ldso/dladdr.c --- musl-0.9.15/src/ldso/dladdr.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/ldso/dladdr.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,9 +1,9 @@ #define _GNU_SOURCE #include -int __dladdr(void *, Dl_info *); +int __dladdr(const void *, Dl_info *); -int dladdr(void *addr, Dl_info *info) +int dladdr(const void *addr, Dl_info *info) { return __dladdr(addr, info); } diff -Nur musl-0.9.15/src/ldso/dynlink.c musl-git/src/ldso/dynlink.c --- musl-0.9.15/src/ldso/dynlink.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/ldso/dynlink.c 2014-03-10 16:52:06.000000000 +0100 @@ -253,7 +253,8 @@ name = strings + sym->st_name; ctx = IS_COPY(type) ? head->next : head; def = find_sym(ctx, name, IS_PLT(type)); - if (!def.sym && sym->st_info>>4 != STB_WEAK) { + if (!def.sym && (sym->st_shndx != SHN_UNDEF + || sym->st_info>>4 != STB_WEAK)) { snprintf(errbuf, sizeof errbuf, "Error relocating %s: %s: symbol not found", dso->name, name); @@ -1331,7 +1332,7 @@ return 0; } -int __dladdr(void *addr, Dl_info *info) +int __dladdr(const void *addr, Dl_info *info) { struct dso *p; Sym *sym; @@ -1441,7 +1442,7 @@ { return 0; } -int __dladdr (void *addr, Dl_info *info) +int __dladdr (const void *addr, Dl_info *info) { return 0; } diff -Nur musl-0.9.15/src/ldso/sh/dlsym.s musl-git/src/ldso/sh/dlsym.s --- musl-0.9.15/src/ldso/sh/dlsym.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/ldso/sh/dlsym.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,10 @@ +.text +.global dlsym +.type dlsym, @function +dlsym: + mov.l L1, r0 + braf r0 +1: mov.l @r15, r6 + +.align 2 +L1: .long __dlsym@PLT-(1b-.) diff -Nur musl-0.9.15/src/ldso/sh/start.s musl-git/src/ldso/sh/start.s --- musl-0.9.15/src/ldso/sh/start.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/ldso/sh/start.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,26 @@ +.text +.global _start +.type _start, @function +_start: + mov.l @r15, r4 + mov r15, r5 + mov.l L1, r0 + bsrf r0 + add #4, r5 + +2: mov r0, r2 + mov.l @r15+, r1 +1: mov.l @r15+, r0 + cmp/eq #-1, r0 + bt/s 1b + add #-1, r1 + + add #1, r1 + mov.l r0, @-r15 + mov.l r1, @-r15 + mov #0, r4 + jmp @r2 + nop + +.align 2 +L1: .long __dynlink@PLT-(2b-.) diff -Nur musl-0.9.15/src/ldso/x32/dlsym.s musl-git/src/ldso/x32/dlsym.s --- musl-0.9.15/src/ldso/x32/dlsym.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/ldso/x32/dlsym.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,6 @@ +.text +.global dlsym +.type dlsym,@function +dlsym: + mov (%rsp),%rdx + jmp __dlsym diff -Nur musl-0.9.15/src/ldso/x32/start.s musl-git/src/ldso/x32/start.s --- musl-0.9.15/src/ldso/x32/start.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/ldso/x32/start.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,24 @@ +.text +.global _start +_start: + mov (%rsp),%rdi /* move argc into 1st argument slot */ + lea 4(%rsp),%rsi /* move argv into 2nd argument slot */ + call __dynlink + /* in case the dynlinker was called directly, it sets the "consumed" + argv values to -1. so we must loop over the array as long as -1 + is in the top argv slot, decrement argc, and then set the stackpointer + to the new argc as well as argc's new value. + as the x32 abi has longs in the argv array, we cannot use push/pop.*/ + movl (%rsp),%edi /* copy argc into edi */ + xor %rdx,%rdx /* we use rdx as an offset to the current argv member */ +1: dec %edi + addl $4, %edx + movl (%rsp, %rdx), %esi + cmp $-1,%esi + jz 1b + inc %edi + subl $4, %edx + lea (%rsp, %rdx), %rsp /* set rsp to new argv[-1] */ + movl %edi, (%rsp) /* write new argc there */ + xor %edx,%edx + jmp *%rax diff -Nur musl-0.9.15/src/linux/clone.c musl-git/src/linux/clone.c --- musl-0.9.15/src/linux/clone.c 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/linux/clone.c 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,19 @@ +#include +#include +#include "pthread_impl.h" +#include "syscall.h" + +int clone(int (*func)(void *), void *stack, int flags, void *arg, ...) +{ + va_list ap; + pid_t *ptid, *ctid; + void *tls; + + va_start(ap, arg); + ptid = va_arg(ap, pid_t *); + 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)); +} diff -Nur musl-0.9.15/src/linux/fallocate.c musl-git/src/linux/fallocate.c --- musl-0.9.15/src/linux/fallocate.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/linux/fallocate.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,9 +1,13 @@ #define _GNU_SOURCE #include #include "syscall.h" +#include "libc.h" int fallocate(int fd, int mode, off_t base, off_t len) { return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base), __SYSCALL_LL_E(len)); } + +#undef fallocate64 +LFS64(fallocate); diff -Nur musl-0.9.15/src/linux/inotify.c musl-git/src/linux/inotify.c --- musl-0.9.15/src/linux/inotify.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/linux/inotify.c 2014-03-10 16:52:06.000000000 +0100 @@ -15,7 +15,7 @@ return syscall(SYS_inotify_add_watch, fd, pathname, mask); } -int inotify_rm_watch(int fd, uint32_t wd) +int inotify_rm_watch(int fd, int wd) { return syscall(SYS_inotify_rm_watch, fd, wd); } diff -Nur musl-0.9.15/src/linux/remap_file_pages.c musl-git/src/linux/remap_file_pages.c --- musl-0.9.15/src/linux/remap_file_pages.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/linux/remap_file_pages.c 2014-03-10 16:52:06.000000000 +0100 @@ -2,7 +2,7 @@ #include #include "syscall.h" -int remap_file_pages(void *addr, size_t size, int prot, ssize_t pgoff, int flags) +int remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags) { return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags); } diff -Nur musl-0.9.15/src/linux/stime.c musl-git/src/linux/stime.c --- musl-0.9.15/src/linux/stime.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/linux/stime.c 2014-03-10 16:52:06.000000000 +0100 @@ -2,7 +2,7 @@ #include #include -int stime(time_t *t) +int stime(const time_t *t) { struct timeval tv = { .tv_sec = *t, .tv_usec = 0 }; return settimeofday(&tv, (void *)0); diff -Nur musl-0.9.15/src/linux/x32/sysinfo.s musl-git/src/linux/x32/sysinfo.s --- musl-0.9.15/src/linux/x32/sysinfo.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/linux/x32/sysinfo.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.text +.global sysinfo +.type sysinfo,@function +sysinfo: + jmp __x32_sysinfo diff -Nur musl-0.9.15/src/locale/wcsxfrm.c musl-git/src/locale/wcsxfrm.c --- musl-0.9.15/src/locale/wcsxfrm.c 2014-01-03 21:12:17.000000000 +0100 +++ musl-git/src/locale/wcsxfrm.c 2014-03-10 16:52:06.000000000 +0100 @@ -6,10 +6,12 @@ size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc) { size_t l = wcslen(src); - if (l >= n) { + if (l < n) { + wmemcpy(dest, src, l+1); + } else if (n) { wmemcpy(dest, src, n-1); dest[n-1] = 0; - } else wcscpy(dest, src); + } return l; } diff -Nur musl-0.9.15/src/math/i386/remainderf.s musl-git/src/math/i386/remainderf.s --- musl-0.9.15/src/math/i386/remainderf.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/math/i386/remainderf.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,6 +1,9 @@ .global remainderf .type remainderf,@function remainderf: +.weak dremf +.type dremf,@function +dremf: flds 8(%esp) flds 4(%esp) 1: fprem1 diff -Nur musl-0.9.15/src/math/i386/remainder.s musl-git/src/math/i386/remainder.s --- musl-0.9.15/src/math/i386/remainder.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/math/i386/remainder.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,6 +1,9 @@ .global remainder .type remainder,@function remainder: +.weak drem +.type drem,@function +drem: fldl 12(%esp) fldl 4(%esp) 1: fprem1 diff -Nur musl-0.9.15/src/math/x32/acosl.s musl-git/src/math/x32/acosl.s --- musl-0.9.15/src/math/x32/acosl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/acosl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,16 @@ +# see ../i386/acos.s + +.global acosl +.type acosl,@function +acosl: + fldt 8(%esp) +1: fld %st(0) + fld1 + fsub %st(0),%st(1) + fadd %st(2) + fmulp + fsqrt + fabs + fxch %st(1) + fpatan + ret diff -Nur musl-0.9.15/src/math/x32/asinl.s musl-git/src/math/x32/asinl.s --- musl-0.9.15/src/math/x32/asinl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/asinl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,12 @@ +.global asinl +.type asinl,@function +asinl: + fldt 8(%esp) +1: fld %st(0) + fld1 + fsub %st(0),%st(1) + fadd %st(2) + fmulp + fsqrt + fpatan + ret diff -Nur musl-0.9.15/src/math/x32/atan2l.s musl-git/src/math/x32/atan2l.s --- musl-0.9.15/src/math/x32/atan2l.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/atan2l.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global atan2l +.type atan2l,@function +atan2l: + fldt 8(%esp) + fldt 24(%esp) + fpatan + ret diff -Nur musl-0.9.15/src/math/x32/atanl.s musl-git/src/math/x32/atanl.s --- musl-0.9.15/src/math/x32/atanl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/atanl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global atanl +.type atanl,@function +atanl: + fldt 8(%esp) + fld1 + fpatan + ret diff -Nur musl-0.9.15/src/math/x32/ceill.s musl-git/src/math/x32/ceill.s --- musl-0.9.15/src/math/x32/ceill.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/ceill.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +# see floorl.s diff -Nur musl-0.9.15/src/math/x32/exp2l.s musl-git/src/math/x32/exp2l.s --- musl-0.9.15/src/math/x32/exp2l.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/exp2l.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,90 @@ +.global expm1l +.type expm1l,@function +expm1l: + fldt 8(%esp) + fldl2e + fmulp + movl $0xc2820000,-4(%esp) + flds -4(%esp) + fucomp %st(1) + fnstsw %ax + sahf + fld1 + jb 1f + # x*log2e <= -65, return -1 without underflow + fstp %st(1) + fchs + ret +1: fld %st(1) + fabs + fucom %st(1) + fnstsw %ax + fstp %st(0) + fstp %st(0) + sahf + ja 1f + f2xm1 + ret +1: push %rax + call 1f + pop %rax + fld1 + fsubrp + ret + +.global exp2l +.type exp2l,@function +exp2l: + fldt 8(%esp) +1: fld %st(0) + sub $16,%esp + fstpt (%esp) + mov 8(%esp),%ax + and $0x7fff,%ax + cmp $0x3fff+13,%ax + jb 4f # |x| < 8192 + cmp $0x3fff+15,%ax + jae 3f # |x| >= 32768 + fsts (%esp) + cmpl $0xc67ff800,(%esp) + jb 2f # x > -16382 + movl $0x5f000000,(%esp) + flds (%esp) # 0x1p63 + fld %st(1) + fsub %st(1) + faddp + fucomp %st(1) + fnstsw + sahf + je 2f # x - 0x1p63 + 0x1p63 == x + movl $1,(%esp) + flds (%esp) # 0x1p-149 + fdiv %st(1) + fstps (%esp) # raise underflow +2: fld1 + fld %st(1) + frndint + fxch %st(2) + fsub %st(2) # st(0)=x-rint(x), st(1)=1, st(2)=rint(x) + f2xm1 + faddp # 2^(x-rint(x)) +1: fscale + fstp %st(1) + add $16,%esp + ret +3: xor %eax,%eax +4: cmp $0x3fff-64,%ax + fld1 + jb 1b # |x| < 0x1p-64 + fstpt (%esp) + fistl 8(%esp) + fildl 8(%esp) + fsubrp %st(1) + addl $0x3fff,8(%esp) + f2xm1 + fld1 + faddp # 2^(x-rint(x)) + fldt (%esp) # 2^rint(x) + fmulp + add $16,%esp + ret diff -Nur musl-0.9.15/src/math/x32/expl.s musl-git/src/math/x32/expl.s --- musl-0.9.15/src/math/x32/expl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/expl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,101 @@ +# exp(x) = 2^hi + 2^hi (2^lo - 1) +# where hi+lo = log2e*x with 128bit precision +# exact log2e*x calculation depends on nearest rounding mode +# using the exact multiplication method of Dekker and Veltkamp + +.global expl +.type expl,@function +expl: + fldt 8(%esp) + + # interesting case: 0x1p-32 <= |x| < 16384 + # check if (exponent|0x8000) is in [0xbfff-32, 0xbfff+13] + mov 16(%esp), %ax + or $0x8000, %ax + sub $0xbfdf, %ax + cmp $45, %ax + jbe 2f + test %ax, %ax + fld1 + js 1f + # if |x|>=0x1p14 or nan return 2^trunc(x) + fscale + fstp %st(1) + ret + # if |x|<0x1p-32 return 1+x +1: faddp + ret + + # should be 0x1.71547652b82fe178p0L == 0x3fff b8aa3b29 5c17f0bc + # it will be wrong on non-nearest rounding mode +2: fldl2e + sub $48, %esp + # hi = log2e_hi*x + # 2^hi = exp2l(hi) + fmul %st(1),%st + fld %st(0) + fstpt (%esp) + fstpt 16(%esp) + fstpt 32(%esp) + call exp2l + # if 2^hi == inf return 2^hi + fld %st(0) + fstpt (%esp) + cmpw $0x7fff, 8(%esp) + je 1f + fldt 32(%esp) + fldt 16(%esp) + # fpu stack: 2^hi x hi + # exact mult: x*log2e + fld %st(1) + # c = 0x1p32+1 + movq $0x41f0000000100000,%rax + pushq %rax + fldl (%esp) + # xh = x - c*x + c*x + # xl = x - xh + fmulp + fld %st(2) + fsub %st(1), %st + faddp + fld %st(2) + fsub %st(1), %st + # yh = log2e_hi - c*log2e_hi + c*log2e_hi + movq $0x3ff7154765200000,%rax + pushq %rax + fldl (%esp) + # fpu stack: 2^hi x hi xh xl yh + # lo = hi - xh*yh + xl*yh + fld %st(2) + fmul %st(1), %st + fsubp %st, %st(4) + fmul %st(1), %st + faddp %st, %st(3) + # yl = log2e_hi - yh + movq $0x3de705fc2f000000,%rax + pushq %rax + fldl (%esp) + # fpu stack: 2^hi x lo xh xl yl + # lo += xh*yl + xl*yl + fmul %st, %st(2) + fmulp %st, %st(1) + fxch %st(2) + faddp + faddp + # log2e_lo + movq $0xbfbe,%rax + pushq %rax + movq $0x82f0025f2dc582ee,%rax + pushq %rax + fldt (%esp) + add $40,%esp + # fpu stack: 2^hi x lo log2e_lo + # lo += log2e_lo*x + # return 2^hi + 2^hi (2^lo - 1) + fmulp %st, %st(2) + faddp + f2xm1 + fmul %st(1), %st + faddp +1: add $48, %esp + ret diff -Nur musl-0.9.15/src/math/x32/expm1l.s musl-git/src/math/x32/expm1l.s --- musl-0.9.15/src/math/x32/expm1l.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/expm1l.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +# see exp2l.s diff -Nur musl-0.9.15/src/math/x32/fabsf.s musl-git/src/math/x32/fabsf.s --- musl-0.9.15/src/math/x32/fabsf.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/fabsf.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global fabsf +.type fabsf,@function +fabsf: + mov $0x7fffffff,%eax + movq %rax,%xmm1 + andps %xmm1,%xmm0 + ret diff -Nur musl-0.9.15/src/math/x32/fabsl.s musl-git/src/math/x32/fabsl.s --- musl-0.9.15/src/math/x32/fabsl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/fabsl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,6 @@ +.global fabsl +.type fabsl,@function +fabsl: + fldt 8(%esp) + fabs + ret diff -Nur musl-0.9.15/src/math/x32/fabs.s musl-git/src/math/x32/fabs.s --- musl-0.9.15/src/math/x32/fabs.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/fabs.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,9 @@ +.global fabs +.type fabs,@function +fabs: + xor %eax,%eax + dec %rax + shr %rax + movq %rax,%xmm1 + andpd %xmm1,%xmm0 + ret diff -Nur musl-0.9.15/src/math/x32/floorl.s musl-git/src/math/x32/floorl.s --- musl-0.9.15/src/math/x32/floorl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/floorl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,27 @@ +.global floorl +.type floorl,@function +floorl: + fldt 8(%esp) +1: mov $0x7,%al +1: fstcw 8(%esp) + mov 9(%esp),%ah + mov %al,9(%esp) + fldcw 8(%esp) + frndint + mov %ah,9(%esp) + fldcw 8(%esp) + ret + +.global ceill +.type ceill,@function +ceill: + fldt 8(%esp) + mov $0xb,%al + jmp 1b + +.global truncl +.type truncl,@function +truncl: + fldt 8(%esp) + mov $0xf,%al + jmp 1b diff -Nur musl-0.9.15/src/math/x32/fmodl.s musl-git/src/math/x32/fmodl.s --- musl-0.9.15/src/math/x32/fmodl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/fmodl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,11 @@ +.global fmodl +.type fmodl,@function +fmodl: + fldt 24(%esp) + fldt 8(%esp) +1: fprem + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff -Nur musl-0.9.15/src/math/x32/llrintf.s musl-git/src/math/x32/llrintf.s --- musl-0.9.15/src/math/x32/llrintf.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/llrintf.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global llrintf +.type llrintf,@function +llrintf: + cvtss2si %xmm0,%rax + ret diff -Nur musl-0.9.15/src/math/x32/llrintl.s musl-git/src/math/x32/llrintl.s --- musl-0.9.15/src/math/x32/llrintl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/llrintl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global llrintl +.type llrintl,@function +llrintl: + fldt 8(%esp) + fistpll 8(%esp) + mov 8(%esp),%rax + ret diff -Nur musl-0.9.15/src/math/x32/llrint.s musl-git/src/math/x32/llrint.s --- musl-0.9.15/src/math/x32/llrint.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/llrint.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global llrint +.type llrint,@function +llrint: + cvtsd2si %xmm0,%rax + ret diff -Nur musl-0.9.15/src/math/x32/log10l.s musl-git/src/math/x32/log10l.s --- musl-0.9.15/src/math/x32/log10l.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/log10l.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global log10l +.type log10l,@function +log10l: + fldlg2 + fldt 8(%esp) + fyl2x + ret diff -Nur musl-0.9.15/src/math/x32/log1pl.s musl-git/src/math/x32/log1pl.s --- musl-0.9.15/src/math/x32/log1pl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/log1pl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,15 @@ +.global log1pl +.type log1pl,@function +log1pl: + mov 14(%esp),%eax + fldln2 + and $0x7fffffff,%eax + fldt 8(%esp) + cmp $0x3ffd9400,%eax + ja 1f + fyl2xp1 + ret +1: fld1 + faddp + fyl2x + ret diff -Nur musl-0.9.15/src/math/x32/log2l.s musl-git/src/math/x32/log2l.s --- musl-0.9.15/src/math/x32/log2l.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/log2l.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global log2l +.type log2l,@function +log2l: + fld1 + fldt 8(%esp) + fyl2x + ret diff -Nur musl-0.9.15/src/math/x32/logl.s musl-git/src/math/x32/logl.s --- musl-0.9.15/src/math/x32/logl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/logl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global logl +.type logl,@function +logl: + fldln2 + fldt 8(%esp) + fyl2x + ret diff -Nur musl-0.9.15/src/math/x32/lrintf.s musl-git/src/math/x32/lrintf.s --- musl-0.9.15/src/math/x32/lrintf.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/lrintf.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global lrintf +.type lrintf,@function +lrintf: + cvtss2si %xmm0,%rax + ret diff -Nur musl-0.9.15/src/math/x32/lrintl.s musl-git/src/math/x32/lrintl.s --- musl-0.9.15/src/math/x32/lrintl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/lrintl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,7 @@ +.global lrintl +.type lrintl,@function +lrintl: + fldt 8(%esp) + fistpll 8(%esp) + mov 8(%esp),%rax + ret diff -Nur musl-0.9.15/src/math/x32/lrint.s musl-git/src/math/x32/lrint.s --- musl-0.9.15/src/math/x32/lrint.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/lrint.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global lrint +.type lrint,@function +lrint: + cvtsd2si %xmm0,%rax + ret diff -Nur musl-0.9.15/src/math/x32/remainderl.s musl-git/src/math/x32/remainderl.s --- musl-0.9.15/src/math/x32/remainderl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/remainderl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,11 @@ +.global remainderl +.type remainderl,@function +remainderl: + fldt 24(%esp) + fldt 8(%esp) +1: fprem1 + fstsw %ax + sahf + jp 1b + fstp %st(1) + ret diff -Nur musl-0.9.15/src/math/x32/rintl.s musl-git/src/math/x32/rintl.s --- musl-0.9.15/src/math/x32/rintl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/rintl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,6 @@ +.global rintl +.type rintl,@function +rintl: + fldt 8(%esp) + frndint + ret diff -Nur musl-0.9.15/src/math/x32/sqrtf.s musl-git/src/math/x32/sqrtf.s --- musl-0.9.15/src/math/x32/sqrtf.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/sqrtf.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,4 @@ +.global sqrtf +.type sqrtf,@function +sqrtf: sqrtss %xmm0, %xmm0 + ret diff -Nur musl-0.9.15/src/math/x32/sqrtl.s musl-git/src/math/x32/sqrtl.s --- musl-0.9.15/src/math/x32/sqrtl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/sqrtl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global sqrtl +.type sqrtl,@function +sqrtl: fldt 8(%esp) + fsqrt + ret diff -Nur musl-0.9.15/src/math/x32/sqrt.s musl-git/src/math/x32/sqrt.s --- musl-0.9.15/src/math/x32/sqrt.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/sqrt.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,4 @@ +.global sqrt +.type sqrt,@function +sqrt: sqrtsd %xmm0, %xmm0 + ret diff -Nur musl-0.9.15/src/math/x32/truncl.s musl-git/src/math/x32/truncl.s --- musl-0.9.15/src/math/x32/truncl.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/math/x32/truncl.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +# see floorl.s diff -Nur musl-0.9.15/src/misc/nftw.c musl-git/src/misc/nftw.c --- musl-0.9.15/src/misc/nftw.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/misc/nftw.c 2014-03-10 16:52:06.000000000 +0100 @@ -46,8 +46,7 @@ type = FTW_F; } - if ((flags & FTW_MOUNT) && h - && (st.st_dev != h->dev || st.st_ino != h->ino)) + if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev) return 0; new.chain = h; diff -Nur musl-0.9.15/src/network/accept4.c musl-git/src/network/accept4.c --- musl-0.9.15/src/network/accept4.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/network/accept4.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,9 +1,20 @@ #define _GNU_SOURCE #include +#include +#include #include "syscall.h" #include "libc.h" int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int flg) { - return socketcall_cp(accept4, fd, addr, len, flg, 0, 0); + if (!flg) return accept(fd, addr, len); + int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0); + if (ret>=0 || (errno != ENOSYS && errno != EINVAL)) return ret; + ret = accept(fd, addr, len); + if (ret<0) return ret; + if (flg & SOCK_CLOEXEC) + __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC); + if (flg & SOCK_NONBLOCK) + __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK); + return ret; } diff -Nur musl-0.9.15/src/network/inet_legacy.c musl-git/src/network/inet_legacy.c --- musl-0.9.15/src/network/inet_legacy.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/network/inet_legacy.c 2014-03-10 16:52:06.000000000 +0100 @@ -16,9 +16,8 @@ return 1; } -struct in_addr inet_makeaddr(int net, int host) +struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) { - uint32_t n = net, h = host; if (n < 256) h |= n<<24; else if (n < 65536) h |= n<<16; else h |= n<<8; diff -Nur musl-0.9.15/src/network/proto.c musl-git/src/network/proto.c --- musl-0.9.15/src/network/proto.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/network/proto.c 2014-03-10 16:52:06.000000000 +0100 @@ -4,7 +4,7 @@ /* do we really need all these?? */ static int idx; -static const unsigned char protos[][6] = { +static const unsigned char protos[][8] = { "\000ip", "\001icmp", "\002igmp", @@ -13,7 +13,9 @@ "\014pup", "\021udp", "\026idp", - "\377raw" + "\051ipv6", + "\072icmpv6", + "\377raw", "\0\0" }; diff -Nur musl-0.9.15/src/prng/random.c musl-git/src/prng/random.c --- musl-0.9.15/src/prng/random.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/prng/random.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,10 +1,3 @@ -/* - * random.c - Copyright © 2011 Szabolcs Nagy - * Permission to use, copy, modify, and/or distribute this code - * for any purpose with or without fee is hereby granted. - * There is no warranty. -*/ - #include #include #include "libc.h" @@ -12,11 +5,7 @@ /* this code uses the same lagged fibonacci generator as the original bsd random implementation except for the seeding - -different seeds produce different sequences with long period -(other libcs seed the state with a park-miller generator -when seed=0 some fail to produce good random sequence -others produce the same sequence as another seed) +which was broken in the original */ static uint32_t init[] = { @@ -98,6 +87,7 @@ n = 63; x = (uint32_t*)state + 1; __srandom(seed); + savestate(); UNLOCK(lock); return old; } diff -Nur musl-0.9.15/src/process/posix_spawn.c musl-git/src/process/posix_spawn.c --- musl-0.9.15/src/process/posix_spawn.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/process/posix_spawn.c 2014-03-10 16:52:06.000000000 +0100 @@ -166,7 +166,7 @@ close(args.p[0]); - if (!ec) *res = pid; + if (!ec && res) *res = pid; pthread_sigmask(SIG_SETMASK, &args.oldmask, 0); pthread_setcancelstate(cs, 0); diff -Nur musl-0.9.15/src/process/x32/vfork.s musl-git/src/process/x32/vfork.s --- musl-0.9.15/src/process/x32/vfork.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/process/x32/vfork.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,12 @@ +.global __vfork +.weak vfork +.type __vfork,@function +.type vfork,@function +__vfork: +vfork: + pop %rdx + mov $0x4000003a,%eax /* SYS_vfork */ + syscall + push %rdx + mov %rax,%rdi + jmp __syscall_ret diff -Nur musl-0.9.15/src/setjmp/mipsel-sf/longjmp.sub musl-git/src/setjmp/mipsel-sf/longjmp.sub --- musl-0.9.15/src/setjmp/mipsel-sf/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mipsel-sf/longjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../mips-sf/longjmp.s diff -Nur musl-0.9.15/src/setjmp/mipsel-sf/setjmp.sub musl-git/src/setjmp/mipsel-sf/setjmp.sub --- musl-0.9.15/src/setjmp/mipsel-sf/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mipsel-sf/setjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../mips-sf/setjmp.s diff -Nur musl-0.9.15/src/setjmp/mips-sf/longjmp.s musl-git/src/setjmp/mips-sf/longjmp.s --- musl-0.9.15/src/setjmp/mips-sf/longjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mips-sf/longjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,25 @@ +.set noreorder + +.global _longjmp +.global longjmp +.type _longjmp,@function +.type longjmp,@function +_longjmp: +longjmp: + move $2, $5 + bne $2, $0, 1f + nop + addu $2, $2, 1 +1: lw $ra, 0($4) + lw $sp, 4($4) + lw $16, 8($4) + lw $17, 12($4) + lw $18, 16($4) + lw $19, 20($4) + lw $20, 24($4) + lw $21, 28($4) + lw $22, 32($4) + lw $23, 36($4) + lw $30, 40($4) + jr $ra + lw $28, 44($4) diff -Nur musl-0.9.15/src/setjmp/mips-sf/longjmp.sub musl-git/src/setjmp/mips-sf/longjmp.sub --- musl-0.9.15/src/setjmp/mips-sf/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mips-sf/longjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +longjmp.s diff -Nur musl-0.9.15/src/setjmp/mips-sf/setjmp.s musl-git/src/setjmp/mips-sf/setjmp.s --- musl-0.9.15/src/setjmp/mips-sf/setjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mips-sf/setjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,25 @@ +.set noreorder + +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp,@function +.type _setjmp,@function +.type setjmp,@function +__setjmp: +_setjmp: +setjmp: + sw $ra, 0($4) + sw $sp, 4($4) + sw $16, 8($4) + sw $17, 12($4) + sw $18, 16($4) + sw $19, 20($4) + sw $20, 24($4) + sw $21, 28($4) + sw $22, 32($4) + sw $23, 36($4) + sw $30, 40($4) + sw $28, 44($4) + jr $ra + li $2, 0 diff -Nur musl-0.9.15/src/setjmp/mips-sf/setjmp.sub musl-git/src/setjmp/mips-sf/setjmp.sub --- musl-0.9.15/src/setjmp/mips-sf/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/mips-sf/setjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +setjmp.s diff -Nur musl-0.9.15/src/setjmp/sh/longjmp.s musl-git/src/setjmp/sh/longjmp.s --- musl-0.9.15/src/setjmp/sh/longjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh/longjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,26 @@ +.global _longjmp +.global longjmp +.type _longjmp, @function +.type longjmp, @function +_longjmp: +longjmp: + mov.l @r4+, r8 + mov.l @r4+, r9 + mov.l @r4+, r10 + mov.l @r4+, r11 + mov.l @r4+, r12 + mov.l @r4+, r13 + mov.l @r4+, r14 + mov.l @r4+, r15 + lds.l @r4+, pr + fmov.s @r4+, fr12 + fmov.s @r4+, fr13 + fmov.s @r4+, fr14 + fmov.s @r4+, fr15 + + tst r5, r5 + movt r0 + add r5, r0 + + rts + nop diff -Nur musl-0.9.15/src/setjmp/sh/setjmp.s musl-git/src/setjmp/sh/setjmp.s --- musl-0.9.15/src/setjmp/sh/setjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh/setjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,25 @@ +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp, @function +.type _setjmp, @function +.type setjmp, @function +__setjmp: +_setjmp: +setjmp: + add #52, r4 + fmov.s fr15, @-r4 + fmov.s fr14, @-r4 + fmov.s fr13, @-r4 + fmov.s fr12, @-r4 + sts.l pr, @-r4 + mov.l r15 @-r4 + mov.l r14, @-r4 + mov.l r13, @-r4 + mov.l r12, @-r4 + mov.l r11, @-r4 + mov.l r10, @-r4 + mov.l r9, @-r4 + mov.l r8, @-r4 + rts + mov #0, r0 diff -Nur musl-0.9.15/src/setjmp/sheb-nofpu/longjmp.sub musl-git/src/setjmp/sheb-nofpu/longjmp.sub --- musl-0.9.15/src/setjmp/sheb-nofpu/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sheb-nofpu/longjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../sh-nofpu/longjmp.s diff -Nur musl-0.9.15/src/setjmp/sheb-nofpu/setjmp.sub musl-git/src/setjmp/sheb-nofpu/setjmp.sub --- musl-0.9.15/src/setjmp/sheb-nofpu/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sheb-nofpu/setjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +../sh-nofpu/setjmp.s diff -Nur musl-0.9.15/src/setjmp/sh-nofpu/longjmp.s musl-git/src/setjmp/sh-nofpu/longjmp.s --- musl-0.9.15/src/setjmp/sh-nofpu/longjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh-nofpu/longjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +.global _longjmp +.global longjmp +.type _longjmp, @function +.type longjmp, @function +_longjmp: +longjmp: + mov.l @r4+, r8 + mov.l @r4+, r9 + mov.l @r4+, r10 + mov.l @r4+, r11 + mov.l @r4+, r12 + mov.l @r4+, r13 + mov.l @r4+, r14 + mov.l @r4+, r15 + lds.l @r4+, pr + + tst r5, r5 + movt r0 + add r5, r0 + + rts + nop diff -Nur musl-0.9.15/src/setjmp/sh-nofpu/longjmp.sub musl-git/src/setjmp/sh-nofpu/longjmp.sub --- musl-0.9.15/src/setjmp/sh-nofpu/longjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh-nofpu/longjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +longjmp.s diff -Nur musl-0.9.15/src/setjmp/sh-nofpu/setjmp.s musl-git/src/setjmp/sh-nofpu/setjmp.s --- musl-0.9.15/src/setjmp/sh-nofpu/setjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh-nofpu/setjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,21 @@ +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp, @function +.type _setjmp, @function +.type setjmp, @function +__setjmp: +_setjmp: +setjmp: + add #36, r4 + sts.l pr, @-r4 + mov.l r15 @-r4 + mov.l r14, @-r4 + mov.l r13, @-r4 + mov.l r12, @-r4 + mov.l r11, @-r4 + mov.l r10, @-r4 + mov.l r9, @-r4 + mov.l r8, @-r4 + rts + mov #0, r0 diff -Nur musl-0.9.15/src/setjmp/sh-nofpu/setjmp.sub musl-git/src/setjmp/sh-nofpu/setjmp.sub --- musl-0.9.15/src/setjmp/sh-nofpu/setjmp.sub 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/sh-nofpu/setjmp.sub 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1 @@ +setjmp.s diff -Nur musl-0.9.15/src/setjmp/x32/longjmp.s musl-git/src/setjmp/x32/longjmp.s --- musl-0.9.15/src/setjmp/x32/longjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/x32/longjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ +.global _longjmp +.global longjmp +.type _longjmp,@function +.type longjmp,@function +_longjmp: +longjmp: + mov %rsi,%rax /* val will be longjmp return */ + test %rax,%rax + jnz 1f + inc %rax /* if val==0, val=1 per longjmp semantics */ +1: + mov (%rdi),%rbx /* rdi is the jmp_buf, restore regs from it */ + mov 8(%rdi),%rbp + mov 16(%rdi),%r12 + mov 24(%rdi),%r13 + mov 32(%rdi),%r14 + mov 40(%rdi),%r15 + mov 48(%rdi),%rdx /* this ends up being the stack pointer */ + mov %rdx,%rsp + mov 56(%rdi),%rdx /* this is the instruction pointer */ + jmp *%rdx /* goto saved address without altering rsp */ diff -Nur musl-0.9.15/src/setjmp/x32/setjmp.s musl-git/src/setjmp/x32/setjmp.s --- musl-0.9.15/src/setjmp/x32/setjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/setjmp/x32/setjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp,@function +.type _setjmp,@function +.type setjmp,@function +__setjmp: +_setjmp: +setjmp: + mov %rbx,(%rdi) /* rdi is jmp_buf, move registers onto it */ + mov %rbp,8(%rdi) + mov %r12,16(%rdi) + mov %r13,24(%rdi) + mov %r14,32(%rdi) + mov %r15,40(%rdi) + lea 8(%rsp),%rdx /* this is our rsp WITHOUT current ret addr */ + mov %rdx,48(%rdi) + mov (%rsp),%rdx /* save return addr ptr for new rip */ + mov %rdx,56(%rdi) + xor %rax,%rax /* always return 0 */ + ret diff -Nur musl-0.9.15/src/signal/sh/restore.s musl-git/src/signal/sh/restore.s --- musl-0.9.15/src/signal/sh/restore.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/signal/sh/restore.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,24 @@ +.global __restore +.type __restore, @function +__restore: + mov #119, r3 !__NR_sigreturn + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + +.global __restore_rt +.type __restore_rt, @function +__restore_rt: + mov #100, r3 !__NR_rt_sigreturn + add #73, r3 + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff -Nur musl-0.9.15/src/signal/sh/sigsetjmp.s musl-git/src/signal/sh/sigsetjmp.s --- musl-0.9.15/src/signal/sh/sigsetjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/signal/sh/sigsetjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,27 @@ +.global sigsetjmp +.type sigsetjmp, @function +sigsetjmp: + mov.l r5, @(36,r4) + tst r5, r5 + bf 2f + + sts.l pr, @-r15 + mov.l r4, @-r15 + mov r4, r6 + add #40, r6 + mov #0, r5 + mov #2, r4 + mov.l L1, r0 + bsrf r0 + nop +1: mov.l @r15+, r4 + lds.l @r15+, pr + +2: mov.l L2, r0 + braf r0 + nop +3: + +.align 2 +L1: .long pthread_sigmask@PLT-(1b-.) +L2: .long setjmp@PLT-(3b-.) diff -Nur musl-0.9.15/src/signal/sigandset.c musl-git/src/signal/sigandset.c --- musl-0.9.15/src/signal/sigandset.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/signal/sigandset.c 2014-03-10 16:52:06.000000000 +0100 @@ -3,7 +3,7 @@ #define SST_SIZE (_NSIG/8/sizeof(long)) -int sigandset(sigset_t *dest, sigset_t *left, sigset_t *right) +int sigandset(sigset_t *dest, const sigset_t *left, const sigset_t *right) { unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; for(; i < SST_SIZE; i++) d[i] = l[i] & r[i]; diff -Nur musl-0.9.15/src/signal/sigorset.c musl-git/src/signal/sigorset.c --- musl-0.9.15/src/signal/sigorset.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/signal/sigorset.c 2014-03-10 16:52:06.000000000 +0100 @@ -3,7 +3,7 @@ #define SST_SIZE (_NSIG/8/sizeof(long)) -int sigorset(sigset_t *dest, sigset_t *left, sigset_t *right) +int sigorset(sigset_t *dest, const sigset_t *left, const sigset_t *right) { unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right; for(; i < SST_SIZE; i++) d[i] = l[i] | r[i]; diff -Nur musl-0.9.15/src/signal/x32/restore.s musl-git/src/signal/x32/restore.s --- musl-0.9.15/src/signal/x32/restore.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/signal/x32/restore.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,8 @@ +.global __restore_rt +.global __restore +.type __restore_rt,@function +.type __restore,@function +__restore_rt: +__restore: + movl $0x40000201, %eax /* SYS_rt_sigreturn */ + syscall diff -Nur musl-0.9.15/src/signal/x32/sigsetjmp.s musl-git/src/signal/x32/sigsetjmp.s --- musl-0.9.15/src/signal/x32/sigsetjmp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/signal/x32/sigsetjmp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,14 @@ +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ +.global sigsetjmp +.type sigsetjmp,@function +sigsetjmp: + andl %esi,%esi + movq %rsi,64(%rdi) + jz 1f + pushq %rdi + leaq 72(%rdi),%rdx + xorl %esi,%esi + movl $2,%edi + call sigprocmask + popq %rdi +1: jmp setjmp diff -Nur musl-0.9.15/src/stdio/__fdopen.c musl-git/src/stdio/__fdopen.c --- musl-0.9.15/src/stdio/__fdopen.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/stdio/__fdopen.c 2014-03-10 16:52:06.000000000 +0100 @@ -32,7 +32,9 @@ /* Set append mode on fd if opened for append */ if (*mode == 'a') { int flags = __syscall(SYS_fcntl, fd, F_GETFL); - __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND); + if (!(flags & O_APPEND)) + __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND); + f->flags |= F_APP; } f->fd = fd; diff -Nur musl-0.9.15/src/stdio/ftell.c musl-git/src/stdio/ftell.c --- musl-0.9.15/src/stdio/ftell.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/stdio/ftell.c 2014-03-10 16:52:06.000000000 +0100 @@ -4,7 +4,9 @@ off_t __ftello_unlocked(FILE *f) { - off_t pos = f->seek(f, 0, SEEK_CUR); + off_t pos = f->seek(f, 0, + (f->flags & F_APP) && f->wpos > f->wbase + ? SEEK_END : SEEK_CUR); if (pos < 0) return pos; /* Adjust for data in buffer. */ diff -Nur musl-0.9.15/src/stdio/vfprintf.c musl-git/src/stdio/vfprintf.c --- musl-0.9.15/src/stdio/vfprintf.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/stdio/vfprintf.c 2014-03-10 16:52:06.000000000 +0100 @@ -207,7 +207,8 @@ static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t) { - uint32_t big[(LDBL_MAX_EXP+LDBL_MANT_DIG)/9+1]; + uint32_t big[(LDBL_MANT_DIG+28)/29 + 1 // mantissa expansion + + (LDBL_MAX_EXP+LDBL_MANT_DIG+28+8)/9]; // exponent expansion uint32_t *a, *d, *r, *z; int e2=0, e, i, j, l; char buf[9+LDBL_MANT_DIG/4], *s; @@ -313,7 +314,7 @@ } while (e2<0) { uint32_t carry=0, *b; - int sh=MIN(9,-e2); + int sh=MIN(9,-e2), need=1+(p+LDBL_MANT_DIG/3+8)/9; for (d=a; d>sh) + carry; @@ -323,7 +324,7 @@ if (carry) *z++ = carry; /* Avoid (slow!) computation past requested precision */ b = (t|32)=='f' ? r : a; - if (z-b > 2+p/9) z = b+2+p/9; + if (z-b > need) z = b+need; e2+=sh; } diff -Nur musl-0.9.15/src/stdio/vfscanf.c musl-git/src/stdio/vfscanf.c --- musl-0.9.15/src/stdio/vfscanf.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/stdio/vfscanf.c 2014-03-10 16:52:06.000000000 +0100 @@ -328,3 +328,5 @@ FUNLOCK(f); return matches; } + +weak_alias(vfscanf,__isoc99_vfscanf); diff -Nur musl-0.9.15/src/thread/arm/clone.s musl-git/src/thread/arm/clone.s --- musl-0.9.15/src/thread/arm/clone.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/arm/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,10 +1,7 @@ .text .global __clone -.weak clone .type __clone,%function -.type clone,%function __clone: -clone: stmfd sp!,{r4,r5,r6,r7} mov r7,#120 mov r6,r3 diff -Nur musl-0.9.15/src/thread/cancel_dummy.c musl-git/src/thread/cancel_dummy.c --- musl-0.9.15/src/thread/cancel_dummy.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/cancel_dummy.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,6 +1,9 @@ #include "pthread_impl.h" +#include "syscall.h" -static long sccp(long nr, long u, long v, long w, long x, long y, long z) +static long sccp(syscall_arg_t nr, + syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, + syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) { return (__syscall)(nr, u, v, w, x, y, z); } diff -Nur musl-0.9.15/src/thread/cancel_impl.c musl-git/src/thread/cancel_impl.c --- musl-0.9.15/src/thread/cancel_impl.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/cancel_impl.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,4 +1,5 @@ #include "pthread_impl.h" +#include "syscall.h" void __cancel() { @@ -8,9 +9,13 @@ pthread_exit(PTHREAD_CANCELED); } -long __syscall_cp_asm(volatile void *, long, long, long, long, long, long, long); +long __syscall_cp_asm(volatile void *, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t, + syscall_arg_t, syscall_arg_t, syscall_arg_t); -long (__syscall_cp)(long nr, long u, long v, long w, long x, long y, long z) +long (__syscall_cp)(syscall_arg_t nr, + syscall_arg_t u, syscall_arg_t v, syscall_arg_t w, + syscall_arg_t x, syscall_arg_t y, syscall_arg_t z) { pthread_t self; long r; diff -Nur musl-0.9.15/src/thread/clone.c musl-git/src/thread/clone.c --- musl-0.9.15/src/thread/clone.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/clone.c 2014-03-10 16:52:06.000000000 +0100 @@ -1,10 +1,7 @@ #include -#include "libc.h" +#include "pthread_impl.h" int __clone(int (*func)(void *), void *stack, int flags, void *arg, ...) { - errno = ENOSYS; - return -1; + return -ENOSYS; } - -weak_alias(__clone, clone); diff -Nur musl-0.9.15/src/thread/i386/clone.s musl-git/src/thread/i386/clone.s --- musl-0.9.15/src/thread/i386/clone.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/i386/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,10 +1,7 @@ .text .global __clone -.weak clone .type __clone,@function -.type clone,@function __clone: -clone: push %ebp mov %esp,%ebp push %ebx diff -Nur musl-0.9.15/src/thread/microblaze/clone.s musl-git/src/thread/microblaze/clone.s --- musl-0.9.15/src/thread/microblaze/clone.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/microblaze/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,14 +1,11 @@ .global __clone -.weak clone .type __clone,@function -.type clone,@function # r5, r6, r7, r8, r9, r10, stack # fn, st, fl, ar, pt, tl, ct # fl, st, __, pt, ct, tl __clone: -clone: andi r6, r6, -16 addi r6, r6, -16 swi r5, r6, 0 @@ -23,7 +20,7 @@ beqi r3, 1f rtsd r15, 8 nop - + 1: lwi r3, r1, 0 lwi r5, r1, 4 brald r15, r3 diff -Nur musl-0.9.15/src/thread/sh/clone.s musl-git/src/thread/sh/clone.s --- musl-0.9.15/src/thread/sh/clone.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/sh/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,47 @@ +.text +.global __clone +.type __clone, @function +__clone: +! incoming: fn stack flags arg ptid tls ctid +! r4 r5 r6 r7 @r15 @(4,r15) @(8,r15) + + mov #-16, r0 + and r0, r5 + + mov r4, r1 ! r1 = fn + mov r7, r2 ! r2 = arg + + mov #120, r3 ! r3 = __NR_clone + mov r6, r4 ! r4 = flags + !mov r5, r5 ! r5 = stack + mov.l @r15, r6 ! r6 = ptid + mov.l @(8,r15), r7 ! r7 = ctid + mov.l @(4,r15), r0 ! r0 = tls + trapa #21 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + cmp/eq #0, r0 + bt 1f + + ! we are the parent, return + rts + nop + +1: ! we are the child, call fn(arg) + jsr @r1 + mov r2, r4 + + mov #1, r3 ! __NR_exit + mov r0, r4 + trapa #17 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff -Nur musl-0.9.15/src/thread/sh/__set_thread_area.s musl-git/src/thread/sh/__set_thread_area.s --- musl-0.9.15/src/thread/sh/__set_thread_area.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/sh/__set_thread_area.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,5 @@ +.global __set_thread_area +.type __set_thread_area, @function +__set_thread_area: + rts + ldc r4, gbr diff -Nur musl-0.9.15/src/thread/sh/syscall_cp.s musl-git/src/thread/sh/syscall_cp.s --- musl-0.9.15/src/thread/sh/syscall_cp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/sh/syscall_cp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,39 @@ +.text +.global __syscall_cp_asm +.type __syscall_cp_asm, @function +__syscall_cp_asm: + +.global __cp_begin +__cp_begin: + mov.l @r4, r4 + tst r4, r4 + bt 2f + + mov.l L1, r0 + braf r0 + nop +1: + +.align 2 +L1: .long __cancel@PLT-(1b-.) + +2: mov r5, r3 + mov r6, r4 + mov r7, r5 + mov.l @r15, r6 + mov.l @(4,r15), r7 + mov.l @(8,r15), r0 + mov.l @(12,r15), r1 + trapa #22 + +.global __cp_end +__cp_end: + ! work around hardware bug + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + rts + nop diff -Nur musl-0.9.15/src/thread/sh/__unmapself.s musl-git/src/thread/sh/__unmapself.s --- musl-0.9.15/src/thread/sh/__unmapself.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/sh/__unmapself.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,22 @@ +.text +.global __unmapself +.type __unmapself, @function +__unmapself: + mov #91, r3 ! SYS_munmap + trapa #18 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + mov #1, r3 ! SYS_exit + mov #0, r4 + trapa #17 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff -Nur musl-0.9.15/src/thread/__wait.c musl-git/src/thread/__wait.c --- musl-0.9.15/src/thread/__wait.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/__wait.c 2014-03-10 16:52:06.000000000 +0100 @@ -10,6 +10,6 @@ } if (waiters) a_inc(waiters); while (*addr==val) - __syscall(SYS_futex, (long)addr, FUTEX_WAIT|priv, val, 0); + __syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0); if (waiters) a_dec(waiters); } diff -Nur musl-0.9.15/src/thread/x32/clone.s musl-git/src/thread/x32/clone.s --- musl-0.9.15/src/thread/x32/clone.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/x32/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,25 @@ +.text +.global __clone +.type __clone,@function +__clone: + movl $0x40000038,%eax /* SYS_clone */ + mov %rdi,%r11 + mov %rdx,%rdi + mov %r8,%rdx + mov %r9,%r8 + mov 8(%rsp),%r10 + mov %r11,%r9 + and $-16,%rsi + sub $8,%rsi + mov %rcx,(%rsi) + syscall + test %eax,%eax + jnz 1f + xor %ebp,%ebp + pop %rdi + call *%r9 + mov %eax,%edi + movl $0x4000003c,%eax /* SYS_exit */ + syscall + hlt +1: ret diff -Nur musl-0.9.15/src/thread/x32/__set_thread_area.s musl-git/src/thread/x32/__set_thread_area.s --- musl-0.9.15/src/thread/x32/__set_thread_area.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/x32/__set_thread_area.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,10 @@ +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ +.text +.global __set_thread_area +.type __set_thread_area,@function +__set_thread_area: + mov %rdi,%rsi /* shift for syscall */ + movl $0x1002,%edi /* SET_FS register */ + movl $0x4000009e,%eax /* set fs segment to */ + syscall /* arch_prctl(SET_FS, arg)*/ + ret diff -Nur musl-0.9.15/src/thread/x32/syscall_cp.s musl-git/src/thread/x32/syscall_cp.s --- musl-0.9.15/src/thread/x32/syscall_cp.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/x32/syscall_cp.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,23 @@ +.text +.global __syscall_cp_internal +.type __syscall_cp_internal,@function +__syscall_cp_internal: + +.global __cp_begin +__cp_begin: + mov (%rdi),%eax + test %eax,%eax + jnz __cancel + mov %rdi,%r11 + mov %rsi,%rax + mov %rdx,%rdi + mov %rcx,%rsi + mov %r8,%rdx + mov %r9,%r10 + mov 8(%rsp),%r8 + mov 16(%rsp),%r9 + mov %r11,8(%rsp) + syscall +.global __cp_end +__cp_end: + ret diff -Nur musl-0.9.15/src/thread/x32/__unmapself.s musl-git/src/thread/x32/__unmapself.s --- musl-0.9.15/src/thread/x32/__unmapself.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/thread/x32/__unmapself.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,10 @@ +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */ +.text +.global __unmapself +.type __unmapself,@function +__unmapself: + movl $0x4000000b,%eax /* SYS_munmap */ + syscall /* munmap(arg2,arg3) */ + xor %rdi,%rdi /* exit() args: always return success */ + movl $0x4000003c,%eax /* SYS_exit */ + syscall /* exit(0) */ diff -Nur musl-0.9.15/src/thread/x86_64/clone.s musl-git/src/thread/x86_64/clone.s --- musl-0.9.15/src/thread/x86_64/clone.s 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/thread/x86_64/clone.s 2014-03-10 16:52:06.000000000 +0100 @@ -1,10 +1,7 @@ .text .global __clone -.weak clone .type __clone,@function -.type clone,@function __clone: -clone: xor %eax,%eax mov $56,%al mov %rdi,%r11 diff -Nur musl-0.9.15/src/time/timer_delete.c musl-git/src/time/timer_delete.c --- musl-0.9.15/src/time/timer_delete.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/time/timer_delete.c 2014-03-10 16:52:06.000000000 +0100 @@ -10,5 +10,5 @@ __wake(&td->timer_id, 1, 1); return 0; } - return __syscall(SYS_timer_delete, (long)t); + return __syscall(SYS_timer_delete, t); } diff -Nur musl-0.9.15/src/time/timer_getoverrun.c musl-git/src/time/timer_getoverrun.c --- musl-0.9.15/src/time/timer_getoverrun.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/time/timer_getoverrun.c 2014-03-10 16:52:06.000000000 +0100 @@ -8,5 +8,5 @@ pthread_t td = (void *)((uintptr_t)t << 1); t = (void *)(uintptr_t)(td->timer_id & INT_MAX); } - return syscall(SYS_timer_getoverrun, (long)t); + return syscall(SYS_timer_getoverrun, t); } diff -Nur musl-0.9.15/src/time/timer_gettime.c musl-git/src/time/timer_gettime.c --- musl-0.9.15/src/time/timer_gettime.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/time/timer_gettime.c 2014-03-10 16:52:06.000000000 +0100 @@ -8,5 +8,5 @@ pthread_t td = (void *)((uintptr_t)t << 1); t = (void *)(uintptr_t)(td->timer_id & INT_MAX); } - return syscall(SYS_timer_gettime, (long)t, val); + return syscall(SYS_timer_gettime, t, val); } diff -Nur musl-0.9.15/src/time/timer_settime.c musl-git/src/time/timer_settime.c --- musl-0.9.15/src/time/timer_settime.c 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/src/time/timer_settime.c 2014-03-10 16:52:06.000000000 +0100 @@ -8,5 +8,5 @@ pthread_t td = (void *)((uintptr_t)t << 1); t = (void *)(uintptr_t)(td->timer_id & INT_MAX); } - return syscall(SYS_timer_settime, (long)t, flags, val, old); + return syscall(SYS_timer_settime, t, flags, val, old); } diff -Nur musl-0.9.15/src/unistd/sh/pipe.s musl-git/src/unistd/sh/pipe.s --- musl-0.9.15/src/unistd/sh/pipe.s 1970-01-01 01:00:00.000000000 +0100 +++ musl-git/src/unistd/sh/pipe.s 2014-03-10 16:52:06.000000000 +0100 @@ -0,0 +1,27 @@ +.global pipe +.type pipe, @function +pipe: + mov #42, r3 + trapa #17 + + ! work around hardware bug + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + cmp/pz r0 + bt 1f + + mov.l L1, r1 + braf r1 + mov r0, r4 + +1: mov.l r0, @(0,r4) + mov.l r1, @(4,r4) + rts + mov #0, r0 + +.align 2 +L1: .long __syscall_ret@PLT-(1b-.) diff -Nur musl-0.9.15/tools/install.sh musl-git/tools/install.sh --- musl-0.9.15/tools/install.sh 2014-01-03 21:12:18.000000000 +0100 +++ musl-git/tools/install.sh 2014-03-10 16:52:06.000000000 +0100 @@ -51,6 +51,7 @@ ln -s "$1" "$tmp" else cat < "$1" > "$tmp" +chmod "$mode" "$tmp" fi mv -f "$tmp" "$2" @@ -60,6 +61,4 @@ exit 1 } -test "$symlink" || chmod "$mode" "$2" - exit 0