16911 Commits

Author SHA1 Message Date
DilithiumNitrate
91e117697a
Fix hasRuntimeBitsAdvanced lazy case for pointers and optionals
As suggested by mlugg, always returns `error.NeedLazy`. If this has a
performance impact, it could be replaced by adding lazy handling to
`comptimeOnlyAdvanced`.
2023-10-29 21:12:43 +00:00
Jakub Konka
71dfea1f17 coff: implement exporting anon decls 2023-10-29 18:55:58 +01:00
Jakub Konka
a7a95ce9c4 macho: implement exporting anon decls 2023-10-29 18:55:58 +01:00
Jakub Konka
eaca72534c elf: implement exporting anon decls 2023-10-29 18:55:58 +01:00
Jakub Konka
209fd8cb93 elf: add partial implementation of exporting anon decls 2023-10-29 18:55:58 +01:00
Jacob Young
f6f2708d82 x86_64: fix compiler rt test failures 2023-10-29 07:20:36 -04:00
Jacob Young
1fecf86ebf x86_64: refactor codegen memory repr
Also refactor linker reloc lowering.
2023-10-29 05:17:43 -04:00
Jacob Young
f133bcba9f x86_64: fix hazard between pic call and sysv cc 2023-10-29 05:15:35 -04:00
Jakub Konka
13c7aa5fef
Merge pull request #17727 from ziglang/elf-memory-deferred
x86_64+elf: do not pass hardcoded memory addresses in prep for build-obj
2023-10-28 19:41:07 +02:00
Andrew Kelley
62f45b802c make Zir.Inst.Index typed
This commit starts by making Zir.Inst.Index a nonexhaustive enum rather
than a u32 alias for type safety purposes, and the rest of the changes
are needed to get everything compiling again.
2023-10-28 10:14:15 -07:00
Andrew Kelley
256ab68a97 frontend: make Decl.zir_decl_index typed
This field had the wrong type. It's not a `Zir.Inst.Index`, it's
actually a `Zir.OptionalExtraIndex`. Also, the former is currently
aliased to `u32` while the latter is a nonexhaustive enum that gives us
more type checking.

This commit is preparation for making this field non-optional. Now it
can be changed to `Zir.ExtraIndex` and then the compiler will point out
all the places that the non-optional assumption is being violated.
2023-10-28 04:30:27 -04:00
Jacob Young
12b5c8156a x86_64: handle .load_symbol in more places 2023-10-28 03:51:05 -04:00
Jakub Konka
20a3664153 x86_64: handle .load_symbol in mul_with_overflow and mul_div 2023-10-28 03:48:18 -04:00
Jakub Konka
396003fb06 x86_64: assert fixes are ._ for linker_reloc 2023-10-28 03:48:18 -04:00
Jakub Konka
493f786b38 x86_64: refactor Lower.zig 2023-10-28 03:48:18 -04:00
Jakub Konka
df7db0c4be x86_64: pass behavior tests PIC and non-PIC 2023-10-28 03:48:18 -04:00
Jakub Konka
2be1250f24 x86_64: no more load/lea_symbol weirdness 2023-10-28 03:48:18 -04:00
Jakub Konka
0d00b7c585 elf: set needs_got on generated extern vars 2023-10-28 03:48:18 -04:00
Jakub Konka
9a1fbb2705 x86_64: rename load/lea_memory to load/lea_symbol 2023-10-28 03:48:18 -04:00
Jakub Konka
a6a10d9c2b x86_64: do not hardcode memory passed by Elf linker 2023-10-28 03:48:18 -04:00
mlugg
c1c9bc0c41 Sema: do not assume switch item indices align with union field indices
Resolves: #17754
2023-10-28 06:30:28 +01:00
Jacob Young
a440cf6d44 x86_64: fix c abi test failures 2023-10-27 23:31:20 -04:00
Andrew Kelley
1c85b0acbb
Merge pull request #17735 from ziglang/export-anon
link: support exporting constant values without a Decl
2023-10-27 15:20:13 -04:00
Jacob Young
b0cf620fe3 x86_64: fix cond_br 2023-10-27 03:33:49 -04:00
Jacob Young
42bca3e2ee x86_64: fix @memset 2023-10-27 01:40:27 -04:00
Jacob Young
434a7db986 x86_64: add missing spill 2023-10-27 01:40:27 -04:00
Andrew Kelley
4bc88dd116 link: support exporting constant values without a Decl
The main motivating change here is to prevent the creation of a fake
Decl object by the frontend in order to `@export()` a value.

Instead, `link.updateDeclExports` is renamed to `link.updateExports` and
accepts a tagged union which can be either a Decl.Index or a
InternPool.Index.
2023-10-26 20:32:16 -07:00
Jacob Young
6ad22cd964 x86_64: add missing spills 2023-10-26 22:35:38 -04:00
Jacob Young
98cd378208 x86_64: fix behavior of getValue
Old behavior renamed to `getValueIfFree`.
2023-10-26 21:45:58 -04:00
Jacob Young
3faa4ea959 main: enable debug modes in build scripts 2023-10-26 21:45:57 -04:00
Jacob Young
5e83441096 x86_64: implement @divFloor and @mod for i128 2023-10-26 21:45:57 -04:00
Andrew Kelley
ba9e38847a sema: remove source location logic in zirExportValue
`.unneeded` source location should never be passed when the source
location is in fact available.
2023-10-26 17:12:17 -07:00
Andrew Kelley
cf9735a5e0 link: Coff, MachO, and Wasm all had the same UAF bug 2023-10-25 20:24:05 -07:00
Andrew Kelley
098a07dc45 link.Elf: fix UAF in lowerAnonDecl
The main problem being fixed here is there was a getOrPut() that held on
to a reference to the value pointer too long, and meanwhile the call to
`lowerConst` ended up being recursive and mutating the hash map,
invoking undefined behavior.

caught via #17719
2023-10-25 19:57:02 -07:00
Andrew Kelley
cbcef2d806 C backend: remove some @as 2023-10-25 19:57:02 -07:00
Jacob Young
51f7e5412a cbe: update DeclGen.decl_index to support anon decls 2023-10-25 19:57:02 -07:00
Andrew Kelley
405ba2680f Sema: replace refValue with simpler implementation
Move some more anon decls to the new mechanism
2023-10-25 19:57:02 -07:00
Andrew Kelley
03b473d21b Sema: rework addConstantMaybeRef
and add anonDeclRef and migrate some anon decls to it
2023-10-25 19:57:02 -07:00
Andrew Kelley
f841b265c5 Sema: move @typeInfo anon decls to new mechanism 2023-10-25 19:57:02 -07:00
Andrew Kelley
426b5982d7 Sema: move some TODO comments to an issue
Tracking issue: #17689
2023-10-25 19:57:02 -07:00
Andrew Kelley
7a106645fd Sema: migrate @src to new anon decl mechanism 2023-10-25 19:57:02 -07:00
Jacob Young
ed00afbc4c Coff: fix use after free 2023-10-25 12:23:21 -04:00
Jacob Young
b55377a5ab x86_64: pass more tests
* 128-bit integer multiplication with overflow
 * more instruction encodings used by std inline asm
 * implement the `try_ptr` air instruction
 * follow correct stack frame abi
 * enable full panic handler
 * enable stack traces
2023-10-25 04:28:30 -04:00
Jakub Konka
030da45c8e elf: estimate max number of phdrs that can be emitted 2023-10-25 04:27:44 -04:00
Jakub Konka
e1248b693f elf: allocate PHDR table always succeeding the EHDR
While this is a less flexible approach to being able to
allocated the PHDR anywhere in file, it is sadly generally expected
by the tooling in the wild.
2023-10-25 04:27:44 -04:00
Jakub Konka
0a04bd87ba elf: use std.math.maxInt(u64) as signal that shdr/phdr not allocated yet 2023-10-25 04:27:44 -04:00
Andrew Kelley
22a6a5d93f
Merge pull request #17691 from mlugg/no-interned-runtime-value
Remove `InternPool.Key.runtime_value`, clean up Sema value resolution functions
2023-10-24 14:57:55 -04:00
Tobias Simetsreiter
d1230842ac add Fetch support for short compressed tar ext
these short extensions are common in a lot of
places, and should be treated like their double
versions
2023-10-24 13:49:28 -04:00
Jakub Konka
8087ec8e8c elf: improve parsing of ld scripts and actually test linking against them 2023-10-24 19:03:00 +02:00
mlugg
f2814caaf0
Sema: don't allow undef values through resolveDefinedValue in typeof block
This logic is not correct in most cases. If any instruction needs to
operate with different semantics within `@TypeOf`, it should be made to
do so explicitly.

This broke a line in `std.mem`: I have opted to fix this in std for now,
since as far as I know it's not yet been discussed which operations (if
any) should be special-cased like this within `@TypeOf`.
2023-10-24 14:28:34 +01:00