diff options
author | Keith M Wesolowski <wesolows@foobazco.org> | 2013-05-08 18:18:49 +0000 |
---|---|---|
committer | Keith M Wesolowski <wesolows@foobazco.org> | 2013-05-08 18:18:49 +0000 |
commit | 43840e901cacf50a9bb41148069e34ca307524e8 (patch) | |
tree | 2836162f69bba2534e8b9acf9797e5892f103258 /usr/src/cmd | |
parent | abd43b3991c3becf4fd3cc1a370aeafdc8749a30 (diff) | |
parent | 5dbfd19ad5fcc2b779f40f80fa05c1bd28fd0b4e (diff) | |
download | illumos-joyent-43840e901cacf50a9bb41148069e34ca307524e8.tar.gz |
[illumos-gate merge]
commit 5dbfd19ad5fcc2b779f40f80fa05c1bd28fd0b4e
3713 Implement accept4()
3714 Implement pipe2()
3715 Implement dup3()
3716 Implement mkostemp() and mkostemps()
3719 so_socketpair syscall should preserve FD_CLOEXEC flag
commit 6136c589445a3ea081bd34ab72db1060875b6bcc
3722 link-editor is over restrictive of R_AMD64_32 addends
Conflicts:
usr/src/lib/libc/sparcv9/Makefile.com [copyright]
usr/src/lib/libc/sparc/Makefile.com [copyright]
usr/src/lib/libc/i386/Makefile.com [copyright]
Diffstat (limited to 'usr/src/cmd')
-rw-r--r-- | usr/src/cmd/sgs/packages/common/SUNWonld-README | 1 | ||||
-rw-r--r-- | usr/src/cmd/truss/codes.c | 4 | ||||
-rw-r--r-- | usr/src/cmd/truss/print.c | 72 | ||||
-rw-r--r-- | usr/src/cmd/truss/print.h | 7 | ||||
-rw-r--r-- | usr/src/cmd/truss/systable.c | 6 |
5 files changed, 83 insertions, 7 deletions
diff --git a/usr/src/cmd/sgs/packages/common/SUNWonld-README b/usr/src/cmd/sgs/packages/common/SUNWonld-README index 2a6d570955..32672515c4 100644 --- a/usr/src/cmd/sgs/packages/common/SUNWonld-README +++ b/usr/src/cmd/sgs/packages/common/SUNWonld-README @@ -1646,3 +1646,4 @@ Bugid Risk Synopsis 3451 archive libraries with no symbols shouldn't require a string table 3616 SHF_GROUP sections should not be discarded via other COMDAT mechanisms 3709 need sloppy relocation for GNU .debug_macro +3722 link-editor is over restrictive of R_AMD64_32 addends diff --git a/usr/src/cmd/truss/codes.c b/usr/src/cmd/truss/codes.c index dcab90e5fa..87fae4f257 100644 --- a/usr/src/cmd/truss/codes.c +++ b/usr/src/cmd/truss/codes.c @@ -146,8 +146,8 @@ const char *const FCNTLname[] = { "F_GETLK64", "F_SETLK64", "F_SETLKW64", - NULL, /* 36 */ - NULL, /* 37 */ + "F_DUP2FD_CLOEXEC", + "F_DUPFD_CLOEXEC", NULL, /* 38 */ NULL, /* 39 */ "F_SHARE", diff --git a/usr/src/cmd/truss/print.c b/usr/src/cmd/truss/print.c index 9fbbefbe62..fc236bd556 100644 --- a/usr/src/cmd/truss/print.c +++ b/usr/src/cmd/truss/print.c @@ -372,6 +372,48 @@ prt_ioa(private_t *pri, int raw, long val) /* print ioctl argument */ } void +prt_pip(private_t *pri, int raw, long val) /* print pipe code */ +{ + const char *s = NULL; + + if (!raw) { + switch (val) { + case O_CLOEXEC: + s = "O_CLOEXEC"; + break; + case O_NONBLOCK: + s = "O_NONBLOCK"; + break; + case O_CLOEXEC|O_NONBLOCK: + s = "O_CLOEXEC|O_NONBLOCK"; + break; + } + } + + if (s == NULL) + prt_dex(pri, 0, val); + else + outstring(pri, s); +} + +void +prt_pfd(private_t *pri, int raw, long val) /* print pipe code */ +{ + int fds[2]; + char str[32]; + + /* the fds only have meaning if the return value is 0 */ + if (!raw && + pri->Rval1 >= 0 && + Pread(Proc, fds, sizeof (fds), (long)val) == sizeof (fds)) { + snprintf(str, sizeof (str), "[%d,%d]", fds[0], fds[1]); + outstring(pri, str); + } else { + prt_hex(pri, 0, val); + } +} + +void prt_fcn(private_t *pri, int raw, long val) /* print fcntl code */ { const char *s = raw? NULL : fcntlname(val); @@ -1747,6 +1789,32 @@ prt_skv(private_t *pri, int raw, long val) } } +/* + * Print accept4() flags argument. + */ +void +prt_acf(private_t *pri, int raw, long val) +{ + int first = 1; + if (raw || !val || + (val & ~(SOCK_CLOEXEC|SOCK_NDELAY|SOCK_NONBLOCK))) { + prt_dex(pri, 0, val); + return; + } + + if (val & SOCK_CLOEXEC) { + outstring(pri, "|SOCK_CLOEXEC" + first); + first = 0; + } + if (val & SOCK_NDELAY) { + outstring(pri, "|SOCK_NDELAY" + first); + first = 0; + } + if (val & SOCK_NONBLOCK) { + outstring(pri, "|SOCK_NONBLOCK" + first); + } +} + /* * Print setsockopt()/getsockopt() 2nd argument. @@ -2708,7 +2776,7 @@ void (* const Print[])() = { prt_rst, /* RST -- print string returned by syscall */ prt_smf, /* SMF -- print streams message flags */ prt_ioa, /* IOA -- print ioctl argument */ - prt_nov, /* Was SIX, now available for reuse */ + prt_pip, /* PIP -- print pipe flags */ prt_mtf, /* MTF -- print mount flags */ prt_mft, /* MFT -- print mount file system type */ prt_iob, /* IOB -- print contents of I/O buffer */ @@ -2783,5 +2851,7 @@ void (* const Print[])() = { prt_mob, /* MOB -- print mmapobj() flags */ prt_snf, /* SNF -- print AT_SYMLINK_[NO]FOLLOW flag */ prt_skc, /* SKC -- print sockconfig() subcode */ + prt_acf, /* ACF -- print accept4 flags */ + prt_pfd, /* PFD -- print pipe fds */ prt_dec, /* HID -- hidden argument, make this the last one */ }; diff --git a/usr/src/cmd/truss/print.h b/usr/src/cmd/truss/print.h index 98c2223052..9a9a43b4cb 100644 --- a/usr/src/cmd/truss/print.h +++ b/usr/src/cmd/truss/print.h @@ -26,6 +26,7 @@ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ +/* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All right reserved. */ #ifndef _TRUSS_PRINT_H #define _TRUSS_PRINT_H @@ -61,7 +62,7 @@ extern "C" { #define RST 21 /* print string returned by sys call */ #define SMF 22 /* print streams message flags */ #define IOA 23 /* print ioctl argument */ -/* Number 24 now available for reuse */ +#define PIP 24 /* print pipe flags */ #define MTF 25 /* print mount flags */ #define MFT 26 /* print mount file system type */ #define IOB 27 /* print contents of I/O buffer */ @@ -136,7 +137,9 @@ extern "C" { #define MOB 96 /* print mmapobj() flags */ #define SNF 97 /* print AT_SYMLINK_[NO]FOLLOW flag */ #define SKC 98 /* print sockconfig subcode */ -#define HID 99 /* hidden argument, don't print */ +#define ACF 99 /* accept4 flags */ +#define PFD 100 /* pipe fds[2] */ +#define HID 101 /* hidden argument, don't print */ /* make sure HID is always the last member */ /* diff --git a/usr/src/cmd/truss/systable.c b/usr/src/cmd/truss/systable.c index 66ae2525f4..3cd07c698b 100644 --- a/usr/src/cmd/truss/systable.c +++ b/usr/src/cmd/truss/systable.c @@ -26,6 +26,8 @@ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ +/* Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. */ + #include <stdio.h> #include <stdlib.h> #include <fcntl.h> @@ -258,7 +260,7 @@ const struct systable systable[] = { {"pgrpsys", 3, DEC, NOV, DEC, DEC, DEC}, /* 39 */ {"uucopystr", 3, DEC, NOV, STG, RST, UNS}, /* 40 */ { NULL, 8, HEX, HEX, HEX, HEX, HEX, HEX, HEX, HEX, HEX, HEX}, -{"pipe", 0, DEC, DEC}, /* 42 */ +{"pipe", 2, DEC, NOV, PFD, PIP}, /* 42 */ {"times", 1, DEC, NOV, HEX}, /* 43 */ {"profil", 4, DEC, NOV, HEX, UNS, HEX, OCT}, /* 44 */ {"faccessat", 4, DEC, NOV, ATC, STG, ACC, FAT}, /* 45 */ @@ -450,7 +452,7 @@ const struct systable systable[] = { {"so_socketpair", 1, DEC, NOV, HEX}, /* 231 */ {"bind", 4, DEC, NOV, DEC, HEX, DEC, SKV}, /* 232 */ {"listen", 3, DEC, NOV, DEC, DEC, SKV}, /* 233 */ -{"accept", 4, DEC, NOV, DEC, HEX, HEX, SKV}, /* 234 */ +{"accept", 5, DEC, NOV, DEC, HEX, HEX, SKV, ACF}, /* 234 */ {"connect", 4, DEC, NOV, DEC, HEX, DEC, SKV}, /* 235 */ {"shutdown", 3, DEC, NOV, DEC, SHT, SKV}, /* 236 */ {"recv", 4, DEC, NOV, DEC, IOB, DEC, DEC}, /* 237 */ |