• Summary on what's blocking full Rust support on m68k

    From John Paul Adrian Glaubitz@3:633/10 to All on Thursday, April 23, 2026 09:50:01
    Hello,

    here is a quick summary of what needs to be done to get a working Rust comp iler for m68k
    on Linux. Most of the changes apply to NetBSD as well, except for the align ment issues as
    NetBSD is already using a 32-bit alignment on m68k by default.

    Speaking of which, the default 16-bit alignment on Linux on m68k is still o
    ne of the biggest
    blockers for Rust on m68k on Linux and it's also what currently prevents ma
    ny other packages
    from being built on Debian unstable on m68k [1][2].

    Since switching the default alignment to 32 bits would break the kernel ABI
    , it has been
    proposed to make the kernel ABI alignment-agnostic first [3]. This would al
    low the kernel
    to be built with either alignment without breaking the alignment. An initia
    l patch series
    was proposed by Arnd Bergmann.

    Once the alignment issue has been sorted out, the next issue to address is
    the lack of the
    M68k backend in LLVM to handle 32-bit offsets for variables and jumps [4]. Currently, the
    backend will always generate 16-bit offsets which is not enough to compile
    all Rust code,
    although some Rust code compiles also with 16-bit offsets.

    I have created a rough patch to add support for 32-bit offsets with the hel
    p of Gemini but
    the patch has multiple problems as outlined in the GitHub issue in [4]. One
    of the problems
    is that it creates the 32-bit offsets in an inefficient way as if the targe
    t was a ColdFire
    CPU. However, the original 680x0 CPUs can actually use more efficient code
    to address 32-bit
    variables and jumps. The inefficient way would still be used when ColdFire support gets added
    to LLVM though [5].

    With these changes implemented, all that would be left - to my current - kn owledge would be
    to update the Rust crates ¯cc® [6] and ¯linux-raw-sys®
    [7] to make the Rust compiler build
    on Linux on m68k.

    If anyone wants to help getting Rust to work on m68k, please let me know!

    Thanks,
    Adrian

    [1] https://wiki.debian.org/M68k/Alignment
    [2] https://github.com/M680x0/issues/issues/3
    [3] https://github.com/M680x0/issues/issues/6
    [4] https://github.com/llvm/llvm-project/issues/181481
    [5] https://github.com/M680x0/issues/issues/4
    [6] https://github.com/rust-lang/rust/issues/155602
    [7] https://github.com/rust-lang/rust/issues/155603

    --
    .''`. John Paul Adrian Glaubitz
    : :' : Debian Developer
    `. `' Physicist
    `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

    --- PyGate Linux v1.5.14
    * Origin: Dragon's Lair, PyGate NNTP<>Fido Gate (3:633/10)