Commit Graph

13924 Commits

Author SHA1 Message Date
Jakub Konka
abeb0e3ea4 test/link/macho: test force-loading objects containing ObjC from archives 2024-01-24 12:34:40 +01:00
Jakub Konka
8105390fff macho: remove all rpath parsing from the linker 2024-01-24 12:34:40 +01:00
Jakub Konka
b1cf6d3103 macho: print all definitions of symbols when printing duplicates 2024-01-24 12:34:40 +01:00
Jakub Konka
b038bcb93b test/link/macho: test -r mode 2024-01-24 12:34:40 +01:00
Jakub Konka
56303d770e macho: fix invalid generation of FDE records 2024-01-24 12:34:39 +01:00
Jakub Konka
0a60e4448d macho: preserve section name for code sections 2024-01-24 12:34:39 +01:00
Jakub Konka
ee7a027059 macho: parse dependent dylibs 2024-01-24 12:34:39 +01:00
Jakub Konka
ef9aea75d0 macho: fix dead stripping logic to exclude debug sections 2024-01-24 12:34:39 +01:00
Jakub Konka
10a5536a7c macho: re-instate build-obj codepath 2024-01-24 12:34:39 +01:00
Jakub Konka
c2a0a88284 macho: report duplicate symbols 2024-01-24 12:34:39 +01:00
Jakub Konka
3968aea8ec macho: write to file 2024-01-24 12:34:39 +01:00
Jakub Konka
98d6d40cd6 macho: allocate sections, segments and atoms 2024-01-24 12:34:39 +01:00
Jakub Konka
32ebceea95 macho: sort sections; use Atom.Alignment for alignment; init segments 2024-01-24 12:34:39 +01:00
Jakub Konka
0b2231998f macho: init output and synthetic sections 2024-01-24 12:34:39 +01:00
Jakub Konka
f0119ce373 macho: report undefined symbols to the user 2024-01-24 12:34:39 +01:00
Jakub Konka
40e1bb11f8 macho: set dylib ordinals after pruning 2024-01-24 12:34:39 +01:00
Jakub Konka
eca9bc4c33 macho: dead strip dylibs 2024-01-24 12:34:39 +01:00
Jakub Konka
b28ff75f5d macho: mark imports and exports 2024-01-24 12:34:39 +01:00
Jakub Konka
b0327ff233 macho: handle dead stripping of atoms 2024-01-24 12:34:39 +01:00
Jakub Konka
21e3bb38af macho: claim unresolved symbols 2024-01-24 12:34:39 +01:00
Jakub Konka
1b76779857 macho: convert tentative defs and create objc sections 2024-01-24 12:34:39 +01:00
Jakub Konka
6b617afe2a macho: resolve synthetic symbols 2024-01-24 12:34:39 +01:00
Jakub Konka
8a1311733b macho: resolve symbols and mark files live 2024-01-24 12:34:39 +01:00
Jakub Konka
b8f67d7985 macho: init InternalObject and add forced undefined globals 2024-01-24 12:34:39 +01:00
Jakub Konka
8c7a34ae68 macho: prep for dylib deps (no resolution yet) 2024-01-24 12:34:39 +01:00
Jakub Konka
c023b762cd macho: parse tbds 2024-01-24 12:34:38 +01:00
Jakub Konka
d153bc2f0c macho: parse dylibs 2024-01-24 12:34:38 +01:00
Jakub Konka
c5e509595a macho: parse archives 2024-01-24 12:34:38 +01:00
Jakub Konka
d05e9c3792 macho: create scaffolding for parsing different input objects 2024-01-24 12:34:38 +01:00
Jakub Konka
0c171afab0 macho: parse an input object file! 2024-01-24 12:34:38 +01:00
Jakub Konka
7588eeccea macho: re-enable --verbose-link 2024-01-24 12:34:38 +01:00
Jakub Konka
dd0addab1f macho: get the ball rolling! 2024-01-24 12:34:38 +01:00
Jakub Konka
2f94dc939e macho: copy over new implementation sources from zld 2024-01-24 12:34:38 +01:00
Andrew Kelley
9d5a133f18 Revert "Don't assume a write if an operand is not in function parameters"
This reverts commit 2ab78937dd.

Premature merge - apologies for the disruption.

Reopens #15685
Reopens #17580
2024-01-23 20:24:58 -07:00
Rahul Prabhu
2ab78937dd Don't assume a write if an operand is not in function parameters
Liveness assumes that if the operand is not in the parameters of
a function call it is being written to, resulting in pointless memcpies.
2024-01-23 18:32:34 -08:00
Andrew Kelley
aef1da1634 Sema: use Sema.typeAbiSize rather than Type.abiSize
This resolves the type instead of asserting that the type is resolved,
fixing a crash.
2024-01-23 00:56:52 -08:00
jacwil
68ea1121fc objcopy ofmt=hex iterates through segments instead of sections 2024-01-22 21:29:21 -08:00
Veikka Tuominen
eeec34ccb6 Sema: implement comptime error return traces 2024-01-22 18:08:56 -08:00
ndbn
9e684e8d1a Fix wrong if condition for windows (#18637)
Fixes #18594
2024-01-22 15:32:23 -05:00
Tristan Ross
d0da3d731e std.io: replace readStructBig with readStructEndian 2024-01-22 10:53:27 -08:00
Veikka Tuominen
2e7d28dd0d Sema: replace uses of toUnsignedInt with toUnsignedIntAdvanced
During semantic analysis the value may be an unresolved lazy value
which makes using `toUnsignedInt` invalid.

Add assertions to detect similar issues in the future.

Closes #18624
2024-01-20 12:21:05 -08:00
Andrew Kelley
10aff67502 Merge pull request #18596 from ypsvlq/mingw
mingw-w64: add missing CRT sources
2024-01-20 12:01:33 -08:00
David Rubin
1b8f7e46fa AstGen: detect duplicate field names
This logic was previously in Sema, which was unnecessary complexity, and meant the issue was not detected unless the declaration was semantically analyzed. This commit finishes the work which 941090d started.

Resolves: #17916
2024-01-20 17:23:47 +00:00
Andrew Kelley
5c4cb60f4f Merge pull request #18622 from ziglang/zig-mod-edge-case
build system: better handle modules that do not have a zig root source file
2024-01-20 03:22:02 -08:00
Xavier Bouchoux
1a98fcd00a zig cc: expose clang precompiled C header support
see https://releases.llvm.org/17.0.1/tools/clang/docs/UsersManual.html#generating-a-pch-file

syntax examples:
`zig cc -x c-header test.h -o test.pch`
`zig cc -include-pch test.pch main.c`

`zig c++ -x c++-header test.h -o test.pch`
`zig c++ -include-pch test.pch main.cpp`
2024-01-19 22:05:09 -08:00
Andrew Kelley
29cce62a25 CLI: introduce -M; deprecate --mod
I changed my mind on how the CLI for Zig modules should work. I don't
like that `--mod` takes 2 parameters. Instead let's swing all the way in
the other direction: `-M[name][=src]`

This is shorter (Zig CLI invocations are long enough already), avoids
the double parameter edge case, and supports the concept of omitting the
source file part of the argument, which was already wanted for `-Mstd`.
The legacy way to encode that was `--mod std ''` - awkward!

Undocumented support for `--mod` remains so that this branch does not
need a zig1.wasm update. The next time that file is updated, support for
`--mod` can be dropped.

Importantly, this commit also adds support for modules that do not have
a root zig source file. In such case, it sets root to cwd and
root_src_path to empty string, and only sets have_zcu to true if a
module is provided with a root zig source file.
2024-01-19 22:26:13 -07:00
Andrew Kelley
41eff5723d Compilation: avoid caching root source file twice
The deleted lines here are redundant because they happen first thing
inside the function call below.

Additionally, skip hashing the root source file if it is an empty
string. I explored making this field along with `root` optional but
found this to be less messy actually.
2024-01-19 22:18:04 -07:00
Elaine Gibson
398ab5fcfb mingw: update build logic 2024-01-20 00:24:39 +00:00
Meghan Denny
46d592e485 do not enforce function parameters to be marked comptime if only called at comptime 2024-01-19 15:31:18 -08:00
David Rubin
100efcf8d3 return optional state to zirPtrCastNoDest 2024-01-19 21:25:05 +02:00