Skip to content

Releases: llvm-mos/llvm-mos-sdk

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

SDK v20.0.0

04 Sep 15:42
2e15e78
Compare
Choose a tag to compare

Breaking changes

  • #357 - cx16 - Improve interface of cx16_k_joystick_get - @mlund
  • freopen(NULL, ...) now fails unconditionally - @pfusik
    • This is simpler than attempting to reopen the file, and the prior implementation was buggy. Failing is allowed by the C standard, and it's "good enough for Windows CRT".

Bug fixes

  • #357 - cx16 - Fix joystick bitmasking bugs in cx16.h - @mlund
  • #354 - Fix double free in freopen on OOM - @pfusik
  • Fix memory errors on freopen failure - @pfusik
  • #362 - Prevent fopen(filename, "a") from truncating file like fopen(filename, "w") - @pfusik
  • #364 - Fix use after free in _stdio_closeall (file closure at program end) - @pfusik

Optimizations

  • Various code size and performance optimizations for freopen - @pfusik

SDK v19.1.1

19 Aug 21:37
Compare
Choose a tag to compare

Bug fixes

  • #351 - Fix memory leak on internal error in fopen - @pfusik
  • #352 - Fix null dereference on internal error in tmpfile - @pfusik

Examples

  • #350 - Added Commander X16 C++ plasma example - @mlund