Releases: llvm-mos/llvm-mos-sdk
Releases ยท llvm-mos/llvm-mos-sdk
SDK v22.2.0
New features
- #395 - Add full
stdio
support to therp6502
target - @rumbledethumps
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
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
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
, forGNU_RETAIN
. Accordingly,R
is no longer needed in such cases.
- 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
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
Bug fixes
- #387 - pce-mkcd: Skip PHDR sections which do not contain any data (BSS) - @asiekierka
SDK v21.0.0
Breaking changes
- #383 -
neo6502
- Update API bindings - @asiekierka- Split
neo_controller_read(void)
intoneo_controller_read_default(void)
andneo_controller_read(uint8_t index)
- Renamed some enum values
- Split
New features
- #383 -
neo6502
- Add new APIs bindings - @asiekierka
Bug fixes
- #383 -
neo6502
- Fix UExt functions - @asiekierka - #384 -
cpm65
- Fix some minor CP/M-65 issues - @davidgiven
SDK v20.2.1
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
minimalgetchar
by buffering a full lineatari
'sgetchar
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 interleavingputchar
andgetchar
to interrupt the action ofgetchar
.
SDK v20.2.0
New targets
- #375 -
geos-cbm
- Create applications for Commodore GEOS! - @Dirk-Schnorpfeil
Optimizations
- llvm-mos/llvm-mos#474 - Follow
TAX
andTAY
when optimizing immediate loads - @pfusik
Bug fixes
- llvm-mos/llvm-mos#476 - Allow the project to compile on Apple Silicon again - @pr1metine
- #376 - Fix
strpbrk
(and thusstrtok
) - @ivop
SDK v20.1.0
New features
- #365 -
commodore
- AddLOAD
flag enum, including specific values for thecx16
- @mlund - #367 -
cx16
- Add missing emulator registers - @mlund - #372 -
cx16
- AddJSRFAR
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
Bug fixes
SDK v20.0.0
Breaking changes
- #357 -
cx16
- Improve interface ofcx16_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 incx16.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 likefopen(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