ziglang / zig

General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
https://ziglang.org
MIT License
33.27k stars 2.42k forks source link

`zig cc` on MinGW does not support the __thread specifier #15793

Open kassane opened 1 year ago

kassane commented 1 year ago

Zig Version

0.11.0-dev.3218+b873ce1e0

Steps to Reproduce and Observed Behavior

While testing CI, running zigcc over cmake for building custom qemu(unicorn-engine).

This error happened: https://github.com/kassane/unicorn/actions/runs/5032387218/jobs/9025992784#step:6:21

ERROR: Your compiler does not support the __thread specifier for 
       Thread-Local Storage (TLS). Please upgrade to a version that does.

Reference:

Expected Behavior

Normal building equals mingw-w64

build log https://github.com/unicorn-engine/unicorn/actions/runs/5032439210/jobs/9026068076#step:9:30 ```bash -- The C compiler identification is GNU 12.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: D:/a/_temp/msys64/mingw64/bin/cc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done Install prefix c:/Program Files/QEMU binary directory c:/Program Files/QEMU library directory c:/Program Files/QEMU/lib libexec directory c:/Program Files/QEMU/libexec include directory c:/Program Files/QEMU/include config directory c:/Program Files/QEMU local state directory queried at runtime Build directory /d/a/unicorn/unicorn Source path /d/a/unicorn/unicorn/qemu GIT binary git GIT submodules C compiler D:/a/_temp/msys64/mingw64/bin/cc.exe Host C compiler cc C++ compiler c++ Objective-C compiler D:/a/_temp/msys64/mingw64/bin/cc.exe ARFLAGS rv CFLAGS -g QEMU_CFLAGS -m64 -mcx16 -mthreads -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -std=gnu99 -DUNICORN_HAS_X86 -DUNICORN_HAS_ARM -DUNICORN_HAS_ARM64 -DUNICORN_HAS_M68K -DUNICORN_HAS_MIPS -DUNICORN_HAS_MIPSEL -DUNICORN_HAS_MIPS64 -DUNICORN_HAS_MIPS64EL -DUNICORN_HAS_SPARC -DUNICORN_HAS_PPC -DUNICORN_HAS_RISCV -DUNICORN_HAS_S390X -DUNICORN_HAS_TRICORE -fPIC -Wexpansion-to-defined -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong QEMU_LDFLAGS -Wl,--warn-common -m64 -DUNICORN_HAS_X86 -DUNICORN_HAS_ARM -DUNICORN_HAS_ARM64 -DUNICORN_HAS_M68K -DUNICORN_HAS_MIPS -DUNICORN_HAS_MIPSEL -DUNICORN_HAS_MIPS64 -DUNICORN_HAS_MIPS64EL -DUNICORN_HAS_SPARC -DUNICORN_HAS_PPC -DUNICORN_HAS_RISCV -DUNICORN_HAS_S390X -DUNICORN_HAS_TRICORE -fPIC -fstack-protector-strong make make install install host CPU x86_64 host big endian no target list x86_64-softmmu arm-softmmu aarch64-softmmu m68k-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu sparc-softmmu sparc64-softmmu ppc-softmmu ppc64-softmmu riscv32-softmmu riscv64-softmmu s390x-softmmu tricore-softmmu strip binaries yes static build no mingw32 support yes PIE no TCG support yes malloc trim support no membarrier no madvise no posix_madvise no posix_memalign no debug stack usage no tcmalloc support no jemalloc support no avx2 optimization yes avx512f optimization no -- Configuring done (15.9s) -- Generating done (0.1s) -- Build files have been written to: D:/a/unicorn/unicorn ```
Vexu commented 1 year ago

Clang and by extension zig cc support __thread so this looks like a problem with the check.