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-01 08:58:13.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-01 08:58:13.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -0,0 +1,87 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.h>
+
+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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -0,0 +1,125 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.h>
+
+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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -0,0 +1,46 @@
+#include <stdint.h>
+#include <string.h>
+#include <elf.h>
+
+#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-01 08:58:14.000000000 +0100
@@ -0,0 +1,31 @@
+#include <sys/syscall.h>
+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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:13.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -44,42 +44,80 @@
 #define SOL_TCP 6
 #include <sys/types.h>
 #include <sys/socket.h>
-#endif
+#include <stdint.h>
+#include <endian.h>
+
+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 <endian.h>
-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-01 08:58:14.000000000 +0100
@@ -5,19 +5,22 @@
 extern "C" {
 #endif
 
+#include <features.h>
 #include <stdint.h>
 
-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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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/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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -14,6 +14,13 @@
 #include <bits/alltypes.h>
 
 #include <sys/ipc.h>
+
+#ifdef _GNU_SOURCE
+#define __used_ids used_ids
+#define __swap_attempts swap_attempts
+#define __swap_successes swap_successes
+#endif
+
 #include <bits/shm.h>
 
 #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-01 08:58:14.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 <bits/alltypes.h>
-
-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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -5,6 +5,8 @@
 extern "C" {
 #endif
 
+#include <features.h>
+
 #define __NEED_pid_t
 #define __NEED_time_t
 #define __NEED_suseconds_t
@@ -12,19 +14,17 @@
 
 #include <bits/alltypes.h>
 
-#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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -0,0 +1,60 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+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-01 08:58:14.000000000 +0100
@@ -1,5 +1,7 @@
 #include <dirent.h>
+#include <errno.h>
 #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/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-01 08:58:14.000000000 +0100
@@ -13,11 +13,11 @@
 	arg = va_arg(ap, 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-01 08:58:14.000000000 +0100
@@ -1,8 +1,11 @@
 #include <fcntl.h>
 #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-01 08:58:14.000000000 +0100
@@ -1,8 +1,11 @@
 #include <fcntl.h>
 #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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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 <sys/syscall.h>
 #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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -1,9 +1,9 @@
 #define _GNU_SOURCE
 #include <dlfcn.h>
 
-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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -0,0 +1,19 @@
+#include <stdarg.h>
+#include <unistd.h>
+#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-01 08:58:14.000000000 +0100
@@ -1,9 +1,13 @@
 #define _GNU_SOURCE
 #include <fcntl.h>
 #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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -2,7 +2,7 @@
 #include <sys/mman.h>
 #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-01 08:58:14.000000000 +0100
@@ -2,7 +2,7 @@
 #include <time.h>
 #include <sys/time.h>
 
-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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -1,9 +1,20 @@
 #define _GNU_SOURCE
 #include <sys/socket.h>
+#include <errno.h>
+#include <fcntl.h>
 #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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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 <stdlib.h>
 #include <stdint.h>
 #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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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/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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.000000000 +0100
@@ -1,10 +1,7 @@
 #include <errno.h>
-#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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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-01 08:58:14.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
