lang-bootstrap/05/diffs.txt

648 lines
20 KiB
Text
Raw Normal View History

2022-02-19 19:43:13 -08:00
---- arm-asm.c ----
---- arm-gen.c ----
---- arm-link.c ----
---- arm64-gen.c ----
---- arm64-link.c ----
---- c67-gen.c ----
---- c67-link.c ----
---- conftest.c ----
---- i386-asm.c ----
209c209
< 0x0f, /* g */
---
> 0x0f /* g */
238c238
< { 0, },
---
> { 0 }
252a253,254
> /* last operation */
> 0
1576,1578d1577
< default:
< reg = TOK_ASM_eax + reg;
< break;
1583a1583,1585
> default:
> reg = TOK_ASM_eax + reg;
> break;
---- i386-gen.c ----
---- i386-link.c ----
---- il-gen.c ----
---- libtcc.c ----
27c27
< ST_DATA int gnu_ext = 1;
---
> //ST_DATA int gnu_ext = 1;
30c30
< ST_DATA int tcc_ext = 1;
---
> //ST_DATA int tcc_ext = 1;
33c33
< ST_DATA struct TCCState *tcc_state;
---
> //ST_DATA struct TCCState *tcc_state;
820c820
< # if defined(__linux__)
---
> //# if defined(__linux__)
823c823
< # endif
---
> //# endif
1177c1177
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1552c1552
< { NULL, 0, 0 },
---
> { NULL, 0, 0 }
1555c1555
< static const FlagDef options_W[] = {
---
> static FlagDef options_W[] = {
1557,1562c1557,1561
< { offsetof(TCCState, warn_unsupported), 0, "unsupported" },
< { offsetof(TCCState, warn_write_strings), 0, "write-strings" },
< { offsetof(TCCState, warn_error), 0, "error" },
< { offsetof(TCCState, warn_gcc_compat), 0, "gcc-compat" },
< { offsetof(TCCState, warn_implicit_function_declaration), WD_ALL,
< "implicit-function-declaration" },
---
> { 0, 0, "unsupported" },
> { 0, 0, "write-strings" },
> { 0, 0, "error" },
> { 0, 0, "gcc-compat" },
> { 0, WD_ALL, "implicit-function-declaration" },
1566,1572c1565,1571
< static const FlagDef options_f[] = {
< { offsetof(TCCState, char_is_unsigned), 0, "unsigned-char" },
< { offsetof(TCCState, char_is_unsigned), FD_INVERT, "signed-char" },
< { offsetof(TCCState, nocommon), FD_INVERT, "common" },
< { offsetof(TCCState, leading_underscore), 0, "leading-underscore" },
< { offsetof(TCCState, ms_extensions), 0, "ms-extensions" },
< { offsetof(TCCState, dollars_in_identifiers), 0, "dollars-in-identifiers" },
---
> static FlagDef options_f[] = {
> { 0, 0, "unsigned-char" },
> { 0, FD_INVERT, "signed-char" },
> { 0, FD_INVERT, "common" },
> { 0, 0, "leading-underscore" },
> { 0, 0, "ms-extensions" },
> { 0, 0, "dollars-in-identifiers" },
1576,1577c1575,1576
< static const FlagDef options_m[] = {
< { offsetof(TCCState, ms_bitfields), 0, "ms-bitfields" },
---
> static FlagDef options_m[] = {
> { 0, 0, "ms-bitfields" },
1579c1578
< { offsetof(TCCState, nosse), FD_INVERT, "sse" },
---
> { 0, FD_INVERT, "sse" },
1582a1582,1599
>
> void _init_options(void) {
> options_W[1].offset = offsetof(TCCState, warn_unsupported);
> options_W[2].offset = offsetof(TCCState, warn_write_strings);
> options_W[3].offset = offsetof(TCCState, warn_error);
> options_W[4].offset = offsetof(TCCState, warn_gcc_compat);
> options_W[5].offset = offsetof(TCCState, warn_implicit_function_declaration);
> options_f[0].offset = offsetof(TCCState, char_is_unsigned);
> options_f[1].offset = offsetof(TCCState, char_is_unsigned);
> options_f[2].offset = offsetof(TCCState, nocommon);
> options_f[3].offset = offsetof(TCCState, leading_underscore);
> options_f[4].offset = offsetof(TCCState, ms_extensions);
> options_f[5].offset = offsetof(TCCState, dollars_in_identifiers);
> options_m[0].offset = offsetof(TCCState, ms_bitfields);
> #ifdef TCC_TARGET_X86_64
> options_m[1].offset = offsetof(TCCState, nosse);
> #endif
> }
---- tcc.c ----
239c239
< #else
---
> #elif 0
242a243,244
> #else
> return 0;
254c256
<
---
> _init_options();
---- tccasm.c ----
222d221
< default:
223a223
> default:
251d250
< default:
252a252
> default:
---- tcccoff.c ----
---- tccelf.c ----
28a29
> #if 0
43a45
> #endif
171,172c173,174
< && ELFW(ST_BIND)(sym->st_info) == STB_LOCAL)
< sym->st_info = ELFW(ST_INFO)(STB_GLOBAL, ELFW(ST_TYPE)(sym->st_info));
---
> && ELF64_ST_BIND(sym->st_info) == STB_LOCAL)
> sym->st_info = ELF64_ST_INFO(STB_GLOBAL, ELF64_ST_TYPE(sym->st_info));
183c185
< int n = ELFW(R_SYM)(rel->r_info) - first_sym;
---
> int n = ELF64_R_SYM(rel->r_info) - first_sym;
185c187
< rel->r_info = ELFW(R_INFO)(tr[n], ELFW(R_TYPE)(rel->r_info));
---
> rel->r_info = ELF64_R_INFO(tr[n], ELF64_R_TYPE(rel->r_info));
375c377
< if (ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
---
> if (ELF64_ST_BIND(sym->st_info) != STB_LOCAL) {
415c417
< if (ELFW(ST_BIND)(info) != STB_LOCAL) {
---
> if (ELF64_ST_BIND(info) != STB_LOCAL) {
497,499c499,501
< sym_bind = ELFW(ST_BIND)(info);
< sym_type = ELFW(ST_TYPE)(info);
< sym_vis = ELFW(ST_VISIBILITY)(other);
---
> sym_bind = ELF64_ST_BIND(info);
> sym_type = ELF64_ST_TYPE(info);
> sym_vis = ELF64_ST_VISIBILITY(other);
511c513
< esym_bind = ELFW(ST_BIND)(esym->st_info);
---
> esym_bind = ELF64_ST_BIND(esym->st_info);
514c516
< esym_vis = ELFW(ST_VISIBILITY)(esym->st_other);
---
> esym_vis = ELF64_ST_VISIBILITY(esym->st_other);
522c524
< esym->st_other = (esym->st_other & ~ELFW(ST_VISIBILITY)(-1))
---
> esym->st_other = (esym->st_other & ~ELF64_ST_VISIBILITY(-1))
560c562
< esym->st_info = ELFW(ST_INFO)(sym_bind, sym_type);
---
> esym->st_info = ELF64_ST_INFO(sym_bind, sym_type);
570c572
< ELFW(ST_INFO)(sym_bind, sym_type), other,
---
> ELF64_ST_INFO(sym_bind, sym_type), other,
598c600
< rel->r_info = ELFW(R_INFO)(symbol, type);
---
> rel->r_info = ELF64_R_INFO(symbol, type);
737c739
< if (ELFW(ST_BIND)(p->st_info) == STB_LOCAL) {
---
> if (ELF64_ST_BIND(p->st_info) == STB_LOCAL) {
750c752
< if (ELFW(ST_BIND)(p->st_info) != STB_LOCAL) {
---
> if (ELF64_ST_BIND(p->st_info) != STB_LOCAL) {
766,767c768,769
< sym_index = ELFW(R_SYM)(rel->r_info);
< type = ELFW(R_TYPE)(rel->r_info);
---
> sym_index = ELF64_R_SYM(rel->r_info);
> type = ELF64_R_TYPE(rel->r_info);
769c771
< rel->r_info = ELFW(R_INFO)(sym_index, type);
---
> rel->r_info = ELF64_R_INFO(sym_index, type);
810c812
< sym_bind = ELFW(ST_BIND)(sym->st_info);
---
> sym_bind = ELF64_ST_BIND(sym->st_info);
838c840
< sym_index = ELFW(R_SYM)(rel->r_info);
---
> sym_index = ELF64_R_SYM(rel->r_info);
840c842
< type = ELFW(R_TYPE)(rel->r_info);
---
> type = ELF64_R_TYPE(rel->r_info);
873,874c875,876
< sym_index = ELFW(R_SYM)(rel->r_info);
< type = ELFW(R_TYPE)(rel->r_info);
---
> sym_index = ELF64_R_SYM(rel->r_info);
> type = ELF64_R_TYPE(rel->r_info);
881c883
< rel->r_info = ELFW(R_INFO)(sym_index, R_386_RELATIVE);
---
> rel->r_info = ELF64_R_INFO(sym_index, R_386_RELATIVE);
916c918
< set_elf_sym(symtab_section, 0, 4, ELFW(ST_INFO)(STB_GLOBAL, STT_OBJECT),
---
> set_elf_sym(symtab_section, 0, 4, ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT),
963c965
< if (ELFW(ST_BIND)(sym->st_info) == STB_LOCAL) {
---
> if (ELF64_ST_BIND(sym->st_info) == STB_LOCAL) {
1008c1010
< ELFW(ST_INFO)(STB_GLOBAL, STT_FUNC), 0, s1->plt->sh_num, plt_name);
---
> ELF64_ST_INFO(STB_GLOBAL, STT_FUNC), 0, s1->plt->sh_num, plt_name);
1034c1036
< type = ELFW(R_TYPE)(rel->r_info);
---
> type = ELF64_R_TYPE(rel->r_info);
1036c1038
< sym_index = ELFW(R_SYM)(rel->r_info);
---
> sym_index = ELF64_R_SYM(rel->r_info);
1068,1070c1070,1072
< && (ELFW(ST_TYPE)(esym->st_info) == STT_FUNC
< || (ELFW(ST_TYPE)(esym->st_info) == STT_NOTYPE
< && ELFW(ST_TYPE)(sym->st_info) == STT_FUNC)))
---
> && (ELF64_ST_TYPE(esym->st_info) == STT_FUNC
> || (ELF64_ST_TYPE(esym->st_info) == STT_NOTYPE
> && ELF64_ST_TYPE(sym->st_info) == STT_FUNC)))
1083,1085c1085,1087
< (ELFW(ST_VISIBILITY)(sym->st_other) != STV_DEFAULT ||
< ELFW(ST_BIND)(sym->st_info) == STB_LOCAL)) {
< rel->r_info = ELFW(R_INFO)(sym_index, R_X86_64_PC32);
---
> (ELF64_ST_VISIBILITY(sym->st_other) != STV_DEFAULT ||
> ELF64_ST_BIND(sym->st_info) == STB_LOCAL)) {
> rel->r_info = ELF64_R_INFO(sym_index, R_X86_64_PC32);
1105c1107
< rel->r_info = ELFW(R_INFO)(attr->plt_sym, type);
---
> rel->r_info = ELF64_R_INFO(attr->plt_sym, type);
1140c1142
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1144c1146
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1168c1170
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1172c1174
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1221c1223
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1225c1227
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1229c1231
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1260c1262
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1265c1267
< ELFW(ST_INFO)(STB_GLOBAL, STT_NOTYPE), 0,
---
> ELF64_ST_INFO(STB_GLOBAL, STT_NOTYPE), 0,
1314c1316
< int sym_index = ELFW(R_SYM) (rel->r_info);
---
> int sym_index = ELF64_R_SYM (rel->r_info);
1344c1346
< switch (ELFW(R_TYPE) (rel->r_info)) {
---
> switch (ELF64_R_TYPE (rel->r_info)) {
1363,1364c1365,1366
< if (ELFW(R_TYPE)(rel->r_info) == R_RELATIVE) {
< int sym_index = ELFW(R_SYM) (rel->r_info);
---
> if (ELF64_R_TYPE(rel->r_info) == R_RELATIVE) {
> int sym_index = ELF64_R_SYM (rel->r_info);
1370c1372
< rel->r_info = ELFW(R_INFO)(0, R_RELATIVE);
---
> rel->r_info = ELF64_R_INFO(0, R_RELATIVE);
1400c1402
< type = ELFW(ST_TYPE)(esym->st_info);
---
> type = ELF64_ST_TYPE(esym->st_info);
1411c1413
< ELFW(ST_INFO)(STB_GLOBAL,STT_FUNC), 0, 0,
---
> ELF64_ST_INFO(STB_GLOBAL,STT_FUNC), 0, 0,
1428c1430
< if (ELFW(ST_BIND)(esym->st_info) == STB_WEAK) {
---
> if (ELF64_ST_BIND(esym->st_info) == STB_WEAK) {
1431c1433
< && (ELFW(ST_BIND)(dynsym->st_info) == STB_GLOBAL)) {
---
> && (ELF64_ST_BIND(dynsym->st_info) == STB_GLOBAL)) {
1450c1452
< if (ELFW(ST_BIND)(sym->st_info) == STB_WEAK ||
---
> if (ELF64_ST_BIND(sym->st_info) == STB_WEAK ||
1456c1458
< } else if (s1->rdynamic && ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
---
> } else if (s1->rdynamic && ELF64_ST_BIND(sym->st_info) != STB_LOCAL) {
1481c1483
< && ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
---
> && ELF64_ST_BIND(sym->st_info) != STB_LOCAL) {
1486c1488
< if (ELFW(ST_BIND)(esym->st_info) != STB_WEAK)
---
> if (ELF64_ST_BIND(esym->st_info) != STB_WEAK)
1503c1505
< if (ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
---
> if (ELF64_ST_BIND(sym->st_info) != STB_LOCAL) {
1909,1913d1910
< default:
< case TCC_OUTPUT_EXE:
< ehdr.e_type = ET_EXEC;
< ehdr.e_entry = get_elf_sym_addr(s1, "_start", 1);
< break;
1920a1918,1922
> case TCC_OUTPUT_EXE:
> default:
> ehdr.e_type = ET_EXEC;
> ehdr.e_entry = get_elf_sym_addr(s1, "_start", 1);
> break;
2481c2483
< if (ELFW(ST_BIND)(sym->st_info) != STB_LOCAL) {
---
> if (ELF64_ST_BIND(sym->st_info) != STB_LOCAL) {
2520,2521c2522,2523
< type = ELFW(R_TYPE)(rel->r_info);
< sym_index = ELFW(R_SYM)(rel->r_info);
---
> type = ELF64_R_TYPE(rel->r_info);
> sym_index = ELF64_R_SYM(rel->r_info);
2537c2539
< rel->r_info = ELFW(R_INFO)(sym_index, type);
---
> rel->r_info = ELF64_R_INFO(sym_index, type);
2766c2768
< sym_bind = ELFW(ST_BIND)(sym->st_info);
---
> sym_bind = ELF64_ST_BIND(sym->st_info);
---- tccgen.c ----
24a25,26
> #define NODATA_WANTED (nocode_wanted > 0) /* no static data output wanted either */
> #define STATIC_DATA_WANTED (nocode_wanted & 0xC0000000) /* only static data output */
31c33,39
< ST_DATA int rsym, anon_sym, ind, loc;
---
> static int local_scope;
> static int in_sizeof;
> static int section_sym;
>
> ST_DATA int vlas_in_scope; /* number of VLAs that are currently in scope */
> ST_DATA int vla_sp_root_loc; /* vla_sp_loc for SP before any VLAs were pushed */
> ST_DATA int vla_sp_loc; /* Pointer to variable holding location to store stack pointer on the stack when modifying stack pointer */
32a41,42
> #if 0
> ST_DATA int rsym, anon_sym, ind, loc;
42,48d51
< static int local_scope;
< static int in_sizeof;
< static int section_sym;
<
< ST_DATA int vlas_in_scope; /* number of VLAs that are currently in scope */
< ST_DATA int vla_sp_root_loc; /* vla_sp_loc for SP before any VLAs were pushed */
< ST_DATA int vla_sp_loc; /* Pointer to variable holding location to store stack pointer on the stack when modifying stack pointer */
54,55d56
< #define NODATA_WANTED (nocode_wanted > 0) /* no static data output wanted either */
< #define STATIC_DATA_WANTED (nocode_wanted & 0xC0000000) /* only static data output */
63,64c64,66
<
< ST_DATA CType char_pointer_type, func_old_type, int_type, size_type, ptrdiff_type;
---
> ST_DATA CType char_pointer_type, func_old_type, int_type, size_type;
> #endif
> ST_DATA CType ptrdiff_type;
161c163
< ELFW(ST_INFO)(STB_LOCAL, STT_SECTION), 0,
---
> ELF64_ST_INFO(STB_LOCAL, STT_SECTION), 0,
179c181
< ELFW(ST_INFO)(STB_LOCAL, STT_FILE), 0,
---
> ELF64_ST_INFO(STB_LOCAL, STT_FILE), 0,
302c304
< esym->st_other = (esym->st_other & ~ELFW(ST_VISIBILITY)(-1))
---
> esym->st_other = (esym->st_other & ~ELF64_ST_VISIBILITY(-1))
311c313
< old_sym_bind = ELFW(ST_BIND)(esym->st_info);
---
> old_sym_bind = ELF64_ST_BIND(esym->st_info);
313c315
< esym->st_info = ELFW(ST_INFO)(sym_bind, ELFW(ST_TYPE)(esym->st_info));
---
> esym->st_info = ELF64_ST_INFO(sym_bind, ELF64_ST_TYPE(esym->st_info));
410c412
< info = ELFW(ST_INFO)(sym_bind, sym_type);
---
> info = ELF64_ST_INFO(sym_bind, sym_type);
1904d1905
< default: l1 = gen_opic_sdiv(l1, l2); break;
1907a1909
> default: l1 = gen_opic_sdiv(l1, l2); break;
2458a2461,2470
> static long double negate_ld(long double d) {
> #if LDBL_MANT_DIG == 64
> register unsigned long long *p = (unsigned long long *)&d;
> p[1] ^= 1ul<<15;
> return *(long double *)p;
> #else
> return -d;
> #endif
> }
>
2500c2512
< vtop->c.ld = -(long double)-vtop->c.i;
---
> vtop->c.ld = negate_ld((long double)-vtop->c.i);
2505c2517
< vtop->c.ld = -(long double)-(uint32_t)vtop->c.i;
---
> vtop->c.ld = negate_ld((long double)-(uint32_t)vtop->c.i);
6517,6518c6529,6530
< ELFW(R_TYPE)(rel->r_info),
< ELFW(R_SYM)(rel->r_info),
---
> ELF64_R_TYPE(rel->r_info),
> ELF64_R_SYM(rel->r_info),
---- tccpe.c ----
---- tccpp.c ----
25a26
> #if 0
39a41
> #endif
62c64
< #define DEF(id, str) str "\0"
---
> #define DEF(id, str) str "\n"
1506c1508
< if (varg < TOK_IDENT)
---
> if (varg < TOK_IDENT) {
1508a1511
> }
1554c1557
< if (3 == spc)
---
> if (3 == spc) {
1556a1560
> }
3671c3675
< if (c == '\0')
---
> if (c == '\n')
---- tccrun.c ----
---- tcctools.c ----
---- x86_64-gen.c ----
111,141d110
< ST_DATA const int reg_classes[NB_REGS] = {
< /* eax */ RC_INT | RC_RAX,
< /* ecx */ RC_INT | RC_RCX,
< /* edx */ RC_INT | RC_RDX,
< 0,
< 0,
< 0,
< 0,
< 0,
< RC_R8,
< RC_R9,
< RC_R10,
< RC_R11,
< 0,
< 0,
< 0,
< 0,
< /* xmm0 */ RC_FLOAT | RC_XMM0,
< /* xmm1 */ RC_FLOAT | RC_XMM1,
< /* xmm2 */ RC_FLOAT | RC_XMM2,
< /* xmm3 */ RC_FLOAT | RC_XMM3,
< /* xmm4 */ RC_FLOAT | RC_XMM4,
< /* xmm5 */ RC_FLOAT | RC_XMM5,
< /* xmm6 an xmm7 are included so gv() can be used on them,
< but they are not tagged with RC_FLOAT because they are
< callee saved on Windows */
< RC_XMM6,
< RC_XMM7,
< /* st0 */ RC_ST0
< };
<
633c602
< greloca(cur_text_section, vtop->sym, ind + 1, R_X86_64_PLT32, (int)(vtop->c.i-4));
---
> greloca(cur_text_section, vtop->sym, ind + 1, R_X86_64_PC32, (int)(vtop->c.i-4)); // tcc's PLT code doesn't seem to work with static builds
1194a1164,1166
> enum __va_arg_type {
> __va_gen_reg, __va_float_reg, __va_stack
> };
1198,1200d1169
< enum __va_arg_type {
< __va_gen_reg, __va_float_reg, __va_stack
< };
1204d1172
< default: return __va_stack;
1206a1175
> default: return __va_stack;
1244c1213
< char _onstack[nb_args], *onstack = _onstack;
---
> char _onstack[/*nb_args*/1000/*fucking vlas*/], *onstack = _onstack;
1461,1465d1429
< default:
< stack_arg:
< seen_stack_size = ((seen_stack_size + align - 1) & -align) + size;
< break;
<
1476a1441,1445
> default:
> stack_arg:
> seen_stack_size = ((seen_stack_size + align - 1) & -align) + size;
> break;
>
1940,1943d1908
< default:
< case '+':
< a = 0;
< break;
1956a1922,1925
> case '+':
> default:
> a = 0;
> break;
2016,2019d1984
< default:
< case '+':
< a = 0;
< break;
2027a1993,1996
> break;
> case '+':
> default:
> a = 0;
---- x86_64-link.c ----
177c177
< sym_index = ELFW(R_SYM)(rel->r_info);
---
> sym_index = ELF64_R_SYM(rel->r_info);
185c185
< qrel->r_info = ELFW(R_INFO)(esym_index, R_X86_64_64);
---
> qrel->r_info = ELF64_R_INFO(esym_index, R_X86_64_64);
190c190
< qrel->r_info = ELFW(R_INFO)(0, R_X86_64_RELATIVE);
---
> qrel->r_info = ELF64_R_INFO(0, R_X86_64_RELATIVE);
202c202
< qrel->r_info = ELFW(R_INFO)(0, R_X86_64_RELATIVE);
---
> qrel->r_info = ELF64_R_INFO(0, R_X86_64_RELATIVE);
216c216
< qrel->r_info = ELFW(R_INFO)(esym_index, R_X86_64_PC32);
---
> qrel->r_info = ELF64_R_INFO(esym_index, R_X86_64_PC32);
249c249
< qrel->r_info = ELFW(R_INFO)(esym_index, R_X86_64_PC64);
---
> qrel->r_info = ELF64_R_INFO(esym_index, R_X86_64_PC64);
---- lib/armeabi.c ----
---- lib/armflush.c ----
---- lib/bcheck.c ----
---- lib/lib-arm64.c ----
---- lib/libtcc1.c ----
615a616,622
>
> static long double negate_ld(long double d) {
> register unsigned long long *p = (unsigned long long *)&d;
> p[1] ^= 1ul<<15;
> return *(long double *)p;
> }
>
619c626
< ret = __fixunsxfdi((s = a1 >= 0) ? a1 : -a1);
---
> ret = __fixunsxfdi((s = a1 >= 0) ? a1 : negate_ld(a1));
---- lib/va_list.c ----