Releases: llvm-mos/llvm-mos-sdk
Releases · llvm-mos/llvm-mos-sdk
SDK v22.3.0
New features
llvm-objcopy
now acceptself32-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
- #340 - PCE: Fix #389 - regression in .mlb fixed bank symbols - @asiekierka
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
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
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