Description
I open an issue on libc because it is here the problems will start to show up. Depending the solution or the way to deal with, modifications could occurs in rustc repository too.
At OpenBSD, we don't care about breaking API/ABI between releases. Once a release is done, the API/ABI is stable, but there is no guarantee that it will be compatible with the next release.
Currently, in the upcoming 6.2 version of OpenBSD (6.1-current), there is a breaking change that will affect libc : si_addr should be of type void *, not char * (caddr_t). Here the current definition in libc.
Under OpenBSD, we deal with ABI under LLVM by using a triple like: amd64-unknown-openbsd6.1
. For Rust, instead we use an unversioned platform, resulting all OpenBSD versions to define the same ABI (which isn't properly right).
Do you think it possible to switch from *-unknown-openbsd
to *-unknown-openbsd6.0
, *-unknown-openbsd6.1
, ... without having to duplicate all code in libc for each target ? and without having to add a new target in rustc for each OpenBSD release ?
Any others ideas on the way to deal with it ?