diff options
Diffstat (limited to 'toolchain/musl/patches')
-rw-r--r-- | toolchain/musl/patches/001-git-2015-03-28.patch | 93 |
1 files changed, 93 insertions, 0 deletions
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 <bits/float.h> + ++#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; |