Skip to content

Latest commit

 

History

History
188 lines (141 loc) · 7.21 KB

File metadata and controls

188 lines (141 loc) · 7.21 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Changed

  • Rework the intenral representation for FileKind and FileInfo.
  • Rework internal representation for conditional predicates.

0.6.0 - 2026-07-19

Added

  • moved_group file kind.
    • Allows to move the sections of a block of files to a different block of sections, preserving the original block order.

Changed

  • Many files were moved into folders for better organization.
  • Moved many structs into mods for better organization.

0.5.0 - 2026-04-26

Added

  • partial setting. Groups every global setting related to partial linking.
    • It now contains the old partial_scripts_folder and partial_build_segments_folder settings, renamed to scripts_folder and build_segments_folder respectively.
  • partial.segment_extension: Specify the extension used for partially linked segments.

Changed

  • Add #[non_exhaustive] attributes to all relevant structures.
  • LinkerWriter::new, LinkerWriter::new_reference_partial_objects and PartialLinkerWriter::new now return a Result<Self, SlinkyError>.
  • The extension for partial segments have been changed from o to plf.
    • The extension used can be changed with the partial.segment_extension setting.

Removed

  • Delete the old partial_scripts_folder and partial_build_segments_folder settings in favor of the new partial.scripts_folder and partial.build_segments_folder settings.

0.4.0 - 2026-04-20

Added

  • paths_list_path setting.
    • A path to a plain text file to be generated, containing all the files listed to build the target elf.
    • Useful to pass a list of input files to the linker using the @path/to/file.list syntax on linkers that do support it.

Changed

  • Include .symtab and .strtab in default value of sections_allowlist_extra from Settings.
    • lld can segfault in certain conditions if those sections are not listed explicitly on the linker script.
  • Add .got to the default list of discarded sections.
  • Simplify the formatting used for extra sections.
  • alloc_sections and noload_sections sections now accept null values.
    • This allows to avoid emitting those sections completely for a given segment or globally.
    • The main difference between using null and an empty list is null will not produce linker symbol nor the section itself in the generated linker script, while the empty list would generate the starting and ending linker symbols and the section with no files.
  • The generated dependency file will now include an -include directive for every path listed, but replacing their extensions with .d to allow tracking the dependencies of those paths automatically.

0.3.0 - 2024-08-17

Added

  • Add new top-level attribute for the file format: symbol_assignments.
    • Allows to define symbols directly on the generated linker script.
    • Symbols created this way can be defined with raw addresses, reference other symbols or more complex expressions.
    • These generated symbols do not have a corresponding section (defined as ABS symbols on the elf).
    • If a symbol assignment is emitted or not can be controlled with the same conditional inclussion/exclussion mechanism used by the custom options.
    • These definitions can be wrapped in PROVIDE, HIDDEN or PROVIDE_HIDDEN.
  • Add new top-level attribute for the file format: required_symbols.
    • Allows to specify a list of symbols that should be forced to be linked into the build, even if they are not refenced by any other linked code.
    • Useful for making sure a symbol from an static library is being linked.
    • If a symbol assignment is emitted or not can be controlled with the same conditional inclussion/exclussion mechanism used by the custom options.
  • Add way to define a non hardcoded _gp symbol for a given segment.
    • Used by defining the gp_info field on a segment.
    • Can't be combined with the global hardcoded_gp_value.
  • Add new top-level attribute for the file format: entry.
    • Specifies the entrypoint for the build.
  • Add new top-level attribute for the file format: asserts.
    • Allows to define multiple assertions that should be satisfied for the link to success.
  • New keep_sections attribute for vram_classes, segments and files.
    • Allows to specify which sections of a files should be KEEP during link time garbage collection, even of those are not referenced at al by anything else.
    • Allows to configure for everything referencing a given vram class or as fine grained as a single file entry.
  • New sections_subgroups attribute for settings and segments.
    • Allows to specify one or multiple sections that should be emitted alongside another section for each file, instead of getting their own "proper" section.

Changed

  • Produce an error if the user specifies an empty conditional inclusion/exclusion for any entry.
  • Make sure all platforms use forward slashes when emitting file paths.
  • Tests now strip the \r character from the expected files before compaing them.
    • This is done to normalize the tests files accross all platforms, including the ones where git may add \r characters when cloning the repository (like Windows).
  • Github Actions:
    • Change CI to run tests on all platforms we generate builds artifacts for.
    • Use the ARM Mac Github runner to build and test the ARM Mac builds.
    • Merge run_tests and release jobs to try to improve CI times.

0.2.5 - 2024-07-17

Fixed

  • Fix partial linking related paths not being properly escaped.
  • Fix partial_build_segments_folder not being properly prefixed on some places.
  • Fix section_order not being applied to files inside of groups.
  • Avoid generating sub-scripts of conditionally excluded segments during partial linking scripts generation.

0.2.4 - 2024-07-15

Fixed

  • Fix crate version not updated.

0.2.3 - 2024-07-15 [YANKED]

Fixed

  • Fix CI not uploading build artifacts to Github release.
  • Fix README badge.

0.2.2 - 2024-07-15

Fixed

  • Fix release.

0.2.1 - 2024-07-15 [YANKED]

Fixed

  • Fix MSRV.

0.2.0 - 2024-07-15 [YANKED]

Added

  • Initial release.