msys2 / msys2/msys2-runtime

`utsname` is ABI incompatible with cygwin

Open
#346 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
240
Forks
60
Avg merge
2d 3h
Merged PRs (30d)
1

Description

https://github.com/msys2/msys2-runtime/commit/e848126e887a2545ace898fe1c1c82089d94ec05

I guess it is because you need a longer sysname, but it breaks the ABI compatibility. Though the dll we link could distinguish the binary for cygwin of msys2, the difference makes it hard to create bindings for other languages. For example, a recent PR in Rust libc complains about that.

I am the maintainer of the cygwin target of Rust, and I would like to provide more information. At the very beginning, I decided to distinguish cygwin and msys2 into 2 separate target. But after the discussions with the Rust maintainers, we thought that the difference of the two runtime was only the linked dll (and some runtime behaviors). Therefore we made them as one. After some time, the MSYS2 devel package also provide libcygwin.a to link with msys-2.0.dll, making the runtime difference opaque to the compiler and the linker. The cygwin target of rustc links to libcygwin.a, and it's the linker (gcc) to determine which runtime it is.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked msys2-runtime commit and the referenced Rust libc PR, then inspect how the utsname structure differs between MSYS2 and Cygwin. Confirm the ABI and binding compatibility requirements with the issue discussion; done means an agreed, compatible structure layout or a documented resolution.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.