mirror of git://sourceware.org/git/glibc.git
After some discussion in libc-alpha about this POSIX compliance fix, I see
that GLIBC should indeed revert back to previous definition of msghdr and
cmsghdr and implementation of sendmsg, recvmsg, sendmmsg, recvmmsg due some
reasons:
* The possible issue where the syscalls wrapper add the compatibility
layer is quite limited in scope and range. And kernel current
also add some limits to the values on the internal msghdr and
cmsghdr fields:
- msghdr::msg_iovlen larger than UIO_MAXIOV (1024) returns
EMSGSIZE.
- msghdr::msg_controllen larger than INT_MAX returns ENOBUFS.
* There is a small performance hit for recvmsg/sendmsg/recmmsg which
is neglectable, but it is a big hit for sendmmsg since now instead
of calling the syscall for the packed structure, GLIBC is calling
multiple sendmsg. This defeat the very existence of the syscall.
* It currently breaks libsanitizer build on GCC [1] (I fixed on compiler-rt).
However the fix is incomplete because it does add any runtime check
since libsanitizer currently does not have any facility to intercept
symbols with multiple version [2].
This, along with incorret dlsym/dlvsym return for versioned symbol due
another bug [3], makes hard to interpose versioned symbols.
Also, current approach of fixing GCC PR#71445 leads to half-baked
solutions without versioned symbol interposing.
This patch basically reverts commits
|
||
|---|---|---|
| .. | ||
| arpa | ||
| net | ||
| netinet | ||
| sys | ||
| aio.h-data | ||
| assert.h-data | ||
| complex.h-data | ||
| cpio.h-data | ||
| ctype.h-data | ||
| dirent.h-data | ||
| dlfcn.h-data | ||
| errno.h-data | ||
| fcntl.h-data | ||
| fenv.h-data | ||
| float.h-data | ||
| fmtmsg.h-data | ||
| fnmatch.h-data | ||
| ftw.h-data | ||
| glob.h-data | ||
| grp.h-data | ||
| iconv.h-data | ||
| inttypes.h-data | ||
| iso646.h-data | ||
| langinfo.h-data | ||
| libgen.h-data | ||
| limits.h-data | ||
| locale.h-data | ||
| math.h-data | ||
| monetary.h-data | ||
| mqueue.h-data | ||
| ndbm.h-data | ||
| netdb.h-data | ||
| nl_types.h-data | ||
| poll.h-data | ||
| pthread.h-data | ||
| pwd.h-data | ||
| regex.h-data | ||
| sched.h-data | ||
| search.h-data | ||
| semaphore.h-data | ||
| setjmp.h-data | ||
| signal.h-data | ||
| spawn.h-data | ||
| stdalign.h-data | ||
| stdarg.h-data | ||
| stdbool.h-data | ||
| stddef.h-data | ||
| stdint.h-data | ||
| stdio.h-data | ||
| stdlib.h-data | ||
| stdnoreturn.h-data | ||
| string.h-data | ||
| strings.h-data | ||
| stropts.h-data | ||
| syslog.h-data | ||
| tar.h-data | ||
| termios.h-data | ||
| tgmath.h-data | ||
| time.h-data | ||
| uchar.h-data | ||
| ucontext.h-data | ||
| ulimit.h-data | ||
| unistd.h-data | ||
| utime.h-data | ||
| utmpx.h-data | ||
| varargs.h-data | ||
| wchar.h-data | ||
| wctype.h-data | ||
| wordexp.h-data | ||