From 5809da3c05c26d6de3468594278a1f7ffd50a23f Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 28 Mar 2015 13:38:45 +0000 Subject: [PATCH] toolchain/musl: update to the latest version, adds aarch64 support Signed-off-by: Felix Fietkau SVN-Revision: 45091 --- toolchain/Config.in | 2 +- toolchain/musl/Config.version | 2 +- toolchain/musl/common.mk | 2 +- .../musl/patches/001-git-2015-03-28.patch | 93 +++++++++++++++++++ 4 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 toolchain/musl/patches/001-git-2015-03-28.patch diff --git a/toolchain/Config.in b/toolchain/Config.in index 436217052f..7b365e4c5e 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -228,7 +228,7 @@ choice config LIBC_USE_MUSL select USE_MUSL bool "Use musl" - depends on !(mips64 || mips64el || aarch64 || aarch64_be) + depends on !(mips64 || mips64el) endchoice diff --git a/toolchain/musl/Config.version b/toolchain/musl/Config.version index 88737e6fe5..57b5bd0df4 100644 --- a/toolchain/musl/Config.version +++ b/toolchain/musl/Config.version @@ -3,6 +3,6 @@ if USE_MUSL config MUSL_VERSION string depends on USE_MUSL - default "1.1.6" + default "1.1.7" endif diff --git a/toolchain/musl/common.mk b/toolchain/musl/common.mk index 2064a5e510..c67be2a9fb 100644 --- a/toolchain/musl/common.mk +++ b/toolchain/musl/common.mk @@ -11,7 +11,7 @@ PKG_NAME:=musl PKG_VERSION:=$(call qstrip,$(CONFIG_MUSL_VERSION)) PKG_RELEASE=1 -PKG_MD5SUM:=591e2d25a12ca1748e30ee0cf23f8b8a +PKG_MD5SUM:=6fe9fc4d99a7d321432b3e179c138d73 PKG_SOURCE_URL:=http://www.musl-libc.org/releases PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/toolchain/musl/patches/001-git-2015-03-28.patch b/toolchain/musl/patches/001-git-2015-03-28.patch new file mode 100644 index 0000000000..85f044183c --- /dev/null +++ b/toolchain/musl/patches/001-git-2015-03-28.patch @@ -0,0 +1,93 @@ +diff --git a/arch/aarch64/bits/alltypes.h.in b/arch/aarch64/bits/alltypes.h.in +index 99f1654..d56abda 100644 +--- a/arch/aarch64/bits/alltypes.h.in ++++ b/arch/aarch64/bits/alltypes.h.in +@@ -16,6 +16,8 @@ TYPEDEF unsigned int nlink_t; + TYPEDEF float float_t; + TYPEDEF double double_t; + ++TYPEDEF struct { long long __ll; long double __ld; } max_align_t; ++ + TYPEDEF long time_t; + TYPEDEF long suseconds_t; + +diff --git a/include/float.h b/include/float.h +index c6429d3..713aadb 100644 +--- a/include/float.h ++++ b/include/float.h +@@ -1,6 +1,10 @@ + #ifndef _FLOAT_H + #define _FLOAT_H + ++#ifdef __cplusplus ++extern "C" { ++#endif ++ + int __flt_rounds(void); + #define FLT_ROUNDS (__flt_rounds()) + +@@ -41,4 +45,8 @@ int __flt_rounds(void); + + #include + ++#ifdef __cplusplus ++} ++#endif ++ + #endif +diff --git a/src/network/inet_pton.c b/src/network/inet_pton.c +index 4496b47..d36c368 100644 +--- a/src/network/inet_pton.c ++++ b/src/network/inet_pton.c +@@ -39,14 +39,15 @@ int inet_pton(int af, const char *restrict s, void *restrict a0) + for (i=0; ; i++) { + if (s[0]==':' && brk<0) { + brk=i; +- ip[i]=0; ++ ip[i&7]=0; + if (!*++s) break; ++ if (i==7) return 0; + continue; + } + for (v=j=0; j<4 && (d=hexval(s[j]))>=0; j++) + v=16*v+d; + if (j==0) return 0; +- ip[i] = v; ++ ip[i&7] = v; + if (!s[j] && (brk>=0 || i==7)) break; + if (i==7) return 0; + if (s[j]!=':') { +diff --git a/src/regex/regcomp.c b/src/regex/regcomp.c +index 4cdaa1e..978dd87 100644 +--- a/src/regex/regcomp.c ++++ b/src/regex/regcomp.c +@@ -839,7 +839,7 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s) + s--; + break; + default: +- if (isdigit(*s)) { ++ if (!ere && (unsigned)*s-'1' < 9) { + /* back reference */ + int val = *s - '0'; + node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position); +@@ -847,7 +847,7 @@ static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s) + } else { + /* extension: accept unknown escaped char + as a literal */ +- node = tre_ast_new_literal(ctx->mem, *s, *s, ctx->position); ++ goto parse_literal; + } + ctx->position++; + } +@@ -1700,6 +1700,11 @@ tre_copy_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast, + *result = tre_ast_new_literal(mem, min, max, pos); + if (*result == NULL) + status = REG_ESPACE; ++ else { ++ tre_literal_t *p = (*result)->obj; ++ p->class = lit->class; ++ p->neg_classes = lit->neg_classes; ++ } + + if (pos > *max_pos) + *max_pos = pos; -- 2.30.2