Skip to content

Releases: llvm-mos/llvm-mos-sdk

SDK v22.3.0

15 Jul 22:09
4dfe9f4
Compare
Choose a tag to compare

New features

  • llvm-objcopy now accepts elf32-mos as a target. In particular, this enables the workflow of converting a raw binary file to a relocatable ELF object, with the contents of the raw binary file in a section. Thanks @davidgiven for reporting that this didn't work.

Bug fixes

Merge from upstream LLVM

Upstream revision: llvm/llvm-project@c384ec4 (13 Jul 2025)
Previous upstream revision: llvm/llvm-project@4984714 (25 Jun 2025)

SDK v22.2.1

02 Jul 21:13
Compare
Choose a tag to compare

Bug fixes

  • llvm-mos/llvm-mos#491 - Fix crash for certain adds of ternary ... ? 1 : -1.
    • This pattern was converted from a variable ADC to a INC and DEC by the MOSIncDecPhi pass, but the mechanism was always brittle, and it was difficult to repair it in the face of this issue. Accordingly, this pass has been removed. This may cause a slight regression in code size and performance, but it's expected to be in the noise compared to register allocation.

Merge from upstream LLVM

Upstream revision: llvm/llvm-project@4984714 (25 Jun 2025)
Previous upstream revision: llvm/llvm-project@b434bc4 (14 May 2025)

SDK v22.2.0

15 May 16:10
2257f41
Compare
Choose a tag to compare

New features

Bug fixes

  • #388 cpm_bios_seldsk_i now returns NULL on error, rather than an undefined result - @eduardocasino
  • mega65 examples are now correctly built by default with the SDK

Merge from upstream LLVM

Upstream revision: llvm/llvm-project@b434bc4 (14 May 2025)
Previous upstream revision: llvm/llvm-project@c99ffe58af23 (17 Apr 2025)

SDK v22.1.0

26 Apr 20:11
Compare
Choose a tag to compare

New features

  • #393 - nes/supervision: Add weak attribute to early and late init - @TheEssem
    • This allows almost-completely replacing the initialization routines for these systems with custom user code.

Merge from upstream LLVM

Upstream revision: llvm/llvm-project@c99ffe58af23 (17 Apr 2025)
Previous upstream revision: llvm/llvm-project@2f7ade4b5e39 (13 Jan 2025)

New features

  • LLD now has a --why-live=<glob> tag to report why symbols matching the given glob weren't removed by linker garbage collection (GC).
    • This can be useful for debugging why linker GC didn't strip something out.

SDK v22.0.0

18 Apr 02:14
Compare
Choose a tag to compare

Breaking changes

  • #392 - KEEP initialization, finalization, NMI, and IRQ sections
    • All sections in the SDK that are used to register code to run at an implicit time are now summarily retained by linker garbage collection. This is equivalent to all such sections being marked in assembly with the flag R, for GNU_RETAIN. Accordingly, R is no longer needed in such cases.

Bug fixes

  • llvm-mos/llvm-mos#484 - Report bank attribute to ld65 and mask addresses
    • For targets with 16-bit address spaces, the ld65 config file now has all reported addresses masked to 16 bits. This prevents range errors in absolute ld65 relocations. The next higher byte of the LLD virtual address of each segment is reported to LLD as the bank value for that segment, shifted down by 16. The uppermost byte is silently discarded. Symbol addresses are summarily masked down to 16 bits, since their banks cannot be queried within ca65.
    • This behavior is disabled if the address size of any ld65 segment is far or long. In that case, the 32-bit LLD virtual addresses are passed through directly to ld65, and segment bank is left unset, as was the case today.

SDK v21.0.1

13 Jan 18:20
334fc98
Compare
Choose a tag to compare

Bug fixes

  • #387 - pce-mkcd: Skip PHDR sections which do not contain any data (BSS) - @asiekierka

SDK v21.0.0

20 Nov 00:21
675461c
Compare
Choose a tag to compare

Breaking changes

  • #383 - neo6502 - Update API bindings - @asiekierka
    • Split neo_controller_read(void) into neo_controller_read_default(void) and neo_controller_read(uint8_t index)
    • Renamed some enum values

New features

Bug fixes

SDK v20.2.1

13 Nov 17:59
Compare
Choose a tag to compare

Bug fixes

  • llvm-mos/llvm-mos#479 - Fixed linker crash when constant subtractions less than -128 are folded into zero page indexed addressing
    • 16-bit indexed addressing is used instead
    • This release also allows folding subtractions <= -128 into zero page indexed addressing, which the linker would previously disallow
  • #378 - Fix odd behavior of atari minimal getchar by buffering a full line
    • atari's getchar requires a line to be read at a time without any intervening writes to the screen to operate correctly, but typical C practice does not expect interleaving putchar and getchar to interrupt the action of getchar.

SDK v20.2.0

30 Sep 17:35
80d3c4b
Compare
Choose a tag to compare

New targets

Optimizations

Bug fixes

SDK v20.1.0

19 Sep 05:09
5138223
Compare
Choose a tag to compare

New features

  • #365 - commodore - Add LOAD flag enum, including specific values for the cx16 - @mlund
  • #367 - cx16 - Add missing emulator registers - @mlund
  • #372 - cx16 - Add JSRFAR macro - @mlund
  • #368 - cx16 - Add ROM bank label enum - @mlund
  • #369 - cx16 - Split wrapper routines into dedicated sections for linker garbage collection - @mlund
  • #370 - cx16 - Add VERA PSG register data structure (__vera_psg) - @mlund

Optimizations

  • #373 - commodore- Implement KERNAL LOAD function using inline assembly - @mlund

Bug fixes

  • #366 - cx16 - Correct leaf attribute placement - @mlund