129 Commits

Author SHA1 Message Date
dependabot[bot] 36146e1982 chore(deps): update object requirement from 0.38.0 to 0.39.0
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.
- [Changelog](https://github.com/gimli-rs/object/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.38.0...v0.39.0)

---
updated-dependencies:
- dependency-name: object
  dependency-version: 0.39.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 12:55:05 -04:00
dependabot[bot] 09b8353ea8 chore(deps): update sha2 requirement from 0.10.9 to 0.11.0
Updates the requirements on [sha2](https://github.com/RustCrypto/hashes) to permit the latest version.
- [Commits](https://github.com/RustCrypto/hashes/compare/streebog-v0.11.0-pre.0...sha2-v0.11.0)

---
updated-dependencies:
- dependency-name: sha2
  dependency-version: 0.11.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-30 07:54:56 +00:00
dependabot[bot] 8a2716ad68 chore(deps): update zip requirement from 7.1.0 to 8.0.0
Updates the requirements on [zip](https://github.com/zip-rs/zip2) to permit the latest version.
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v7.1.0...v7.2.0)

---
updated-dependencies:
- dependency-name: zip
  dependency-version: 7.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 11:07:29 -05:00
dependabot[bot] 53ff23c3c5 chore(deps): update argfile requirement from 0.2.1 to 1.0.0
Updates the requirements on [argfile](https://github.com/rust-cli/argfile) to permit the latest version.
- [Changelog](https://github.com/rust-cli/argfile/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/argfile/compare/v0.2.1...v1.0.0)

---
updated-dependencies:
- dependency-name: argfile
  dependency-version: 1.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-16 11:07:15 -05:00
Matt Ehrnschwender dbc826f641 ci: change ci.yaml triggers
Use ignore patterns for triggers and add ignore pattern for
'dev-noci/**' branches
2026-02-01 14:31:55 -05:00
Matt Ehrnschwender f6caf1a822 refactor: linker initialization
Remove builder structure and merge library search module in with the
linker module
2026-01-29 23:38:15 -05:00
Matt Ehrnschwender 79a1203354 refactor: remove unused code
Fixes lints and removes unused code
2026-01-29 22:59:50 -05:00
Matt Ehrnschwender 65edec7818 refactor: simplify error handling
Remove custom errors in places and use anyhow. Log errors instead of
propagating them back to main
2026-01-29 22:51:07 -05:00
Matt Ehrnschwender 11edee937e test: save test data to target tmp dir 2026-01-29 13:41:35 -05:00
Matt Ehrnschwender dca9814f88 refactor: move MinGW to query to separate function 2026-01-29 11:44:51 -05:00
Matt Ehrnschwender 69d116e708 refactor: move lexically_normalize_path to module 2026-01-29 11:44:39 -05:00
Matt Ehrnschwender 72ce90cdd8 refactor: merge lib.rs with main.rs
Make project a single command line program
2026-01-29 11:18:34 -05:00
Matt Ehrnschwender 2740cb74bf feat: add '--error-limit' option
Configures threshold for number of error messages to print
2026-01-29 11:06:55 -05:00
Matt Ehrnschwender d82e2f86ab feat: normalize library search paths
Removes '..' and '.' to make files found through search paths clearer
in diagnostic messages
2026-01-28 23:25:50 -05:00
Matt Ehrnschwender b9a8d2efc7 chore: refactor editorconfig
Change root indentation for C/C++ but keep current indentation in
examples
2026-01-28 23:09:29 -05:00
Matt Ehrnschwender 0c60713f00 feat: add --color-diagnostics argument
This flag will be used in place of '--color' to match lld. Usage of the
old '--color' command line flag will show a warning message about it
being slated for removal
2026-01-28 23:03:16 -05:00
Matt Ehrnschwender ef2252d870 fix: add Win32 console for logging changes 2026-01-28 23:03:16 -05:00
Matt Ehrnschwender 29cac10c8a refactor: move multi-line log handling to logger
Change areas where multi line log entries are emitted to defer
formatting details for the logger to handle
2026-01-28 22:33:39 -05:00
Matt Ehrnschwender 8f85509220 refactor: change logging implementation
Use new logging implementation which replaces termcolor for ANSI
coloring. Adds logger implementation for handling `--error-limit`
2026-01-28 22:22:03 -05:00
Matt Ehrnschwender 5091ce0965 refactor: move undname crate to module
Make this an in source module instead of a separate crate
2026-01-28 22:06:29 -05:00
Matt Ehrnschwender 1dd309c70d refactor: remove jamcrc crate
Move jamcrc calculation for aux section checksum in where used
2026-01-28 21:51:11 -05:00
Matt Ehrnschwender 150df4276a refactor: remove unused coffyaml crate
Crate was for building test data but is no longer used. Also remove the
`objs2yaml` crate since it was a small cli wrapper for coffyaml
2026-01-28 21:43:17 -05:00
Matt Ehrnschwender 5f7cd45e6e ci: split up Windows/Linux tasks
Set test tools for the Linux runner to use later version of LLVM
2026-01-28 21:36:39 -05:00
Matt Ehrnschwender 0355e9f00a ci: use clang-20 for tests 2026-01-28 21:28:54 -05:00
Matt Ehrnschwender f6a97bed1e ci: install clang and llvm 2026-01-28 21:15:36 -05:00
Matt Ehrnschwender 5270858125 test: migrate to Clang/LLVM tooling for test data
Change obj2yaml test data generation to use Clang with LLVM tooling with
tempfiles
2026-01-28 20:43:37 -05:00
Matt Ehrnschwender 1e472bc6a1 chore(release): v0.6.2 v0.6.2 2026-01-28 15:56:40 -05:00
Matt Ehrnschwender ef27f214c8 fix: Beacon API i386 mangling
Add i386 prefix to Beacon API symbols
2026-01-27 22:04:13 -05:00
Matt Ehrnschwender 3284fc522f fix: include mangling prefix for i386 imports
Adds the i386 underscore '_' mangling prefix at the expected spot
for DLL imported symbols

Fixes: #44
2026-01-27 20:50:30 -05:00
Matt Ehrnschwender 50b54f1131 fix: Beacon API symbol mangling
Include i386 mangling prefix in the public symbol name but not in the
import name.

Refactors API symbol generation to use an arena for saving strings
instead of keeping everything static
2026-01-27 20:37:48 -05:00
Matt Ehrnschwender 64fd0d095e fix: missing stdcall suffix in MinGW i386 imports
The Hint/Name table from legacy MinGW i386 import members did not
include stdcall suffixes for symbols.

Use the public symbol name for setting the import name instead since it
is present there
2026-01-27 19:45:56 -05:00
Matt Ehrnschwender 230f490dbf chore(release): v0.6.1 v0.6.1 2026-01-22 13:21:29 -05:00
Matt Ehrnschwender 00ac4edcc5 fix: handling of VA-based relocations
Virtual address based relocations were being treated as relative
relocations in cases where the relocation target was defined in the same
output section as the relocation. These should now be treated as
additional pending relocs for a loader to process.

Additional relative relocation types are also now handled properly when
applying intra-section relocations.

Fixes: #36
2026-01-22 12:20:56 -05:00
Matt Ehrnschwender 080fd0ae2e test: remove dump link graph in .bss test 2026-01-21 23:36:37 -05:00
Matt Ehrnschwender 2f73fe9c1c fix: COMDAT leader selection
Select the correct leader symbol instead of claiming all symbol
definitions for the COMDAT section
2026-01-20 22:51:02 -05:00
Matt Ehrnschwender eecae6f9f8 refactor: output section creation
Moves creation of output sections to separate functions
2026-01-20 19:50:55 -05:00
Matt Ehrnschwender 42d6277e11 fix: typo in BeaconEnableBeaconGate symbol
Symbol name had an extra `:` at the end
2026-01-20 19:18:00 -05:00
Matt Ehrnschwender 42a08f2840 fix: git hash embedding in release builds
Git version information would not get embedded correctly in CI release
builds due to a detached head checkout. This changes the sourcing
logic to account for that
2026-01-20 19:12:18 -05:00
Matt Ehrnschwender e51e5488ad fix: panic at src/graph/output.rs:607
Program would panic if the size of an output section with uninitialized
data exceeded the total size of the output file.

Adds a check to only apply relocation fixups for output sections with
file-backed data.
2026-01-20 18:13:48 -05:00
dependabot[bot] afa5db30ca chore(deps): update zip requirement from 6.0.0 to 7.1.0
Updates the requirements on [zip](https://github.com/zip-rs/zip2) to permit the latest version.
- [Release notes](https://github.com/zip-rs/zip2/releases)
- [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zip-rs/zip2/compare/v6.0.0...v7.1.0)

---
updated-dependencies:
- dependency-name: zip
  dependency-version: 7.1.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-20 18:13:28 -05:00
Matt Ehrnschwender bad4f37608 feat: add module definition parser
Parser for parsing Windows module definition files. Not integrated into
the main program
2026-01-20 15:25:37 -05:00
Matt Ehrnschwender bfaec726c8 chore(release): v0.6.0 v0.6.0 2025-11-25 11:51:03 -05:00
Matt Ehrnschwender 45c16dcb9d docs: rename xtask docs target
Change target name to `docs-man` instead of just `docs`.
2025-11-25 11:48:49 -05:00
Matt Ehrnschwender ae03ef71e7 feat: add BeaconDownload builtin API symbol
New CS 4.12 release adds the `BeaconDownload` function to list of
Beacon API functions. This adds support for resolving that symbol when
using the builtin Beacon API symbols.
2025-11-25 11:11:16 -05:00
dependabot[bot] faf2158eb5 chore(deps): update object requirement from 0.37.3 to 0.38.0
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.37.3...0.38.0)

---
updated-dependencies:
- dependency-name: object
  dependency-version: 0.38.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 11:05:56 -05:00
Matt Ehrnschwender 71908bdbca docs: add basic man page 2025-11-25 11:05:56 -05:00
Matt Ehrnschwender 90cd07d03f refactor: remove pathed item
Replace with just using tuples
2025-11-22 16:08:39 -05:00
Matt Ehrnschwender 5146c96b9e refactor: merge pathed_item.rs into linker
This module does not need to be separate since it is only used by the
main linker module
2025-11-22 15:56:43 -05:00
Matt Ehrnschwender 0ae26ec0b4 refactor: move linker module to single file
Combine files related to linker module into a single file
2025-11-22 15:52:49 -05:00
Matt Ehrnschwender 582fdab0f6 refactor: merge bin files into 'src/'
Move main binary sources from 'src/bin/' into 'src/'
2025-11-22 15:40:53 -05:00