Commit Graph
34717 Commits
Author SHA1 Message Date
Andrew Kelley 7025c06eb6 CLI: don't warn on missing host-detected directories 2024-10-29 09:27:38 -07:00
Julian NobleandAlex Rønne Petersen a03ab9ee01 std.os.windows.WriteFile: Map ERROR_NO_DATA to error.BrokenPipe instead of ERROR_BROKEN_PIPE (#21811)
It appears that ReadFile returns ERROR_BROKEN_PIPE for a broken pipe, but WriteFile returns ERROR_NO_DATA.

Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
2024-10-29 15:10:19 +01:00
Alex Rønne Petersen b5cafe223a Revert "cmake: Add a ZIG2_NO_RTLIB option for building zig2 without compiler-rt."
This reverts commit 3dd6456c0f.

We didn't end up using this after all.
2024-10-29 06:48:47 +01:00
JonathanHallstrom 5ce17ecfa7 remove unnecessary cast 2024-10-29 01:48:13 +01:00
Robin Voetter ae57f6fd07 dwarf: flush wip_nav after emitting anyerror type info
This caused a missing reference for u16 to not be emitted. Triggered
after removing something from start.zig which transitively added u16
to the module.
2024-10-28 20:39:37 +01:00
Alex Rønne Petersen d22049a987 Merge pull request #21693 from alexrp/wasm2c-endian
`wasm2c`: Add big endian support.
2024-10-28 17:52:10 +01:00
Bruno Franca dos Reis cdd8e82f0a closes #21824 (#21832) 2024-10-28 14:54:02 +00:00
Alex Rønne Petersen 4c336705b9 Merge pull request #21807 from Rexicon226/riscv-interupt
implement new interrupt calling conventions in the llvm backend
2024-10-28 13:51:11 +01:00
David Rubin 6415ff29d7 remove needs_mem_loc
This field isn't used anymore and was related to old RLS
2024-10-28 08:17:31 +00:00
mlugg 05b445a276 Sema: add missing coercion to bool for condbr_inline
Also, start using labeled switch statements when dispatching
maybe-runtime instructions like condbr to comptime-only variants like
condbr_inline.

This can't be merged until we get a zig1.wasm update due to #21385.

Resolves: #21405
2024-10-28 02:24:59 +00:00
Krzysztof Wolicki e9f3d18b57 Fix small TODO in tools/migrate_langref.zig (#21825) 2024-10-28 00:03:33 +00:00
David Rubin 93e5ea033c implement new interrupts in the llvm backend 2024-10-27 13:33:27 -07:00
Robin Voetter 6d8ee89721 fix compile error tests with unstable error sets
The print order of error sets depends on the order that the compiler
adds names to its internal state. These names can be anything, and
do not necessarily need to be from the same error set or be errors
at all. When the last remaining reference to builtin.cpu.arch was
removed in start.zig in 9b42bc1ce5, this order changed. Likely there
is something that has the name 'C' that is referenced somewhere
recursively from builtin.cpu.arch.

This all causes these few tests to fail, and hence the expected
order is simply updated now. Perhaps there is a better way to
add this.
2024-10-27 18:02:12 +01:00
Robin Voetter 49a067ccfe spirv: forbid merging logical pointers
Under some architecture/operating system combinations it is forbidden
to return a pointer from a merge, as these pointers must point to a
location at compile time. This adds a check for those cases when
returning a pointer from a block merge.
2024-10-27 16:31:45 +01:00
Robin Voetter 39013619b9 spirv: generate test entry points for vulkan 2024-10-27 15:19:57 +01:00
Robin Voetter 7c69231367 spirv: use PhysicalStorageBuffer64 for global pointers under vk
We can use real pointers with this storage class!!
2024-10-27 15:19:56 +01:00
Robin Voetter 6de456c179 spirv: fix up calling conventions for vulkan
* Fragment and Vertex CCs are only valid for SPIR-V when
  running under Vulkan.
* Emit GLCompute instead of Kernel for SPIR-V kernels.
2024-10-27 15:19:55 +01:00
Robin Voetter 9b42bc1ce5 spirv: start.zig support for vulkan
* Use builtin.zig_backend instead of builtin.cpu.arch, the latter
  does not yet compile under VK.
* Don't call regular _start for either opencl or vulkan. We might
  even want to disable these completely.
2024-10-27 14:20:52 +01:00
Alex Rønne Petersen 059f18855f std.Target: Make DynamicLinker.standard() much stricter.
Its semantics are now documented in terms of DynamicLinker.kind(os.tag).

The idea here is two-fold:

* The term "standard" actually means something; we shouldn't return a valid
  dynamic linker path for a triple for which it hasn't *actually* been
  standardized. That's just incorrect. For example, previously, this function
  would happily return a path for x86_64-linux-androideabi, csky-macos-gnu, or
  aarch64-hurd-msvc, and other such obvious nonsense.
* Callers that use the return value from this function to do host probing (such
  as std.zig.system.detectAbiAndDynamicLinker()) can now do so with greater
  confidence because DynamicLinker.standard() will eagerly reject nonsensical
  target triples.
2024-10-26 22:00:49 +02:00
Alex Rønne Petersen 8818dc6213 std.zig.system: Fix detectAbiAndDynamicLinker() for non-Linux/Hurd ELF hosts.
Since we exclude Abi.none from the list of ABIs to be tested, it means that
Abi.gnu, which happens to be the first in the list, always gets picked for hosts
where the dynamic linker path does not depend on the ABI component of the
triple. Such hosts include all the BSDs, Haiku, Serenity, Solaris, etc.

To fix this, use DynamicLinker.kind() to determine whether this whole exercise
even makes sense. If it doesn't, as is the case on every OS other than Linux and
Hurd, we'll just fall back to Abi.default() which will try to pick a sensible
default based on the arch and OS components. This detection logic still has
plenty of room for improvement, but is at least a notable step up from
confusingly detecting Abi.gnu ~everywhere.

Closes #9089.
2024-10-26 22:00:49 +02:00
Alex Rønne Petersen 27c85e5969 std.Target: Remove hasDynamicLinker() in favor of DynamicLinker.kind().
hasDynamicLinker() was just kind of lying in the case of Darwin platforms for
the benefit of std.zig.system.detectAbiAndDynamicLinker(). A better name would
have been hasElfDynamicLinker() or something. It also got the answer wrong for a
bunch of platforms that don't actually use ELF. Anyway, this was clearly the
wrong layer to do this at, so remove this function and instead use
DynamicLinker.kind() + an isDarwin() check in detectAbiAndDynamicLinker().
2024-10-26 22:00:49 +02:00
Alex Rønne Petersen f02d25d883 std.Target: Implement DynamicLinker.kind() function.
This helps callers of DynamicLinker.standard() make informed decisions about
the usefulness of the returned value.
2024-10-26 22:00:49 +02:00
Alex Rønne Petersen bf31c9505c test: Add some missing android, haiku, illumos, solaris triples to llvm_targets. 2024-10-26 22:00:49 +02:00
Alex Rønne Petersen c2e6be97ff wasm2c: Add an optional endianness command line argument.
If not given, endianness is inferred from the target that wasm2c is built for.
2024-10-26 22:00:09 +02:00
Alex Rønne Petersen 5cb45b6855 wasm2c: Add big endian support.
I took a slightly unconventional approach to detecting endianness here. We have
no compiler/platform-specific preprocessor checks in the stage1 C code today,
and I think that's a property worth maintaining.
2024-10-26 22:00:09 +02:00
Alex Rønne Petersen 79717740bd std.Target: Pick better baseline CPU models for darwin and ps4/ps5 on x86_64.
These are sourced from getX86TargetCPU() in Clang.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen ea987faa85 std.Target: Use explicit baseline CPU models for bpf, m68k, msp430, and xcore.
This makes no difference presently, but if LLVM ever starts modeling features
for these, we would not get them by default for our baseline if we use the
generic model.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen e26b64a87d std.Target: Use mips32r2/mips64r2 as the baseline CPU models for mips/mips64.
This matches Clang's defaults. That also means these CPU models tend to get more
testing, so they're a safer baseline choice. Anecdotally, the oldest MIPS
hardware that I've seen anyone run Zig on was also r2.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen 385f586605 std.Target: Use sm_52 as the baseline CPU model for nvptx.
This matches Clang's default.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen 2d22cc9f61 std.Target: Use gfx906 as the baseline CPU model for amdgcn.
This matches Clang's default.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen 5b7eba95ba std.Target: Use gfx600 as the generic CPU model for amdgcn.
This is the first model that was actually in the GCN family.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen 51dc4b0549 std.Target: Use ppc64 as the generic CPU model for powerpc64le.
ppc64le remains the baseline CPU model. Note that there's nothing about little
endian, 64-bit PowerPC that requires the features in the ppc64le model; the
reason it exists is that 64-bit PowerPC wasn't really used in little endian mode
prior to those features being commonplace. That makes the ppc64le model a good
baseline model, but not the right choice for a generic model.
2024-10-26 21:59:59 +02:00
Alex Rønne Petersen 8062bdba9a std.Target: Use avr1 as the generic CPU model for avr.
avr2 remains the baseline CPU model.
2024-10-26 21:59:58 +02:00
Alex Rønne Petersen c50fb58307 std.Target: Use v11 as the baseline CPU model for lanai. 2024-10-26 21:59:58 +02:00
Alex Rønne Petersen 73b4cb6314 std.Target: Use ck810 as the baseline CPU model for csky. 2024-10-26 21:59:58 +02:00
Alex Rønne Petersen 8282f3be96 std.Target: Add doc comments for Cpu.Arch.generic() and baseline(). 2024-10-26 21:59:58 +02:00
Alex Rønne Petersen 4b78dbe068 Compilation: Omit Clang CPU model flags for some targets. 2024-10-26 21:59:58 +02:00
Xavier Bouchoux 6a364b4a5e link/Elf.zig: ensure capacity before appending linker args.
fixes e567abb339 "rework linker inputs"
closes https://github.com/ziglang/zig/issues/21801
2024-10-26 19:46:40 +02:00
Nelson Crosby b1361f237a Fix up Linux xattr syscalls
fgetxattr now doesn't accidentally call lgetxattr,
and argument types are more consistent.
2024-10-26 13:53:07 +02:00
David Rubin b122b9fbe0 remove default field for RiscvInterruptOptions.Mode 2024-10-25 20:00:43 -07:00
Matthew Lugg 4adf63aefc Merge pull request #21796 from Rexicon226/var-args
fix callconv resolution for varargs
2024-10-25 18:31:01 +01:00
llogick 985b13934d Remove @setAlignStack from the langref 2024-10-25 15:13:41 +02:00
Andrew Kelley b8795b4d02 Merge pull request #21795 from ziglang/kqueue-watch
Build Runner: Implement File System Watching for kqueue
2024-10-25 04:00:26 -07:00
Alex Rønne Petersen 03d0e296cb Merge pull request #21710 from alexrp/function-alignment
Some improvements to the compiler's handling of function alignment
2024-10-25 11:10:28 +02:00
Linus Groh 5769592cdd std.os.uefi: Fix calling convention build error
```
std/os/uefi/protocol/simple_text_input.zig:10:63: error: no field named 'Win64' in enum '@typeInfo(builtin.CallingConvention).@"union".tag_type.?'
std/builtin.zig:169:31: note: enum declared here
std/os/uefi/protocol/simple_text_output.zig:9:64: error: no field named 'Win64' in enum '@typeInfo(builtin.CallingConvention).@"union".tag_type.?'
std/builtin.zig:169:31: note: enum declared here
std/os/uefi/tables/runtime_services.zig:26:86: error: no field named 'Win64' in enum '@typeInfo(builtin.CallingConvention).@"union".tag_type.?'
std/builtin.zig:169:31: note: enum declared here
```
2024-10-25 10:45:55 +02:00
David Rubin 97e584a6b9 use cCallingConvention instead of .C in Sema
using `.C` in Sema is incorrect since it will be resolved under the target that Zig was compiled with, not the target build configuration. This is easily solved by just calling `cCallingConvention` on the target to resolve it.
2024-10-25 00:08:41 -07:00
Andrew Kelley cc671a2d40 std.Build.Watch: implement removing watches for kqueue 2024-10-24 23:31:56 -07:00
David Rubin 0d83304228 remove leak from linker 2024-10-24 23:23:15 -07:00
Andrew Kelley 8819d8b061 std.Build.Watch: limit to one switch on os tag
DRY
2024-10-24 16:29:02 -07:00
Andrew Kelley 7a46ba73ce implement --watch for kqueue
it doesn't detect and remove no longer watched things yet

it also isn't aware of any file names reported by kqueue. I'm unsure if
that functionality exists.
2024-10-24 16:24:56 -07:00