Bläddra i källkod

Merge branch 'master' of git+ssh://openadk.org/git/openadk

Waldemar Brodkorb 11 år sedan
förälder
incheckning
f7dde97ca3

+ 3 - 0
TODO

@@ -1,4 +1,7 @@
 - update gcc to 4.8.2
+- socat openssl flavour + update
+- use gnu_host_name for host_ dir
+- move target/tools to tools, mv binaries to host_ dir, use ADK_HOST_NEED_FOO (xz,lzop,bzip2,..)
 - add toolchain archive creation target (optimize for size)
 - hash-style=gnu for non-mips and non-musl
 - add arm hard and softfloat toolchains

+ 1 - 0
mk/build.mk

@@ -35,6 +35,7 @@ DEFCONFIG=		ADK_DEBUG=n \
 			ADK_PACKAGE_URLGRABBER=n \
 			ADK_PACKAGE_LIBSSP=n \
 			ADK_PACKAGE_OPENAFS=n \
+			ADK_PACKAGE_OPENJDK7=n \
 			ADK_PKG_XORG=n \
 			ADK_PKG_MPDBOX=n \
 			ADK_PKG_DEVELOPMENT=n \

+ 3 - 1
package/avahi/Makefile

@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		avahi
 PKG_VERSION:=		0.6.31
-PKG_RELEASE:=		1
+PKG_RELEASE:=		2
 PKG_MD5SUM:=		2f22745b8f7368ad5a0a3fddac343f2d
 PKG_DESCR:=		mDNS daemon
 PKG_SECTION:=		dhcp
@@ -98,5 +98,7 @@ libavahi-install:
 		${IDIR_LIBAVAHI}/usr/lib
 	${CP} ${WRKINST}/usr/lib/libavahi-core.so* \
 		${IDIR_LIBAVAHI}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libavahi-glib.so* \
+		${IDIR_LIBAVAHI}/usr/lib
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 18 - 6
package/mpd/Makefile

@@ -4,9 +4,9 @@
 include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		mpd
-PKG_VERSION:=		0.18.5
-PKG_RELEASE:=		3
-PKG_MD5SUM:=		63bcf6ce338caa2ae2cd6dc8e9710d5c
+PKG_VERSION:=		0.18.8
+PKG_RELEASE:=		1
+PKG_MD5SUM:=		7bbe1caf5abe404dc985ca4f44984b1f
 PKG_DESCR:=		A music player daemon
 PKG_SECTION:=		multimedia
 PKG_DEPENDS:=		glib libstdcxx libgcc libiconv-tiny libmpdclient
@@ -23,7 +23,7 @@ DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.xz
 PKG_FLAVOURS_MPD:=	WITH_ALSA WITH_AO WITH_MP3 WITH_MP4 WITH_TREMOR
 PKG_FLAVOURS_MPD+=	WITH_OGG WITH_FLAC WITH_WAV WITH_MMS WITH_FFMPEG
 PKG_FLAVOURS_MPD+=	WITH_SHOUT WITH_CURL WITH_SAMPLERATE WITH_HTTPD
-PKG_FLAVOURS_MPD+=	WITH_OPUS WITH_PULSE
+PKG_FLAVOURS_MPD+=	WITH_OPUS WITH_PULSE WITH_AVAHI
 
 PKGFD_WITH_ALSA:=	enable ALSA output
 PKGFS_WITH_ALSA:=	alsa-lib
@@ -119,6 +119,13 @@ ifeq ($(ADK_PACKAGE_MPD_WITH_PULSE),y)
 PKG_FDEPENDS+=		pulseaudio
 endif
 
+PKGFD_WITH_AVAHI:=	enable AVAHI/zeroconf support
+PKGFS_WITH_AVAHI:=	libavahi
+PKGFB_WITH_AVAHI:=	avahi
+ifeq ($(ADK_PACKAGE_MPD_WITH_AVAHI),y)
+PKG_FDEPENDS+=		libavahi
+endif
+
 PKGFD_WITH_HTTPD:=	enable HTTP output
 
 include ${TOPDIR}/mk/package.mk
@@ -139,8 +146,7 @@ CONFIGURE_ARGS+=	--disable-jack \
 			--disable-sqlite \
 			--disable-mpg123 \
 			--disable-soundcloud \
-			--enable-inotify \
-			--with-zeroconf=no
+			--enable-inotify
 
 ifneq (${ADK_PACKAGE_MPD_WITH_HTTPD},)
 CONFIGURE_ARGS+=	--enable-httpd-output
@@ -148,6 +154,12 @@ else
 CONFIGURE_ARGS+=	--disable-httpd-output
 endif
 
+ifneq (${ADK_PACKAGE_MPD_WITH_AVAHI},)
+CONFIGURE_ARGS+=	--with-zeroconf=avahi
+else
+CONFIGURE_ARGS+=	--with-zeroconf=no
+endif
+
 ifneq (${ADK_PACKAGE_MPD_WITH_PULSE},)
 CONFIGURE_ARGS+=	--enable-pulse
 else

+ 3 - 0
package/musl/Makefile

@@ -49,6 +49,9 @@ endif
 ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y)
 MARCH:=			armhf
 endif
+ifeq ($(CPU_ARCH),sh4)
+MARCH:=			sh
+endif
 
 # do nothing, musl is already build in toolchain directory
 do-install:

+ 1 - 1
package/strace/Makefile

@@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk
 
 PKG_NAME:=		strace
 PKG_VERSION:=		4.8
-PKG_RELEASE:=		7
+PKG_RELEASE:=		8
 PKG_MD5SUM:=		c575ef43829586801f514fd91bfe7575
 PKG_DESCR:=		System call trace program
 PKG_SECTION:=		debug

+ 33 - 0
package/strace/patches/patch-defs_h

@@ -0,0 +1,33 @@
+--- strace-4.8.orig/defs.h	2013-05-14 16:10:42.000000000 +0200
++++ strace-4.8/defs.h	2014-02-26 17:36:34.000000000 +0100
+@@ -155,18 +155,18 @@ extern char *stpcpy(char *dst, const cha
+     || defined(METAG) \
+     || defined(TILE) \
+     || defined(XTENSA) \
+-    ) && defined(__GLIBC__)
++    ) && defined(__linux__)
+ # include <sys/ptrace.h>
+ #else
+ /* Work around awkward prototype in ptrace.h. */
+ # define ptrace xptrace
+ # include <sys/ptrace.h>
+ # undef ptrace
+-# ifdef POWERPC
++#if defined(POWERPC) && defined(__GLIBC__)
+ #  define __KERNEL__
+ #  include <asm/ptrace.h>
+ #  undef __KERNEL__
+-# endif
++#endif
+ extern long ptrace(int, int, char *, long);
+ #endif
+ 
+@@ -222,7 +222,7 @@ extern long ptrace(int, int, char *, lon
+ # define PTRACE_EVENT_EXIT	6
+ #endif
+ 
+-#if !defined(__GLIBC__)
++#if !defined(__GLIBC__) && !defined(PTRACE_PEEKUSER)
+ # define PTRACE_PEEKUSER PTRACE_PEEKUSR
+ # define PTRACE_POKEUSER PTRACE_POKEUSR
+ #endif

+ 11 - 0
package/strace/patches/patch-desc_c

@@ -0,0 +1,11 @@
+--- strace-4.8.orig/desc.c	2013-05-02 00:39:10.000000000 +0200
++++ strace-4.8/desc.c	2014-02-25 15:16:36.000000000 +0100
+@@ -223,7 +223,7 @@ static const struct xlat perf_event_open
+ 	{ 0,				NULL			},
+ };
+ 
+-#if _LFS64_LARGEFILE
++#if defined(_LFS64_LARGEFILE) && defined(__GLIBC__) || defined(__UCLIBC__)
+ /* fcntl/lockf */
+ static void
+ printflock64(struct tcb *tcp, long addr, int getlk)

+ 17 - 0
package/strace/patches/patch-net_c

@@ -0,0 +1,17 @@
+--- strace-4.8.orig/net.c	2013-05-18 00:20:02.000000000 +0200
++++ strace-4.8/net.c	2014-02-25 16:06:44.000000000 +0100
+@@ -95,12 +95,14 @@
+ #endif
+ 
+ /* Under Linux these are enums so we can't test for them with ifdef. */
++#if !defined(IPPROTO_MAX)
+ #define IPPROTO_EGP IPPROTO_EGP
+ #define IPPROTO_PUP IPPROTO_PUP
+ #define IPPROTO_IDP IPPROTO_IDP
+ #define IPPROTO_IGMP IPPROTO_IGMP
+ #define IPPROTO_RAW IPPROTO_RAW
+ #define IPPROTO_MAX IPPROTO_MAX
++#endif
+ 
+ static const struct xlat domains[] = {
+ #ifdef PF_UNSPEC

+ 49 - 0
package/strace/patches/patch-process_c

@@ -0,0 +1,49 @@
+--- strace-4.8.orig/process.c	2013-05-18 00:22:19.000000000 +0200
++++ strace-4.8/process.c	2014-02-25 20:02:55.000000000 +0100
+@@ -55,7 +55,7 @@
+ # endif
+ #endif
+ 
+-#ifdef HAVE_LINUX_PTRACE_H
++#if defined(HAVE_LINUX_PTRACE_H) && defined(__GLIBC__)
+ # undef PTRACE_SYSCALL
+ # ifdef HAVE_STRUCT_IA64_FPREG
+ #  define ia64_fpreg XXX_ia64_fpreg
+@@ -104,6 +104,10 @@
+ # include <asm/rse.h>
+ #endif
+ 
++#ifdef __arm__
++#include <asm/ptrace.h>
++#endif
++
+ #ifdef HAVE_PRCTL
+ # include <sys/prctl.h>
+ 
+@@ -2857,7 +2861,7 @@ sys_sched_setscheduler(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[2], &p) < 0)
+ 			tprintf(", %#lx", tcp->u_arg[2]);
+ 		else
+-			tprintf(", { %d }", p.__sched_priority);
++			tprintf(", { %d }", p.sched_priority);
+ 	}
+ 	return 0;
+ }
+@@ -2872,7 +2876,7 @@ sys_sched_getparam(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
+ 			tprintf("%#lx", tcp->u_arg[1]);
+ 		else
+-			tprintf("{ %d }", p.__sched_priority);
++			tprintf("{ %d }", p.sched_priority);
+ 	}
+ 	return 0;
+ }
+@@ -2885,7 +2889,7 @@ sys_sched_setparam(struct tcb *tcp)
+ 		if (umove(tcp, tcp->u_arg[1], &p) < 0)
+ 			tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
+ 		else
+-			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.__sched_priority);
++			tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
+ 	}
+ 	return 0;
+ }

+ 22 - 0
package/strace/patches/patch-signal_c

@@ -0,0 +1,22 @@
+--- strace-4.8.orig/signal.c	2013-05-23 15:41:23.000000000 +0200
++++ strace-4.8/signal.c	2014-02-26 17:40:43.000000000 +0100
+@@ -60,6 +60,10 @@
+ # include <asm/ptrace_offsets.h>
+ #endif
+ 
++#ifndef POWERPC
++#include <asm/ptrace.h>
++#endif
++
+ #if defined(SPARC) || defined(SPARC64) || defined(MIPS)
+ typedef struct {
+ 	struct pt_regs		si_regs;
+@@ -815,7 +819,7 @@ sys_sigreturn(struct tcb *tcp)
+ {
+ #if defined(ARM)
+ 	if (entering(tcp)) {
+-		struct sigcontext_struct sc;
++		struct sigcontext sc;
+ 		sigset_t sigm;
+ 		if (umove(tcp, arm_regs.ARM_sp, &sc) < 0)
+ 			return 0;

+ 17 - 0
package/strace/patches/patch-syscall_c

@@ -0,0 +1,17 @@
+--- strace-4.8.orig/syscall.c	2013-05-14 16:10:42.000000000 +0200
++++ strace-4.8/syscall.c	2014-02-26 17:46:14.000000000 +0100
+@@ -72,12 +72,8 @@
+ # include <elf.h>
+ #endif
+ 
+-#if defined(AARCH64)
+-# include <asm/ptrace.h>
+-#endif
+-
+-#if defined(XTENSA)
+-# include <asm/ptrace.h>
++#ifndef POWERPC
++#include <asm/ptrace.h>
+ #endif
+ 
+ #ifndef ERESTARTSYS

+ 14 - 0
package/strace/patches/patch-time_c

@@ -0,0 +1,14 @@
+--- strace-4.8.orig/time.c	2012-05-01 23:17:51.000000000 +0200
++++ strace-4.8/time.c	2014-02-25 17:25:14.000000000 +0100
+@@ -774,7 +774,11 @@ printsigevent(struct tcb *tcp, long arg)
+ 			/* _pad[0] is the _tid field which might not be
+ 			   present in the userlevel definition of the
+ 			   struct.  */
++#if defined(__GLIBC__)
+ 			tprintf("{%d}", sev._sigev_un._pad[0]);
++#else
++			tprintf("{%d}", (int) sev.__pad[0]);
++#endif
+ 		else if (sev.sigev_notify == SIGEV_THREAD)
+ 			tprintf("{%p, %p}", sev.sigev_notify_function,
+ 				sev.sigev_notify_attributes);

+ 1 - 0
target/config/Config.in

@@ -696,6 +696,7 @@ config ADK_TARGET_LIB_MUSL
 		ADK_LINUX_MICROBLAZE || \
 		ADK_LINUX_MIPS || \
 		ADK_LINUX_PPC || \
+		ADK_LINUX_SH || \
 		ADK_LINUX_X86 || \
 		ADK_LINUX_X86_64
 	help

+ 3 - 0
target/ppc/kernel/qemu-ppc

@@ -30,6 +30,9 @@ CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_ATA=y
+CONFIG_SATA_PMP=y
+CONFIG_ATA_SFF=y
+CONFIG_ATA_BMDMA=y
 CONFIG_PATA_MACIO=y
 CONFIG_MACINTOSH_DRIVERS=y
 CONFIG_ADB=y

+ 3 - 3
target/sh/Makefile

@@ -26,7 +26,7 @@ imageinstall: $(FW_DIR)/$(INITRAMFS)
 	@cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
 	@echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
 	@echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
-ifeq ($(ADK_TARGET_SYSTEM_QEMU_SH),y)
+ifeq ($(ADK_HARDWARE_QEMU),y)
 	@echo "Start qemu with following command line:"
 	@echo 'qemu-system-${CPU_ARCH} -M r2d -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
 endif
@@ -35,8 +35,8 @@ ifeq ($(ADK_TARGET_FS),initramfs-piggyback)
 imageinstall: createinitramfs
 	@cp $(KERNEL) $(FW_DIR)/${TARGET_KERNEL}
 	@echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
-ifeq ($(ADK_TARGET_SYSTEM_QEMU_SH),y)
+ifeq ($(ADK_HARDWARE_QEMU),y)
 	@echo "Start qemu with following command line:"
-	@echo 'qemu-system-{CPU_ARCH} -M r2d -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+	@echo 'qemu-system-${CPU_ARCH} -M r2d -kernel $(FW_DIR)/$(TARGET_KERNEL)'
 endif
 endif

+ 1 - 0
target/sh/sys-available/qemu-sh4

@@ -8,6 +8,7 @@ config ADK_TARGET_SYSTEM_QEMU_SH4
 	select ADK_TARGET_WITH_VGA
 	select ADK_TARGET_WITH_INPUT
 	select ADK_TARGET_WITH_USB
+	select ADK_TARGET_KERNEL_ZIMAGE
 	help
 	 Support for Qemu Emulator (superh).
 

+ 1 - 0
target/sh/sys-available/qemu-sh4eb

@@ -9,6 +9,7 @@ config ADK_TARGET_SYSTEM_QEMU_SH4EB
 	select ADK_TARGET_WITH_VGA
 	select ADK_TARGET_WITH_INPUT
 	select ADK_TARGET_WITH_USB
+	select ADK_TARGET_KERNEL_ZIMAGE
 	help
 	 Support for Qemu Emulator (superh).
 

+ 1 - 1
toolchain/gcc/patches/4.7.3/musl-sh.patch

@@ -5,7 +5,7 @@ diff -Nur gcc-4.7.3.orig/gcc/config/sh/linux.h gcc-4.7.3/gcc/config/sh/linux.h
  #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh.1"
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh.so.1"
  
  #undef SUBTARGET_LINK_EMUL_SUFFIX
  #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"

+ 3 - 3
toolchain/gcc/patches/4.7.3/musl-sparc.patch

@@ -5,8 +5,8 @@ diff -Nur gcc-4.7.3.orig/gcc/config/sparc/linux64.h gcc-4.7.3/gcc/config/sparc/l
  
  #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
  #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
-+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-sparc.1"
-+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-sparc.1"
++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-sparc.so.1"
++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-sparc.so.1"
 +
  
  #ifdef SPARC_BI_ARCH
@@ -18,7 +18,7 @@ diff -Nur gcc-4.7.3.orig/gcc/config/sparc/linux.h gcc-4.7.3/gcc/config/sparc/lin
     done.  */
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sparc.1"
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sparc.so.1"
  
  #undef  LINK_SPEC
  #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \

+ 3 - 0
toolchain/musl/Makefile

@@ -18,6 +18,9 @@ endif
 ifeq ($(CPU_ARCH),microblazeel)
 REAL_GNU_TARGET_NAME:= $(subst microblazeel,microblaze,$(REAL_GNU_TARGET_NAME))
 endif
+ifeq ($(CPU_ARCH),sh4)
+REAL_GNU_TARGET_NAME:= $(subst sh4,sh,$(REAL_GNU_TARGET_NAME))
+endif
 
 $(WRKBUILD)/.headers:
 	(cd $(WRKBUILD); CC='$(TARGET_CC)' CROSS_COMPILE='$(TARGET_CROSS)' \

+ 0 - 12
toolchain/musl/patches/mips64.patch

@@ -1,12 +0,0 @@
-diff -Nur musl-0.9.14.orig/configure musl-0.9.14/configure
---- musl-0.9.14.orig/configure	2013-09-23 23:01:11.000000000 +0200
-+++ musl-0.9.14/configure	2013-11-09 20:16:14.000000000 +0100
-@@ -225,7 +225,7 @@
- arm*) ARCH=arm ;;
- i?86*) ARCH=i386 ;;
- x86_64*) ARCH=x86_64 ;;
--mips-*|mipsel-*) ARCH=mips ;;
-+mips-*|mipsel-*|mips64-*|mips64el-*) ARCH=mips ;;
- microblaze-*) ARCH=microblaze ;;
- powerpc-*) ARCH=powerpc ;;
- unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;;

+ 8039 - 0
toolchain/musl/patches/musl-git-20140225.patch

@@ -0,0 +1,8039 @@
+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-02-25 15:24: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/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-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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/superh/atomic.h musl-git/arch/superh/atomic.h
+--- musl-0.9.15/arch/superh/atomic.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/atomic.h	2014-02-25 15:24: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/superh/bits/alltypes.h.in musl-git/arch/superh/bits/alltypes.h.in
+--- musl-0.9.15/arch/superh/bits/alltypes.h.in	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/alltypes.h.in	2014-02-25 15:24: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/superh/bits/endian.h musl-git/arch/superh/bits/endian.h
+--- musl-0.9.15/arch/superh/bits/endian.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/endian.h	2014-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1,5 @@
++#if __LITTLE_ENDIAN__
++#define __BYTE_ORDER __LITTLE_ENDIAN
++#else
++#define __BYTE_ORDER __BIG_ENDIAN
++#endif
+diff -Nur musl-0.9.15/arch/superh/bits/errno.h musl-git/arch/superh/bits/errno.h
+--- musl-0.9.15/arch/superh/bits/errno.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/errno.h	2014-02-25 15:24: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/superh/bits/fcntl.h musl-git/arch/superh/bits/fcntl.h
+--- musl-0.9.15/arch/superh/bits/fcntl.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/fcntl.h	2014-02-25 15:24: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/superh/bits/fenv.h musl-git/arch/superh/bits/fenv.h
+--- musl-0.9.15/arch/superh/bits/fenv.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/fenv.h	2014-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1,17 @@
++#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
++
++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/superh/bits/float.h musl-git/arch/superh/bits/float.h
+--- musl-0.9.15/arch/superh/bits/float.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/float.h	2014-02-25 15:24: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/superh/bits/ioctl.h musl-git/arch/superh/bits/ioctl.h
+--- musl-0.9.15/arch/superh/bits/ioctl.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/ioctl.h	2014-02-25 15:24: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/superh/bits/ipc.h musl-git/arch/superh/bits/ipc.h
+--- musl-0.9.15/arch/superh/bits/ipc.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/ipc.h	2014-02-25 15:24: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/superh/bits/limits.h musl-git/arch/superh/bits/limits.h
+--- musl-0.9.15/arch/superh/bits/limits.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/limits.h	2014-02-25 15:24: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/superh/bits/mman.h musl-git/arch/superh/bits/mman.h
+--- musl-0.9.15/arch/superh/bits/mman.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/mman.h	2014-02-25 15:24: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/superh/bits/msg.h musl-git/arch/superh/bits/msg.h
+--- musl-0.9.15/arch/superh/bits/msg.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/msg.h	2014-02-25 15:24: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/superh/bits/posix.h musl-git/arch/superh/bits/posix.h
+--- musl-0.9.15/arch/superh/bits/posix.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/posix.h	2014-02-25 15:24: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/superh/bits/setjmp.h musl-git/arch/superh/bits/setjmp.h
+--- musl-0.9.15/arch/superh/bits/setjmp.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/setjmp.h	2014-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1 @@
++typedef unsigned long __jmp_buf[13];
+diff -Nur musl-0.9.15/arch/superh/bits/shm.h musl-git/arch/superh/bits/shm.h
+--- musl-0.9.15/arch/superh/bits/shm.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/shm.h	2014-02-25 15:24: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/superh/bits/signal.h musl-git/arch/superh/bits/signal.h
+--- musl-0.9.15/arch/superh/bits/signal.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/signal.h	2014-02-25 15:24: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/superh/bits/socket.h musl-git/arch/superh/bits/socket.h
+--- musl-0.9.15/arch/superh/bits/socket.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/socket.h	2014-02-25 15:24: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/superh/bits/statfs.h musl-git/arch/superh/bits/statfs.h
+--- musl-0.9.15/arch/superh/bits/statfs.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/statfs.h	2014-02-25 15:24: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/superh/bits/stat.h musl-git/arch/superh/bits/stat.h
+--- musl-0.9.15/arch/superh/bits/stat.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/stat.h	2014-02-25 15:24: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/superh/bits/stdarg.h musl-git/arch/superh/bits/stdarg.h
+--- musl-0.9.15/arch/superh/bits/stdarg.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/stdarg.h	2014-02-25 15:24: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/superh/bits/stdint.h musl-git/arch/superh/bits/stdint.h
+--- musl-0.9.15/arch/superh/bits/stdint.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/stdint.h	2014-02-25 15:24: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/superh/bits/syscall.h musl-git/arch/superh/bits/syscall.h
+--- musl-0.9.15/arch/superh/bits/syscall.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/syscall.h	2014-02-25 15:24: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/superh/bits/termios.h musl-git/arch/superh/bits/termios.h
+--- musl-0.9.15/arch/superh/bits/termios.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/bits/termios.h	2014-02-25 15:24: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/superh/crt_arch.h musl-git/arch/superh/crt_arch.h
+--- musl-0.9.15/arch/superh/crt_arch.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/crt_arch.h	2014-02-25 15:24: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/superh/pthread_arch.h musl-git/arch/superh/pthread_arch.h
+--- musl-0.9.15/arch/superh/pthread_arch.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/pthread_arch.h	2014-02-25 15:24: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/superh/reloc.h musl-git/arch/superh/reloc.h
+--- musl-0.9.15/arch/superh/reloc.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/reloc.h	2014-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1,47 @@
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++#define ENDIAN_SUFFIX "l"
++#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/superh/src/atomic.c musl-git/arch/superh/src/atomic.c
+--- musl-0.9.15/arch/superh/src/atomic.c	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/src/atomic.c	2014-02-25 15:24: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/superh/src/__fpsrc_values.c musl-git/arch/superh/src/__fpsrc_values.c
+--- musl-0.9.15/arch/superh/src/__fpsrc_values.c	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/src/__fpsrc_values.c	2014-02-25 15:24: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/superh/syscall_arch.h musl-git/arch/superh/syscall_arch.h
+--- musl-0.9.15/arch/superh/syscall_arch.h	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/arch/superh/syscall_arch.h	2014-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24:14.000000000 +0100
+@@ -224,10 +224,12 @@
+ case "$target" in
+ 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 ;;
++sh-*) ARCH=superh ;;
+ unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;;
+ *) fail "$0: unknown or unsupported target \"$target\"" ;;
+ esac
+@@ -381,6 +383,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 +413,17 @@
+ 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
+ 
++test "$ARCH" = "superh" && trycppif __LITTLE_ENDIAN__ "$t" \
++&& SUBARCH=${SUBARCH}el
++
+ 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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24:14.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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1 @@
++../fenv.c
+diff -Nur musl-0.9.15/src/fenv/superh/fenv.s musl-git/src/fenv/superh/fenv.s
+--- musl-0.9.15/src/fenv/superh/fenv.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/fenv/superh/fenv.s	2014-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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/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-02-25 15:24: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/superh/syscall.s musl-git/src/internal/superh/syscall.s
+--- musl-0.9.15/src/internal/superh/syscall.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/internal/superh/syscall.s	2014-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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/superh/dlsym.s musl-git/src/ldso/superh/dlsym.s
+--- musl-0.9.15/src/ldso/superh/dlsym.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/ldso/superh/dlsym.s	2014-02-25 15:24: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/superh/start.s musl-git/src/ldso/superh/start.s
+--- musl-0.9.15/src/ldso/superh/start.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/ldso/superh/start.s	2014-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24:14.000000000 +0100
+@@ -0,0 +1 @@
++setjmp.s
+diff -Nur musl-0.9.15/src/setjmp/superh/longjmp.s musl-git/src/setjmp/superh/longjmp.s
+--- musl-0.9.15/src/setjmp/superh/longjmp.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/setjmp/superh/longjmp.s	2014-02-25 15:24: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/superh/setjmp.s musl-git/src/setjmp/superh/setjmp.s
+--- musl-0.9.15/src/setjmp/superh/setjmp.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/setjmp/superh/setjmp.s	2014-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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/superh/restore.s musl-git/src/signal/superh/restore.s
+--- musl-0.9.15/src/signal/superh/restore.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/signal/superh/restore.s	2014-02-25 15:24: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/superh/sigsetjmp.s musl-git/src/signal/superh/sigsetjmp.s
+--- musl-0.9.15/src/signal/superh/sigsetjmp.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/signal/superh/sigsetjmp.s	2014-02-25 15:24: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/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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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/superh/clone.s musl-git/src/thread/superh/clone.s
+--- musl-0.9.15/src/thread/superh/clone.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/thread/superh/clone.s	2014-02-25 15:24: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/superh/__set_thread_area.s musl-git/src/thread/superh/__set_thread_area.s
+--- musl-0.9.15/src/thread/superh/__set_thread_area.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/thread/superh/__set_thread_area.s	2014-02-25 15:24: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/superh/syscall_cp.s musl-git/src/thread/superh/syscall_cp.s
+--- musl-0.9.15/src/thread/superh/syscall_cp.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/thread/superh/syscall_cp.s	2014-02-25 15:24: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/superh/__unmapself.s musl-git/src/thread/superh/__unmapself.s
+--- musl-0.9.15/src/thread/superh/__unmapself.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/thread/superh/__unmapself.s	2014-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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-02-25 15:24: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/superh/pipe.s musl-git/src/unistd/superh/pipe.s
+--- musl-0.9.15/src/unistd/superh/pipe.s	1970-01-01 01:00:00.000000000 +0100
++++ musl-git/src/unistd/superh/pipe.s	2014-02-25 15:24: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-02-25 15:24: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