aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain/musl/patches
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/musl/patches')
-rw-r--r--toolchain/musl/patches/900-iconv_size_hack.patch70
1 files changed, 51 insertions, 19 deletions
diff --git a/toolchain/musl/patches/900-iconv_size_hack.patch b/toolchain/musl/patches/900-iconv_size_hack.patch
index db18fceb17..41cff5b033 100644
--- a/toolchain/musl/patches/900-iconv_size_hack.patch
+++ b/toolchain/musl/patches/900-iconv_size_hack.patch
@@ -1,14 +1,14 @@
--- a/src/locale/iconv.c
+++ b/src/locale/iconv.c
-@@ -39,6 +39,7 @@ static const unsigned char charmaps[] =
+@@ -42,6 +42,7 @@ static const unsigned char charmaps[] =
"ucs4\0ucs4be\0utf32\0utf32be\0\0\300"
"ucs4le\0utf32le\0\0\303"
"ascii\0usascii\0iso646\0iso646us\0\0\307"
+#ifdef FULL_ICONV
"eucjp\0\0\320"
"shiftjis\0sjis\0\0\321"
- "gb18030\0\0\330"
-@@ -46,6 +47,7 @@ static const unsigned char charmaps[] =
+ "iso2022jp\0\0\322"
+@@ -50,6 +51,7 @@ static const unsigned char charmaps[] =
"gb2312\0\0\332"
"big5\0bigfive\0cp950\0big5hkscs\0\0\340"
"euckr\0ksc5601\0ksx1001\0cp949\0\0\350"
@@ -16,7 +16,7 @@
#include "codepages.h"
;
-@@ -53,6 +55,7 @@ static const unsigned short legacy_chars
+@@ -60,6 +62,7 @@ static const unsigned short legacy_chars
#include "legacychars.h"
};
@@ -24,45 +24,77 @@
static const unsigned short jis0208[84][94] = {
#include "jis0208.h"
};
-@@ -72,6 +75,7 @@ static const unsigned short hkscs[] = {
+@@ -79,6 +82,7 @@ static const unsigned short hkscs[] = {
static const unsigned short ksc[93][94] = {
#include "ksc.h"
};
+#endif
- static int fuzzycmp(const unsigned char *a, const unsigned char *b)
+ static const unsigned short rev_jis[] = {
+ #include "revjis.h"
+@@ -196,6 +200,7 @@ static unsigned legacy_map(const unsigne
+ return x < 256 ? x : legacy_chars[x-256];
+ }
+
++#ifdef FULL_ICONV
+ static unsigned uni_to_jis(unsigned c)
+ {
+ unsigned nel = sizeof rev_jis / sizeof *rev_jis;
+@@ -214,6 +219,7 @@ static unsigned uni_to_jis(unsigned c)
+ }
+ }
+ }
++#endif
+
+ size_t iconv(iconv_t cd, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb)
{
-@@ -224,6 +228,7 @@ size_t iconv(iconv_t cd0, char **restric
+@@ -285,6 +291,7 @@ size_t iconv(iconv_t cd, char **restrict
c = ((c-0xd7c0)<<10) + (d-0xdc00);
}
break;
+#ifdef FULL_ICONV
case SHIFT_JIS:
+ if (c < 128) break;
if (c-0xa1 <= 0xdf-0xa1) {
- c += 0xff61-0xa1;
-@@ -370,6 +375,7 @@ size_t iconv(iconv_t cd0, char **restric
+@@ -476,6 +483,7 @@ size_t iconv(iconv_t cd, char **restrict
c = ksc[c][d];
if (!c) goto ilseq;
break;
+#endif
default:
- if (c < 128+type) break;
+ if (!c) break;
c = legacy_map(map, c);
+@@ -516,6 +524,7 @@ size_t iconv(iconv_t cd, char **restrict
+ }
+ }
+ goto subst;
++#ifdef FULL_ICONV
+ case SHIFT_JIS:
+ if (c < 128) goto revout;
+ if (c == 0xa5) {
+@@ -589,6 +598,7 @@ size_t iconv(iconv_t cd, char **restrict
+ *(*out)++ = 'B';
+ *outb -= 8;
+ break;
++#endif
+ case UCS2BE:
+ case UCS2LE:
+ case UTF_16BE:
--- a/src/locale/codepages.h
+++ b/src/locale/codepages.h
-@@ -118,6 +118,7 @@
- "\0\0\0\100\15\0\344\0\0\0\0\0\0\0\0\0\0\0\0\0\103\270\1\0\0\0\340\1\200\40"
- "\230\0\0\0\0\0\44\341\12\0"
+@@ -129,6 +129,7 @@
+ "\340\204\43\316\100\344\34\144\316\71\350\244\243\316\72\354\264\343\316\73"
+ "\21\361\44\317\74\364\30\145\17\124\146\345\243\317\76\374\134\304\327\77"
+#ifdef FULL_ICONV
"cp1250\0"
"windows1250\0"
- "\0\0"
-@@ -214,6 +215,7 @@
- "\0\0\0\0\0\0\0\0\0\15\0\0\0\0\0\0\0\0\0\0\266\0\0\0\0\102\0\220\13\0"
- "\0\234\2\0\0\0\0\0\0\0\0\244\202\13\0\0\0\0\100\15\0\0\0\0\0\0\0\0\0\0"
- "\267\0\0\0\0\103\0\240\13\0\0\240\2\0\0\0\0\0\0\0\0\250\62\45\0"
+ "\0\40"
+@@ -239,6 +240,7 @@
+ "\20\105\163\330\64\324\324\145\315\65\330\144\243\315\66\334\334\145\330\67"
+ "\340\204\43\316\100\344\224\143\316\71\350\244\243\316\72\205\265\343\316\73"
+ "\21\305\203\330\74\364\330\145\317\75\370\344\243\317\76\374\340\65\362\77"
+#endif
"koi8r\0"
- "\0\0"
+ "\0\40"