Index: b/usr/src/lib/libc/common/sys/_so_accept.s =================================================================== --- a/usr/src/lib/libc/common/sys/_so_accept.s +++ b/usr/src/lib/libc/common/sys/_so_accept.s @@ -33,8 +33,8 @@ /* C library -- __so_accept */ /* - * int __so_accept(int sock, struct sockaddr *addr, int *addrlen, int vers, - * int flags) + * int __so_accept(int sock, struct sockaddr *addr, int *addrlen, int vers) + * int __so_accept4(int sock, struct sockaddr *addr, int *addrlen, int vers, int flags) */ #include "SYS.h" @@ -42,3 +42,7 @@ SYSCALL2_RVAL1(__so_accept,accept) RET SET_SIZE(__so_accept) + + SYSCALL2_RVAL1(__so_accept4,accept4) + RET + SET_SIZE(__so_accept4) Index: b/usr/src/lib/libc/port/threads/scalls.c =================================================================== --- a/usr/src/lib/libc/port/threads/scalls.c +++ b/usr/src/lib/libc/port/threads/scalls.c @@ -1067,13 +1067,22 @@ sigqueue(pid_t pid, int signo, const uni } int -_so_accept(int sock, struct sockaddr *addr, uint_t *addrlen, int version, +_so_accept(int sock, struct sockaddr *addr, uint_t *addrlen, int version) +{ + extern int __so_accept(int, struct sockaddr *, uint_t *, int); + int rv; + + PERFORM(__so_accept(sock, addr, addrlen, version)) +} + +int +_so_accept4(int sock, struct sockaddr *addr, uint_t *addrlen, int version, int flags) { - extern int __so_accept(int, struct sockaddr *, uint_t *, int, int); + extern int __so_accept4(int, struct sockaddr *, uint_t *, int, int); int rv; - PERFORM(__so_accept(sock, addr, addrlen, version, flags)) + PERFORM(__so_accept4(sock, addr, addrlen, version, flags)) } int Index: b/usr/src/lib/libsocket/socket/weaks.c =================================================================== --- a/usr/src/lib/libsocket/socket/weaks.c +++ b/usr/src/lib/libsocket/socket/weaks.c @@ -61,6 +61,7 @@ extern int _so_bind(); extern int _so_listen(); extern int _so_accept(); +extern int _so_accept4(); extern int _so_connect(); extern int _so_shutdown(); extern int _so_recv(); @@ -93,13 +94,13 @@ _listen(int sock, int backlog) int _accept(int sock, struct sockaddr *addr, int *addrlen) { - return (_so_accept(sock, addr, addrlen, SOV_DEFAULT, 0)); + return (_so_accept(sock, addr, addrlen, SOV_DEFAULT)); } int _accept4(int sock, struct sockaddr *addr, int *addrlen, int flags) { - return (_so_accept(sock, addr, addrlen, SOV_DEFAULT, flags)); + return (_so_accept4(sock, addr, addrlen, SOV_DEFAULT, flags)); } int Index: b/usr/src/lib/libc/port/mapfile-vers =================================================================== --- a/usr/src/lib/libc/port/mapfile-vers +++ b/usr/src/lib/libc/port/mapfile-vers @@ -262,6 +262,7 @@ SYMBOL_VERSION ILLUMOS_0.4 { # Illumos a SYMBOL_VERSION DYSON_1 { global: + _so_accept4; cfmakeraw; error; error_at_line;