This document lists the ABI breaks that were made in each mlibc major version.
- #1458: mlibc only defined
fenv_tfor x86(_64) before, new we define it correctly for all supported architectures. - #1458: due to incorrect macro usage,
LONG_BITwas previously always defined to 64, even on 32-bit architectures. Now, it is set to 32 on 32-bit architectures. - #1458:
PRI*FAST*macros had values that caused-Wformatwarnings on 32-bit architectures, which got fixed. - #1458:
ND_NA_FLAG_*macros were incorrectly not byte-swapped on big-endian architectures. - #1458: some members of
struct link_mapwere always usingElf64_Addrinstead of the correctElfW(Addr)type. - #1459: the sizing of
blksize_tandnlink_twas incorrect, which lead to incorrect layouts of Linux'sstruct statfor most architectures (i.e. non-x86) - #1459: the layout of
struct statvfsandstruct statvfs64was incorrect - #1459: some
O_*andF_*macros in<fcntl.h>were incorrect on some architectures and were fixed. - #1459: values of
POLLWRNORMandPOLLWRBANDwere incorrect on m68k - #1459: fixed incorrect layout of
struct shmid_ds - #1459: the layouts of
sigcontext,ucontext_tandmcontext_twere incorrect in multiple architectures and got fixed. - #1459: the layout of
struct msqid64_dswas incorrect due to a silently incorrect ifdef, which was fixed but broke ABI. - #1460: the size of the
d_namemember ofdirentwas changed toNAME_MAX+1in order to align with the maximum permitted value size by POSIX. - #1460: the
wcsxfrmandconfstrfunction had incorrect return types, which were fixed. - #1460:
PRIO_*values were fixed to align with the values Linux syscalls expect. - #1460: the alignment of
fd_setwas fixed. - #1460: the layout of
struct semid_dswas fixed. - #1460:
<sys/user.h>previously always defined structs for x86_64, which were changed to now be correct for all supported architectures. - #1460:
off_tandoff64_tare now always 64-bit instead oflong. - #1460: fixed the layout of
struct rtentryon 32-bit architectures. - #1460:
useconds_twas turned into a 32-bit value, as it only needs to hold microsecond values worth up to a second. - #1492: changes the values of
LC_*macros andnl_itemvalues to match glibc, so that glibc locale files can be consumed. - #1492: fix
struct epoll_eventalignment on x86
Numerous ABI breaks. These were not properly logged, and are therefore missing here. Pending update, if one ever comes.
Numerous ABI breaks. These were not properly logged, and are therefore missing here. Pending update, if one ever comes.
- #814:
struct timex'slong int taichanged to the correctint tai, andint __padding[11]got appended to the struct. - #816:
sys_wait4on Linux now correctly returns apid_t, not anintas previously. - #816: All
MS_*macros of thesys/mount.hheader were adjusted to match linux. - #816:
struct epoll_eventnow gets correctly packed onx86_64. - #819:
str(n)dupais now defined as a pure macro, and not as a macro that points to a function. - #828: Linux-specific functions previously included in the posix option in
pthreads.handsched.hare not correctly guarded behind the linux option. - #828: The
CPU_*macros ofsched.hhave been rewritten to resolve to internal mlibc implementations, and are now correctly guarded behind the linux option. - #735:
sched_getcpuandsetnswere previously mistakenly C++-mangled and not declared, which has now been rectified.
- #728:
The macros
CMSG_{LEN,SPACE,DATA}were not accounting for padding betweenstruct cmsghdrand it's respective data. This manifested itself as some parts of control data being skipped on platforms wherestruct cmsghdris not divisible byalignof(size_t). - #452: The functions
FD_{CLR,ISSET,SET,ZERO}were renamed to__FD_{CLR,ISSET,SET,ZERO}and replaced by macros to match Wine's assumptions. - #511: Musl's regex engine was added, implementing
regcompandregexec. This required some changes to theregex_tstruct. - #504: In the Linux ABI, a
domainnamemember was added tostruct utsname, which is a glibc extension. - #311: Added all necessary fields in
pthread_attr_trequired for implementing allpthread_attrfunctions. - #652: The ABI of
struct statfsandstruct statvfswas changed to match Linux.socklen_twas also changed fromunsigned longtounsigned int. - #658: In the Linux ABI,
cc_twas changed from anunsigned intto anunsigned char. - #679: The
struct glob_treceived some additional members to bring it up to par with glibc.