Skip to content

Releases: decompals/slinky

0.4.0

20 Apr 11:56

Choose a tag to compare

[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

17 Aug 12:58

Choose a tag to compare

[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

17 Jul 23:21

Choose a tag to compare

[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

15 Jul 16:34

Choose a tag to compare

[0.2.4] - 2024-07-15

Fixed

  • Fix crate version not updated.

0.2.3 [YANKED]

15 Jul 16:21

Choose a tag to compare

[0.2.3] - 2024-07-15 [YANKED]

Fixed

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

0.2.2

15 Jul 16:04

Choose a tag to compare

[0.2.2] - 2024-07-15

Fix

  • Fix release

0.2.1 [YANKED]

15 Jul 15:48

Choose a tag to compare

[0.2.1] - 2024-07-15 [YANKED]

Fix

  • Fix MSRV

0.2.0 [YANKED]

15 Jul 15:04

Choose a tag to compare

[0.2.0] - 2024-07-15 [YANKED]

Added

  • Initial release