aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/CheckObject.zig
AgeCommit message (Collapse)Author
2025-01-15std.Build.Step.CheckObject: better EOF handlingAndrew Kelley
when unexpected end of stream occurs, just add that as a token into the text
2025-01-15wasm linker: aggressive DODificationAndrew Kelley
The goals of this branch are to: * compile faster when using the wasm linker and backend * enable saving compiler state by directly copying in-memory linker state to disk. * more efficient compiler memory utilization * introduce integer type safety to wasm linker code * generate better WebAssembly code * fully participate in incremental compilation * do as much work as possible outside of flush(), while continuing to do linker garbage collection. * avoid unnecessary heap allocations * avoid unnecessary indirect function calls In order to accomplish this goals, this removes the ZigObject abstraction, as well as Symbol and Atom. These abstractions resulted in overly generic code, doing unnecessary work, and needless complications that simply go away by creating a better in-memory data model and emitting more things lazily. For example, this makes wasm codegen emit MIR which is then lowered to wasm code during linking, with optimal function indexes etc, or relocations are emitted if outputting an object. Previously, this would always emit relocations, which are fully unnecessary when emitting an executable, and required all function calls to use the maximum size LEB encoding. This branch introduces the concept of the "prelink" phase which occurs after all object files have been parsed, but before any Zcu updates are sent to the linker. This allows the linker to fully parse all objects into a compact memory model, which is guaranteed to be complete when Zcu code is generated. This commit is not a complete implementation of all these goals; it is not even passing semantic analysis.
2024-10-10std.Build.Step.CheckObject: display source file pathAndrew Kelley
and upgrade to getPath3
2024-09-12Replace deprecated default initializations with decl literalsLinus Groh
2024-07-14make zig compiler processes live across rebuildsAndrew Kelley
Changes the `make` function signature to take an options struct, which additionally includes `watch: bool`. I intentionally am not exposing this information to configure phase logic. Also adds global zig cache to the compiler cache prefixes. Closes #20600
2024-07-12make more build steps integrate with the watch systemAndrew Kelley
2024-06-23Rename *[UI]LEB128 functions to *[UI]leb128Michael Bradshaw
2024-05-27update the codebase for the new std.Progress APIAndrew Kelley
2024-05-24Step/CheckObject: handle stab entries when dumping MachO symtabJakub Konka
2024-05-13Step.CheckObject: support dumping raw section contents for MachOJakub Konka
2024-05-13Step.CheckObject: put MachO object parsing logic in ObjectContext wrapperJakub Konka
2024-05-05Build: cleanupJacob Young
* `doc/langref` formatting * upgrade `.{ .path = "..." }` to `b.path("...")` * avoid using arguments named `self` * make `Build.Step.Id` usage more consistent * add `Build.pathResolve` * use `pathJoin` and `pathResolve` everywhere * make sure `Build.LazyPath.getPath2` returns an absolute path
2024-04-30std.Build.Step.CheckObject: fix parseDumpNamesAndrew Kelley
This function incorrectly assumed that module name subsections, function name subsections, and local name subsections are encoded the same, however according to [the specification](https://webassembly.github.io/spec/core/appendix/custom.html) they are encoded differently. This commit adds support for parsing module name subsections correctly, which started appearing after upgrading to LLVM 18.
2024-04-15lib/std/Build/Step/CheckObject: dump section as stringJakub Konka
2024-03-30Update uses of `@fieldParentPtr` to use RLSJacob Young
2024-03-30Update uses of `@fieldParentPtr` to pass a pointer typeJacob Young
2024-01-01zig build system: change target, compilation, and module APIsAndrew Kelley
Introduce the concept of "target query" and "resolved target". A target query is what the user specifies, with some things left to default. A resolved target has the default things discovered and populated. In the future, std.zig.CrossTarget will be rename to std.Target.Query. Introduces `std.Build.resolveTargetQuery` to get from one to the other. The concept of `main_mod_path` is gone, no longer supported. You have to put the root source file at the module root now. * remove deprecated API * update build.zig for the breaking API changes in this branch * move std.Build.Step.Compile.BuildId to std.zig.BuildId * add more options to std.Build.ExecutableOptions, std.Build.ObjectOptions, std.Build.SharedLibraryOptions, std.Build.StaticLibraryOptions, and std.Build.TestOptions. * remove `std.Build.constructCMacro`. There is no use for this API. * deprecate `std.Build.Step.Compile.defineCMacro`. Instead, `std.Build.Module.addCMacro` is provided. - remove `std.Build.Step.Compile.defineCMacroRaw`. * deprecate `std.Build.Step.Compile.linkFrameworkNeeded` - use `std.Build.Module.linkFramework` * deprecate `std.Build.Step.Compile.linkFrameworkWeak` - use `std.Build.Module.linkFramework` * move more logic into `std.Build.Module` * allow `target` and `optimize` to be `null` when creating a Module. Along with other fields, those unspecified options will be inherited from parent `Module` when inserted into an import table. * the `target` field of `addExecutable` is now required. pass `b.host` to get the host target.
2023-12-13lib/std/Build/CheckObject: split dyld info into subsections for easier ↵Jakub Konka
scoped testing
2023-12-13lib/std/Build/CheckObject: update all tests to new APIJakub Konka
2023-12-13lib/std/Build/CheckObject: implement for WasmJakub Konka
2023-12-13lib/std/Build/CheckObject: implement for ELFJakub Konka
2023-12-13lib/std/Build/CheckObject: introduce scoped checks; implement for MachOJakub Konka
2023-12-13lib/std/Build/CheckObject: fix parsing and dumping special dylib lookup valuesJakub Konka
2023-12-10lib/std/Build/CheckObject: dump Mach-O dyld_info_only bind, weak-bind and ↵Jakub Konka
lazy-bind data
2023-12-10lib/std/Build/CheckObject: dump Mach-O dyld_info_only rebase dataJakub Konka
2023-12-09lib/std/Build/CheckObject: dump Mach-O dyld_info_only exports dataJakub Konka
2023-12-09lib/std/Build/CheckObject: dump Mach-O symbol attributesJakub Konka
2023-12-08lib/std/Build/CheckObject: dump Mach-O headerJakub Konka
2023-11-19lib: correct unnecessary uses of 'var'mlugg
2023-11-06CheckObject: support parsing and dumping archive symtab for ELFJakub Konka
2023-10-31std.builtin.Endian: make the tags lower caseAndrew Kelley
Let's take this breaking change opportunity to fix the style of this enum.
2023-10-31mem: fix ub in writeIntJacob Young
Use inline to vastly simplify the exposed API. This allows a comptime-known endian parameter to be propogated, making extra functions for a specific endianness completely unnecessary.
2023-10-03std.macho: remove alignment from LoadCommandIteratorAndrew Kelley
2023-08-18check-object: dump contents of LC_BUILD_VERSION and LC_VERSION_MIN_* cmdsJakub Konka
2023-07-30Build.zig rename orgy (aka: #16353). Renames FileSource to LazyPath and ↵Felix (xq) Queißner
removes functions that take literal paths instead of LazyPath.
2023-07-27test: add a test that verifies no debug handlers get pulled into compiler_rtkcbanner
build: fix CheckObject checkNotPresent only checking a single line of the haystack
2023-07-20check-object: allow for multiple extractions within one checkJakub Konka
2023-07-20check-object: format known OS-specific types before doing generic formatJakub Konka
2023-07-20check-object: dump PT flags when dumping program headersJakub Konka
2023-07-20check-object: remove wildcard matchers as they are too clunkyJakub Konka
Instead, we now have a looser helper called `checkContains(...)` that will match on any occurrence similarly to `std.mem.indexOf()`. While at it, I have cleaned up other combinators to make the entire API more consistent, and so: * `checkStart(phrase)` is now `checkStart()` followed by `checkExact(phrase)` * `checkNext(phrase)` if matching exactly is now `checkExact(phrase)` * `checkNext(phrase)` if matching loosely is now `checkContains(phrase)` * `checkNext(phrase)` if matching exactly with var extractors is now `checkExtract(phrase)` Finally, `ElfDumper` is now dumping contents of `.symtab` and `.dynsym` symbol tables. I have also removed dumping of symtabs as optional - they are now always dumped which cleaned up the implementation even more.
2023-07-20check-object: dump contents of .dynamic sectionJakub Konka
2023-07-19test/link: add shared-memory test for WebAssemblyLuuk de Gram
2023-07-13check-object: dump info on PHDRsJakub Konka
2023-07-13check-object: dump more info on SHDRsJakub Konka
2023-07-13check-object: dump some info on SHDRsJakub Konka
2023-07-13check-object: dump ELF headerJakub Konka
2023-06-24all: migrate code to new cast builtin syntaxmlugg
Most of this migration was performed automatically with `zig fmt`. There were a few exceptions which I had to manually fix: * `@alignCast` and `@addrSpaceCast` cannot be automatically rewritten * `@truncate`'s fixup is incorrect for vectors * Test cases are not formatted, and their error locations change
2023-06-13Remove CheckObjectStep.runAndCompare (#15973)Zapolsky Anton
Closes #14969
2023-05-13Update all std.mem.tokenize calls to their appropriate functionRyan Liptak
Everywhere that can now use `tokenizeScalar` should get a nice little performance boost.
2023-05-03std.Build: use Step.* instead of *StepVeikka Tuominen
Follow up to 13eb7251d37759bd47403db304c6120c706fe353