From 045632a74380192fce3af7071a431344a569b255 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 24 Mar 2024 03:14:25 -0700 Subject: [PATCH] Make fixupobj work on Windows This fixes a regression with recent cosmocc toolchain releases that causes fixupobj to fail with "ifunc ftruncate #1 failed" on Windows --- build/bootstrap/fixupobj | Bin 210366 -> 246854 bytes libc/nexgen32e/x86compiler.h | 6 +++++ libc/nexgen32e/x86feature.h | 1 + tool/build/fixupobj.c | 36 ++++++++++++++++++------------ tool/emacs/cosmo-c-types.el | 8 ++++++- tool/emacs/cosmo-cpp-constants.el | 1 + tool/viz/cpuid.c | 1 + 7 files changed, 38 insertions(+), 15 deletions(-) diff --git a/build/bootstrap/fixupobj b/build/bootstrap/fixupobj index 9df51566fa5b2edd343199361da8d293e4283c33..f63a77fee94fd03690ed4d255c395f4544786b18 100755 GIT binary patch delta 75153 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 ISUu+d0+3Xq0{{R3 diff --git a/libc/nexgen32e/x86compiler.h b/libc/nexgen32e/x86compiler.h index 1c63cf62b..437749b3c 100644 --- a/libc/nexgen32e/x86compiler.h +++ b/libc/nexgen32e/x86compiler.h @@ -61,6 +61,12 @@ #define _X86_CC_AVX512BF16 0 #endif +#ifdef __AVX512FP16__ +#define _X86_CC_AVX512FP16 1 +#else +#define _X86_CC_AVX512FP16 0 +#endif + #ifdef __AVX512VBMI__ #define _X86_CC_AVX512VBMI 1 #else diff --git a/libc/nexgen32e/x86feature.h b/libc/nexgen32e/x86feature.h index c9cc4a39c..b11c84eb5 100644 --- a/libc/nexgen32e/x86feature.h +++ b/libc/nexgen32e/x86feature.h @@ -42,6 +42,7 @@ #define X86_AVX512VL 7H, EBX, 31, 0 #define X86_AVX512_4FMAPS 7H, EDX, 3, 0 #define X86_AVX512_4VNNIW 7H, EDX, 2, _X86_CC_AVX5124VNNIW +#define X86_AVX512_FP16 7H, EDX, 23, _X86_CC_AVX512FP16 #define X86_AVX512_BF16 7H, EAX, 5, _X86_CC_AVX512BF16 #define X86_AVX512_BITALG 7H, ECX, 12, 0 #define X86_AVX512_VBMI2 7H, ECX, 6, 0 diff --git a/tool/build/fixupobj.c b/tool/build/fixupobj.c index f86d429dd..fbe9fbc95 100644 --- a/tool/build/fixupobj.c +++ b/tool/build/fixupobj.c @@ -33,6 +33,7 @@ #include "libc/log/log.h" #include "libc/macros.internal.h" #include "libc/mem/gc.h" +#include "libc/mem/mem.h" #include "libc/runtime/runtime.h" #include "libc/serialize.h" #include "libc/stdalign.internal.h" @@ -71,6 +72,21 @@ static wontreturn void Die(const char *reason) { exit(1); } +static wontreturn void DieOom(void) { + Die("out of memory"); +} + +static void *Malloc(size_t n) { + void *p; + if (!(p = malloc(n))) DieOom(); + return p; +} + +static void *Realloc(void *p, size_t n) { + if (!(p = realloc(p, n))) DieOom(); + return p; +} + static wontreturn void SysExit(const char *func) { const char *errstr; if (!(errstr = _strerdoc(errno))) errstr = "EUNKNOWN"; @@ -515,10 +531,7 @@ static void GenerateIfuncInit(void) { // remap file so it has more space if (elf->e_shnum + 2 > 65535) Die("too many sections"); size_t reserve_size = esize + 32 * 1024 * 1024; - if (ftruncate(fildes, reserve_size)) SysExit("ifunc ftruncate #1"); - elf = mmap((char *)elf, reserve_size, PROT_READ | PROT_WRITE, - MAP_FIXED | MAP_SHARED, fildes, 0); - if (elf == MAP_FAILED) SysExit("ifunc mmap"); + elf = Realloc(elf, reserve_size); // duplicate section name strings table to end of file Elf64_Shdr *shdrstr_shdr = (Elf64_Shdr *)((char *)elf + elf->e_shoff + @@ -591,8 +604,6 @@ static void GenerateIfuncInit(void) { memcpy((char *)elf + esize, code, code_i); esize += code_i; unassert(esize == code_shdr->sh_offset + code_shdr->sh_size); - - if (ftruncate(fildes, esize)) SysExit("ifunc ftruncate #1"); } // when __attribute__((__target_clones__(...))) is used, static binaries @@ -622,9 +633,9 @@ static void FixupObject(void) { SysExit("lseek"); } if (esize) { - if ((elf = mmap((void *)0x032100000000, esize, PROT_READ | PROT_WRITE, - MAP_FIXED | MAP_SHARED, fildes, 0)) == MAP_FAILED) { - SysExit("mmap"); + elf = Malloc(esize); + if (pread(fildes, elf, esize, 0) != esize) { + SysExit("pread"); } if (!IsElf64Binary(elf, esize)) { Die("not an elf64 binary"); @@ -654,13 +665,10 @@ static void FixupObject(void) { PurgeIfuncSections(); RelinkZipFiles(); } - if (msync(elf, esize, MS_ASYNC | MS_INVALIDATE)) { - SysExit("msync"); + if (pwrite(fildes, elf, esize, 0) != esize) { + SysExit("pwrite"); } } - if (munmap(elf, esize)) { - SysExit("munmap"); - } } if (close(fildes)) { SysExit("close"); diff --git a/tool/emacs/cosmo-c-types.el b/tool/emacs/cosmo-c-types.el index 023760295..d421b5790 100644 --- a/tool/emacs/cosmo-c-types.el +++ b/tool/emacs/cosmo-c-types.el @@ -220,7 +220,13 @@ "__m256i" "__m256_u" "__m256d_u" - "__m256i_u")) + "__m256i_u" + "__m512" + "__m512d" + "__m512i" + "__m512_u" + "__m512d_u" + "__m512i_u")) ) (concat "\\_<" diff --git a/tool/emacs/cosmo-cpp-constants.el b/tool/emacs/cosmo-cpp-constants.el index e028b685e..4d73b8aad 100644 --- a/tool/emacs/cosmo-cpp-constants.el +++ b/tool/emacs/cosmo-cpp-constants.el @@ -55,6 +55,7 @@ "__AVX512CD__" "__AVX512DQ__" "__AVX512BF16__" + "__AVX512FP16__" "__AVX512IFMA__" "__AVX5124VNNIW__" "__AVX512VBMI__" diff --git a/tool/viz/cpuid.c b/tool/viz/cpuid.c index ab654d9a6..e1eb63b4a 100644 --- a/tool/viz/cpuid.c +++ b/tool/viz/cpuid.c @@ -188,6 +188,7 @@ int main(int argc, char *argv[]) { CANIUSE(AVX512VL); CANIUSE(AVX512_4FMAPS); CANIUSE(AVX512_4VNNIW); + CANIUSE(AVX512_FP16); CANIUSE(AVX512_BF16); CANIUSE(AVX512_BITALG); CANIUSE(AVX512_VBMI2);