Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ebitengine/purego
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.11.2
Choose a base ref
...
head repository: ebitengine/purego
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.11.3
Choose a head ref
  • 2 commits
  • 5 files changed
  • 2 contributors

Commits on Nov 1, 2026

  1. .github/workflows: use a Bootlin GCC for linux/mips (#556)

    ubuntu-latest now runs Ubuntu 26.04, which no longer provides
    gcc-mips-linux-gnu. Installing it failed, and fail-fast then cancelled
    the rest of the test matrix. Debian is dropping its mips
    cross-compilers as well.
    
    Download a prebuilt mips32 glibc GCC toolchain from Bootlin, verify its
    SHA-256, and use it as CC for the linux/mips Cgo build. This no longer
    depends on any distribution's packages. The toolchain runs only on
    x86_64 hosts, so the build now runs on ubuntu-latest only instead of
    also on ubuntu-24.04-arm.
    
    Closes #560
    
    Co-authored-by: Claude Opus 5.5 <[email protected]>
    hajimehoshi and claude committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    9eba627 View commit details
    Browse the repository at this point in the history
  2. all: align the stack for C calls on linux/386 (#558)

    The i386 System V ABI requires the stack pointer to be 16-byte aligned
    at a call, and compilers rely on it for aligned SSE stack accesses such
    as movaps, which fault otherwise. Two linux/386 trampolines broke this.
    syscallX is entered on an aligned stack from runtime.asmcgocall, but
    its register saves and fixed frame left ESP at 12 mod 16 at the call.
    linux/386 uses this path with Cgo enabled too. call5 in fakecgo, which
    calls pthread_create, malloc, setenv and others, did not realign at
    all, so its alignment depended on the calling Go frame.
    
    Save SP in the callee-saved BP and align SP with ANDL before placing
    the arguments in both trampolines, as call5 already does on amd64.
    
    Add a test that calls a naked C function returning the caller's stack
    pointer modulo 16 at the call. It runs on linux/386 and on amd64, where
    the alignment in syscallX depends on its frame size.
    
    Also rename the FP operands in the 386 setg_trampoline and call5 to
    match their Go declarations, which fixes go vet's asmdecl reports. The
    generated code is unchanged.
    
    Closes #458
    
    Co-authored-by: Claude Opus 5.5 <[email protected]>
    hajimehoshi and claude committed Nov 1, 2026
    Configuration menu
    Copy the full SHA
    3fc0c5f View commit details
    Browse the repository at this point in the history
Loading