summaryrefslogtreecommitdiffstats
path: root/toolchain/musl/patches/001-git-2015-03-28.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/musl/patches/001-git-2015-03-28.patch')
-rw-r--r--toolchain/musl/patches/001-git-2015-03-28.patch93
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;