Skip to content

utsname is ABI incompatible with cygwin #346

Description

@Berrysoft

e848126

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions