diff options
Diffstat (limited to 'toolchain/musl/patches')
-rw-r--r-- | toolchain/musl/patches/900-iconv_size_hack.patch | 70 |
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" |