toolchain/musl: update to 0.9.8
authorFlorian Fainelli <florian@openwrt.org>
Mon, 10 Dec 2012 14:24:21 +0000 (14:24 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Mon, 10 Dec 2012 14:24:21 +0000 (14:24 +0000)
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 34597

toolchain/musl/Config.in
toolchain/musl/Config.version
toolchain/musl/common.mk
toolchain/musl/patches-0.9.7/001-bsd_ether_h.patch [deleted file]
toolchain/musl/patches-0.9.7/002-no_mips_fpu.patch [deleted file]
toolchain/musl/patches-0.9.7/003-fix_termios_constants_on_mips.patch [deleted file]
toolchain/musl/patches-0.9.8/001-bsd_ether_h.patch [new file with mode: 0644]
toolchain/musl/patches-0.9.8/002-no_mips_fpu.patch [new file with mode: 0644]

index 254a8d4201116b85779de3a849cae9b3e5c69a9e..b34f724e690c6fd4b730ee230fdb09f192cef3d0 100644 (file)
@@ -3,12 +3,12 @@
 choice
        prompt "musl Version"
        depends on TOOLCHAINOPTS && USE_MUSL
-       default MUSL_VERSION_0_9_7
+       default MUSL_VERSION_0_9_8
        help
          Select the version of musl you wish to use.
 
-       config MUSL_VERSION_0_9_7
-               bool "musl 0.9.7"
+       config MUSL_VERSION_0_9_8
+               bool "musl 0.9.8"
 
 endchoice
 
index e76033be22746562bf15cbfc02a943b6bc921902..a1b303f9ea074e3a482aaf4234ca305dccd5176d 100644 (file)
@@ -1,12 +1,12 @@
 config MUSL_VERSION
        string
        depends on USE_MUSL
-       default "0.9.7"       if MUSL_VERSION_0_9_7
-       default "0.9.7"
+       default "0.9.8"       if MUSL_VERSION_0_9_8
+       default "0.9.8"
 
 if !TOOLCHAINOPTS
 
-       config MUSL_VERSION_0_9_7
+       config MUSL_VERSION_0_9_8
                default y if USE_MUSL
                bool
 
index 68cb2396fa1a4fe9cd86755bc1d4896e2be4cb7d..a83d25459dc77a7d8393ba92d957f392ccc258e6 100644 (file)
@@ -14,7 +14,7 @@ PKG_RELEASE=$(PKG_SOURCE_VERSION)
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=git://git.musl-libc.org/musl
 PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=2df4f6f17b1f14684cb991c53c9ef0ddaa8c7bad
+PKG_SOURCE_VERSION:=e6dcebd5efa2d390f0a24dc11444024e9fd1990c
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
 LIBC_SO_VERSION:=$(PKG_VERSION)
 PATCH_DIR:=$(PATH_PREFIX)/patches-$(PKG_VERSION)
diff --git a/toolchain/musl/patches-0.9.7/001-bsd_ether_h.patch b/toolchain/musl/patches-0.9.7/001-bsd_ether_h.patch
deleted file mode 100644 (file)
index be3a021..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-Date: Sat, 20 Oct 2012 22:15:44 +0200
-From: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
-To: musl@...ts.openwall.com
-Cc: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
-Subject: [PATCH 3/4] Import BSD functions defined in <netinet/ether.h> from NetBSD
-
-Signed-off-by: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
----
- include/netinet/ether.h |   14 ++++
- src/network/ethers.c    |  180 +++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 194 insertions(+)
- create mode 100644 include/netinet/ether.h
- create mode 100644 src/network/ethers.c
-
-diff --git a/include/netinet/ether.h b/include/netinet/ether.h
-new file mode 100644
-index 0000000..44c614e
---- /dev/null
-+++ b/include/netinet/ether.h
-@@ -0,0 +1,10 @@
-+#ifndef _NETINET_ETHER_H
-+#define _NETINET_ETHER_H
-+
-+char  *ether_ntoa(const struct ether_addr *);
-+struct        ether_addr *ether_aton(const char *);
-+int   ether_ntohost(char *, const struct ether_addr *);
-+int   ether_hostton(const char *, struct ether_addr *);
-+int   ether_line(const char *, struct ether_addr *, char *);
-+
-+#endif /* !_NETINET_ETHER_H */
-diff --git a/src/network/ethers.c b/src/network/ethers.c
-new file mode 100644
-index 0000000..8014581
---- /dev/null
-+++ b/src/network/ethers.c
-@@ -0,0 +1,180 @@
-+/* Origin NetBSD: src/lib/libc/net/ethers.c */
-+
-+/*
-+ * ethers(3N) a la Sun.
-+ *
-+ * Written by Roland McGrath <roland@...b.com> 10/14/93.
-+ * Public domain.
-+ *
-+ * port for musl by Abdoulaye Walsimou GAYE <awg@...toolkit.org> 2012/10/15
-+ */
-+
-+#define _BSD_SOURCE
-+#include <net/ethernet.h>
-+#include <netinet/ether.h>
-+
-+#include <sys/param.h>
-+#include <assert.h>
-+#include <errno.h>
-+#include <paths.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#ifndef _PATH_ETHERS
-+#define _PATH_ETHERS "/etc/ethers"
-+#endif
-+
-+/*
-+ * ether_ntoa():
-+ * This function converts this structure into an ASCII string of the form
-+ * ``xx:xx:xx:xx:xx:xx'', consisting of 6 hexadecimal numbers separated
-+ * by colons.  It returns a pointer to a static buffer that is reused for
-+ * each call.
-+ */
-+char *ether_ntoa(const struct ether_addr *e)
-+{
-+      static char a[18];
-+
-+      assert(e != NULL);
-+
-+      (void) snprintf(a, sizeof a, "%02x:%02x:%02x:%02x:%02x:%02x",
-+          e->ether_addr_octet[0], e->ether_addr_octet[1],
-+          e->ether_addr_octet[2], e->ether_addr_octet[3],
-+          e->ether_addr_octet[4], e->ether_addr_octet[5]);
-+      return a;
-+}
-+
-+/*
-+ * ether_aton():
-+ * This function converts an ASCII string of the same form and to a structure
-+ * containing the 6 octets of the address.  It returns a pointer to a
-+ * static structure that is reused for each call.
-+ */
-+struct ether_addr *ether_aton(const char *s)
-+{
-+      static struct ether_addr n;
-+      unsigned int i[6];
-+
-+      assert(s != NULL);
-+
-+      if (sscanf(s, " %x:%x:%x:%x:%x:%x ", &i[0], &i[1],
-+          &i[2], &i[3], &i[4], &i[5]) == 6) {
-+              n.ether_addr_octet[0] = (unsigned char)i[0];
-+              n.ether_addr_octet[1] = (unsigned char)i[1];
-+              n.ether_addr_octet[2] = (unsigned char)i[2];
-+              n.ether_addr_octet[3] = (unsigned char)i[3];
-+              n.ether_addr_octet[4] = (unsigned char)i[4];
-+              n.ether_addr_octet[5] = (unsigned char)i[5];
-+              return &n;
-+      }
-+      return NULL;
-+}
-+
-+/*
-+ * ether_ntohost():
-+ * This function interrogates the data base mapping host names to Ethernet
-+ * addresses, /etc/ethers.
-+ * It looks up the given Ethernet address and writes the associated host name
-+ * into the character buffer passed.
-+ * It returns zero if it finds the requested host name and -1 if not.
-+ */
-+int ether_ntohost(char *hostname, const struct ether_addr *e)
-+{
-+      FILE *f;
-+      char *p;
-+      size_t len;
-+      struct ether_addr try;
-+
-+      assert(hostname != NULL);
-+      assert(e != NULL);
-+
-+      f = fopen(_PATH_ETHERS, "r");
-+      if (f == NULL)
-+              return -1;
-+      while ((p = fgetln(f, &len)) != NULL) {
-+              if (p[len - 1] != '\n')
-+                      continue;               /* skip lines w/o \n */
-+              p[--len] = '\0';
-+              if (ether_line(p, &try, hostname) == 0 &&
-+                  memcmp(&try, e, sizeof try) == 0) {
-+                      (void)fclose(f);
-+                      return 0;
-+              }
-+      }
-+      (void)fclose(f);
-+      errno = ENOENT;
-+      return -1;
-+}
-+
-+/*
-+ * ether_hostton():
-+ * This function interrogates the data base mapping host names to Ethernet
-+ * addresses, /etc/ethers.
-+ * It looks up the given host name and writes the associated Ethernet address
-+ * into the structure passed.
-+ * It returns zero if it finds the requested address and -1 if not.
-+ */
-+int ether_hostton(const char *hostname, struct ether_addr *e)
-+{
-+      FILE *f;
-+      char *p;
-+      size_t len;
-+      char try[MAXHOSTNAMELEN + 1];
-+
-+      assert(hostname != NULL);
-+      assert(e != NULL);
-+
-+      f = fopen(_PATH_ETHERS, "r");
-+      if (f==NULL)
-+              return -1;
-+
-+      while ((p = fgetln(f, &len)) != NULL) {
-+              if (p[len - 1] != '\n')
-+                      continue;               /* skip lines w/o \n */
-+              p[--len] = '\0';
-+              if (ether_line(p, e, try) == 0 && strcmp(hostname, try) == 0) {
-+                      (void)fclose(f);
-+                      return 0;
-+              }
-+      }
-+      (void)fclose(f);
-+      errno = ENOENT;
-+      return -1;
-+}
-+
-+/*
-+ * ether_line():
-+ * This function parses a line from the /etc/ethers file and fills in the passed
-+ * ``struct ether_addr'' and character buffer with the Ethernet address and host
-+ * name on the line.
-+ * It returns zero if the line was successfully parsed and -1 if not.
-+ */
-+int ether_line(const char *l, struct ether_addr *e, char *hostname)
-+{
-+      unsigned int i[6];
-+
-+#define S2(arg) #arg
-+#define S1(arg) S2(arg)
-+      static const char fmt[] = " %x:%x:%x:%x:%x:%x"
-+          " %" S1(MAXHOSTNAMELEN) "s\n";
-+#undef S2
-+#undef S1
-+
-+      assert(l != NULL);
-+      assert(e != NULL);
-+      assert(hostname != NULL);
-+
-+      if (sscanf(l, fmt,
-+          &i[0], &i[1], &i[2], &i[3], &i[4], &i[5], hostname) == 7) {
-+              e->ether_addr_octet[0] = (unsigned char)i[0];
-+              e->ether_addr_octet[1] = (unsigned char)i[1];
-+              e->ether_addr_octet[2] = (unsigned char)i[2];
-+              e->ether_addr_octet[3] = (unsigned char)i[3];
-+              e->ether_addr_octet[4] = (unsigned char)i[4];
-+              e->ether_addr_octet[5] = (unsigned char)i[5];
-+              return 0;
-+      }
-+      errno = EINVAL;
-+      return -1;
-+}
--- 
-1.7.9.5
-
diff --git a/toolchain/musl/patches-0.9.7/002-no_mips_fpu.patch b/toolchain/musl/patches-0.9.7/002-no_mips_fpu.patch
deleted file mode 100644 (file)
index 92af325..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-diff -urN musl-0.9.7/src/setjmp/mips/longjmp.s musl-0.9.7.new/src/setjmp/mips/longjmp.s
---- musl-0.9.7/src/setjmp/mips/longjmp.s       2012-11-23 17:03:07.000000000 +0100
-+++ musl-0.9.7.new/src/setjmp/mips/longjmp.s   2012-11-23 21:52:57.353668480 +0100
-@@ -10,21 +10,7 @@
-       bne     $2, $0, 1f
-       nop
-       addu    $2, $2, 1
--1:    lw      $8,  48($4)
--      ctc1    $8,  $31
--      lwc1    $20, 56($4)
--      lwc1    $21, 60($4)
--      lwc1    $22, 64($4)
--      lwc1    $23, 68($4)
--      lwc1    $24, 72($4)
--      lwc1    $25, 76($4)
--      lwc1    $26, 80($4)
--      lwc1    $27, 84($4)
--      lwc1    $28, 88($4)
--      lwc1    $29, 92($4)
--      lwc1    $30, 96($4)
--      lwc1    $31, 100($4)
--      lw      $ra,  0($4)
-+1:    lw      $ra,  0($4)
-       lw      $sp,  4($4)
-       lw      $16,  8($4)
-       lw      $17, 12($4)
-diff -urN musl-0.9.7/src/setjmp/mips/setjmp.s musl-0.9.7.new/src/setjmp/mips/setjmp.s
---- musl-0.9.7/src/setjmp/mips/setjmp.s        2012-11-23 17:03:07.000000000 +0100
-+++ musl-0.9.7.new/src/setjmp/mips/setjmp.s    2012-11-23 21:52:33.713667876 +0100
-@@ -21,19 +21,5 @@
-       sw      $23, 36($4)
-       sw      $30, 40($4)
-       sw      $28, 44($4)
--      cfc1    $8, $31
--      sw      $8,  48($4)
--      swc1    $20, 56($4)
--      swc1    $21, 60($4)
--      swc1    $22, 64($4)
--      swc1    $23, 68($4)
--      swc1    $24, 72($4)
--      swc1    $25, 76($4)
--      swc1    $26, 80($4)
--      swc1    $27, 84($4)
--      swc1    $28, 88($4)
--      swc1    $29, 92($4)
--      swc1    $30, 96($4)
--      swc1    $31, 100($4)
-       jr      $ra
-       li      $2, 0
diff --git a/toolchain/musl/patches-0.9.7/003-fix_termios_constants_on_mips.patch b/toolchain/musl/patches-0.9.7/003-fix_termios_constants_on_mips.patch
deleted file mode 100644 (file)
index 73e22a5..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-From 144dc4f479d49b8148f8b1b6b506b0f1096f911b Mon Sep 17 00:00:00 2001
-From: Rich Felker <dalias@aerifal.cx>
-Date: Fri, 23 Nov 2012 17:23:38 -0500
-Subject: [PATCH] fix termios constants on mips
-
----
- arch/mips/bits/termios.h |   31 +++++++++++++++++++++----------
- 1 file changed, 21 insertions(+), 10 deletions(-)
-
-diff --git a/arch/mips/bits/termios.h b/arch/mips/bits/termios.h
-index 9f6abd8..179af8e 100644
---- a/arch/mips/bits/termios.h
-+++ b/arch/mips/bits/termios.h
-@@ -14,19 +14,20 @@ struct termios
- #define VQUIT     1
- #define VERASE    2
- #define VKILL     3
--#define VEOF      4
-+#define VMIN      4
- #define VTIME     5
--#define VMIN      6
-+#define VEOL2     6
- #define VSWTC     7
-+#define VSWTCH    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 VEOF     16
-+#define VEOL     17
- #define IGNBRK  0000001
- #define BRKINT  0000002
-@@ -42,6 +43,7 @@ struct termios
- #define IXANY   0004000
- #define IXOFF   0010000
- #define IMAXBEL 0020000
-+#define IUTF8   0040000
- #define OPOST  0000001
- #define OLCUC  0000002
-@@ -94,7 +96,10 @@ struct termios
- #define B9600    0000015
- #define B19200   0000016
- #define B38400   0000017
-+#define EXTA     0000016
-+#define EXTB     0000017
-+#define BOTHER   0010000
- #define B57600   0010001
- #define B115200  0010002
- #define B230400  0010003
-@@ -124,26 +129,32 @@ struct termios
- #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
-+#define XCASE  0000004
- #define ECHO   0000010
- #define ECHOE  0000020
- #define ECHOK  0000040
- #define ECHONL 0000100
- #define NOFLSH 0000200
--#define TOSTOP 0000400
--#define IEXTEN 0100000
--
--/* Extensions? */
--#define CBAUDEX 0010000
-+#define IEXTEN 0000400
- #define ECHOCTL 0001000
- #define ECHOPRT 0002000
- #define ECHOKE 0004000
--#define FLUSHO 0010000
-+#define FLUSHO 0020000
- #define PENDIN 0040000
-+#define TOSTOP 0100000
-+#define ITOSTOP 0100000
-+#define EXTPROC 0200000
-+
-+#define TIOCSER_TEMT 1
- #define TCOOFF 0
- #define TCOON  1
--- 
-1.7.10.4
-
diff --git a/toolchain/musl/patches-0.9.8/001-bsd_ether_h.patch b/toolchain/musl/patches-0.9.8/001-bsd_ether_h.patch
new file mode 100644 (file)
index 0000000..be3a021
--- /dev/null
@@ -0,0 +1,219 @@
+Date: Sat, 20 Oct 2012 22:15:44 +0200
+From: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
+To: musl@...ts.openwall.com
+Cc: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
+Subject: [PATCH 3/4] Import BSD functions defined in <netinet/ether.h> from NetBSD
+
+Signed-off-by: Abdoulaye Walsimou Gaye <awg@...toolkit.org>
+---
+ include/netinet/ether.h |   14 ++++
+ src/network/ethers.c    |  180 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 194 insertions(+)
+ create mode 100644 include/netinet/ether.h
+ create mode 100644 src/network/ethers.c
+
+diff --git a/include/netinet/ether.h b/include/netinet/ether.h
+new file mode 100644
+index 0000000..44c614e
+--- /dev/null
++++ b/include/netinet/ether.h
+@@ -0,0 +1,10 @@
++#ifndef _NETINET_ETHER_H
++#define _NETINET_ETHER_H
++
++char  *ether_ntoa(const struct ether_addr *);
++struct        ether_addr *ether_aton(const char *);
++int   ether_ntohost(char *, const struct ether_addr *);
++int   ether_hostton(const char *, struct ether_addr *);
++int   ether_line(const char *, struct ether_addr *, char *);
++
++#endif /* !_NETINET_ETHER_H */
+diff --git a/src/network/ethers.c b/src/network/ethers.c
+new file mode 100644
+index 0000000..8014581
+--- /dev/null
++++ b/src/network/ethers.c
+@@ -0,0 +1,180 @@
++/* Origin NetBSD: src/lib/libc/net/ethers.c */
++
++/*
++ * ethers(3N) a la Sun.
++ *
++ * Written by Roland McGrath <roland@...b.com> 10/14/93.
++ * Public domain.
++ *
++ * port for musl by Abdoulaye Walsimou GAYE <awg@...toolkit.org> 2012/10/15
++ */
++
++#define _BSD_SOURCE
++#include <net/ethernet.h>
++#include <netinet/ether.h>
++
++#include <sys/param.h>
++#include <assert.h>
++#include <errno.h>
++#include <paths.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++#ifndef _PATH_ETHERS
++#define _PATH_ETHERS "/etc/ethers"
++#endif
++
++/*
++ * ether_ntoa():
++ * This function converts this structure into an ASCII string of the form
++ * ``xx:xx:xx:xx:xx:xx'', consisting of 6 hexadecimal numbers separated
++ * by colons.  It returns a pointer to a static buffer that is reused for
++ * each call.
++ */
++char *ether_ntoa(const struct ether_addr *e)
++{
++      static char a[18];
++
++      assert(e != NULL);
++
++      (void) snprintf(a, sizeof a, "%02x:%02x:%02x:%02x:%02x:%02x",
++          e->ether_addr_octet[0], e->ether_addr_octet[1],
++          e->ether_addr_octet[2], e->ether_addr_octet[3],
++          e->ether_addr_octet[4], e->ether_addr_octet[5]);
++      return a;
++}
++
++/*
++ * ether_aton():
++ * This function converts an ASCII string of the same form and to a structure
++ * containing the 6 octets of the address.  It returns a pointer to a
++ * static structure that is reused for each call.
++ */
++struct ether_addr *ether_aton(const char *s)
++{
++      static struct ether_addr n;
++      unsigned int i[6];
++
++      assert(s != NULL);
++
++      if (sscanf(s, " %x:%x:%x:%x:%x:%x ", &i[0], &i[1],
++          &i[2], &i[3], &i[4], &i[5]) == 6) {
++              n.ether_addr_octet[0] = (unsigned char)i[0];
++              n.ether_addr_octet[1] = (unsigned char)i[1];
++              n.ether_addr_octet[2] = (unsigned char)i[2];
++              n.ether_addr_octet[3] = (unsigned char)i[3];
++              n.ether_addr_octet[4] = (unsigned char)i[4];
++              n.ether_addr_octet[5] = (unsigned char)i[5];
++              return &n;
++      }
++      return NULL;
++}
++
++/*
++ * ether_ntohost():
++ * This function interrogates the data base mapping host names to Ethernet
++ * addresses, /etc/ethers.
++ * It looks up the given Ethernet address and writes the associated host name
++ * into the character buffer passed.
++ * It returns zero if it finds the requested host name and -1 if not.
++ */
++int ether_ntohost(char *hostname, const struct ether_addr *e)
++{
++      FILE *f;
++      char *p;
++      size_t len;
++      struct ether_addr try;
++
++      assert(hostname != NULL);
++      assert(e != NULL);
++
++      f = fopen(_PATH_ETHERS, "r");
++      if (f == NULL)
++              return -1;
++      while ((p = fgetln(f, &len)) != NULL) {
++              if (p[len - 1] != '\n')
++                      continue;               /* skip lines w/o \n */
++              p[--len] = '\0';
++              if (ether_line(p, &try, hostname) == 0 &&
++                  memcmp(&try, e, sizeof try) == 0) {
++                      (void)fclose(f);
++                      return 0;
++              }
++      }
++      (void)fclose(f);
++      errno = ENOENT;
++      return -1;
++}
++
++/*
++ * ether_hostton():
++ * This function interrogates the data base mapping host names to Ethernet
++ * addresses, /etc/ethers.
++ * It looks up the given host name and writes the associated Ethernet address
++ * into the structure passed.
++ * It returns zero if it finds the requested address and -1 if not.
++ */
++int ether_hostton(const char *hostname, struct ether_addr *e)
++{
++      FILE *f;
++      char *p;
++      size_t len;
++      char try[MAXHOSTNAMELEN + 1];
++
++      assert(hostname != NULL);
++      assert(e != NULL);
++
++      f = fopen(_PATH_ETHERS, "r");
++      if (f==NULL)
++              return -1;
++
++      while ((p = fgetln(f, &len)) != NULL) {
++              if (p[len - 1] != '\n')
++                      continue;               /* skip lines w/o \n */
++              p[--len] = '\0';
++              if (ether_line(p, e, try) == 0 && strcmp(hostname, try) == 0) {
++                      (void)fclose(f);
++                      return 0;
++              }
++      }
++      (void)fclose(f);
++      errno = ENOENT;
++      return -1;
++}
++
++/*
++ * ether_line():
++ * This function parses a line from the /etc/ethers file and fills in the passed
++ * ``struct ether_addr'' and character buffer with the Ethernet address and host
++ * name on the line.
++ * It returns zero if the line was successfully parsed and -1 if not.
++ */
++int ether_line(const char *l, struct ether_addr *e, char *hostname)
++{
++      unsigned int i[6];
++
++#define S2(arg) #arg
++#define S1(arg) S2(arg)
++      static const char fmt[] = " %x:%x:%x:%x:%x:%x"
++          " %" S1(MAXHOSTNAMELEN) "s\n";
++#undef S2
++#undef S1
++
++      assert(l != NULL);
++      assert(e != NULL);
++      assert(hostname != NULL);
++
++      if (sscanf(l, fmt,
++          &i[0], &i[1], &i[2], &i[3], &i[4], &i[5], hostname) == 7) {
++              e->ether_addr_octet[0] = (unsigned char)i[0];
++              e->ether_addr_octet[1] = (unsigned char)i[1];
++              e->ether_addr_octet[2] = (unsigned char)i[2];
++              e->ether_addr_octet[3] = (unsigned char)i[3];
++              e->ether_addr_octet[4] = (unsigned char)i[4];
++              e->ether_addr_octet[5] = (unsigned char)i[5];
++              return 0;
++      }
++      errno = EINVAL;
++      return -1;
++}
+-- 
+1.7.9.5
+
diff --git a/toolchain/musl/patches-0.9.8/002-no_mips_fpu.patch b/toolchain/musl/patches-0.9.8/002-no_mips_fpu.patch
new file mode 100644 (file)
index 0000000..92af325
--- /dev/null
@@ -0,0 +1,49 @@
+diff -urN musl-0.9.7/src/setjmp/mips/longjmp.s musl-0.9.7.new/src/setjmp/mips/longjmp.s
+--- musl-0.9.7/src/setjmp/mips/longjmp.s       2012-11-23 17:03:07.000000000 +0100
++++ musl-0.9.7.new/src/setjmp/mips/longjmp.s   2012-11-23 21:52:57.353668480 +0100
+@@ -10,21 +10,7 @@
+       bne     $2, $0, 1f
+       nop
+       addu    $2, $2, 1
+-1:    lw      $8,  48($4)
+-      ctc1    $8,  $31
+-      lwc1    $20, 56($4)
+-      lwc1    $21, 60($4)
+-      lwc1    $22, 64($4)
+-      lwc1    $23, 68($4)
+-      lwc1    $24, 72($4)
+-      lwc1    $25, 76($4)
+-      lwc1    $26, 80($4)
+-      lwc1    $27, 84($4)
+-      lwc1    $28, 88($4)
+-      lwc1    $29, 92($4)
+-      lwc1    $30, 96($4)
+-      lwc1    $31, 100($4)
+-      lw      $ra,  0($4)
++1:    lw      $ra,  0($4)
+       lw      $sp,  4($4)
+       lw      $16,  8($4)
+       lw      $17, 12($4)
+diff -urN musl-0.9.7/src/setjmp/mips/setjmp.s musl-0.9.7.new/src/setjmp/mips/setjmp.s
+--- musl-0.9.7/src/setjmp/mips/setjmp.s        2012-11-23 17:03:07.000000000 +0100
++++ musl-0.9.7.new/src/setjmp/mips/setjmp.s    2012-11-23 21:52:33.713667876 +0100
+@@ -21,19 +21,5 @@
+       sw      $23, 36($4)
+       sw      $30, 40($4)
+       sw      $28, 44($4)
+-      cfc1    $8, $31
+-      sw      $8,  48($4)
+-      swc1    $20, 56($4)
+-      swc1    $21, 60($4)
+-      swc1    $22, 64($4)
+-      swc1    $23, 68($4)
+-      swc1    $24, 72($4)
+-      swc1    $25, 76($4)
+-      swc1    $26, 80($4)
+-      swc1    $27, 84($4)
+-      swc1    $28, 88($4)
+-      swc1    $29, 92($4)
+-      swc1    $30, 96($4)
+-      swc1    $31, 100($4)
+       jr      $ra
+       li      $2, 0