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