2 * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
3 * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
4 * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
5 * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. The name of the author may not be used to endorse or promote products
17 * derived from this software without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 #if defined(SPARC) || defined(SPARC64)
35 unsigned short st_dev;
37 unsigned short st_mode;
39 unsigned short st_uid;
40 unsigned short st_gid;
41 unsigned short st_rdev;
44 unsigned int __unused1;
46 unsigned int __unused2;
48 unsigned int __unused3;
51 unsigned int __unused4[2];
58 unsigned int st_nlink;
68 unsigned long __unused4[2];
71 # define stat kernel_stat
72 # include <asm/stat.h>
76 unsigned long long st_dev;
77 unsigned long long st_ino;
78 unsigned long long st_nlink;
84 unsigned long long st_rdev;
89 unsigned long long st_atime;
90 unsigned long long st_atime_nsec;
91 unsigned long long st_mtime;
92 unsigned long long st_mtime_nsec;
93 unsigned long long st_ctime;
94 unsigned long long st_ctime_nsec;
95 long long __unused[3];
99 unsigned long long st_dev;
100 unsigned char __pad0[4];
101 unsigned long __st_ino;
102 unsigned int st_mode;
103 unsigned int st_nlink;
104 unsigned long st_uid;
105 unsigned long st_gid;
106 unsigned long long st_rdev;
107 unsigned char __pad3[4];
109 unsigned long st_blksize;
110 unsigned long long st_blocks;
111 unsigned long st_atime;
112 unsigned long st_atime_nsec;
113 unsigned long st_mtime;
114 unsigned int st_mtime_nsec;
115 unsigned long st_ctime;
116 unsigned long st_ctime_nsec;
117 unsigned long long st_ino;
118 } __attribute__((packed));
119 # define HAVE_STAT64 1
121 struct __old_kernel_stat {
122 unsigned short st_dev;
123 unsigned short st_ino;
124 unsigned short st_mode;
125 unsigned short st_nlink;
126 unsigned short st_uid;
127 unsigned short st_gid;
128 unsigned short st_rdev;
129 unsigned int st_size;
130 unsigned int st_atime;
131 unsigned int st_mtime;
132 unsigned int st_ctime;
143 # define dev_t __kernel_dev_t
144 # define ino_t __kernel_ino_t
145 # define mode_t __kernel_mode_t
146 # define nlink_t __kernel_nlink_t
147 # define uid_t __kernel_uid_t
148 # define gid_t __kernel_gid_t
149 # define off_t __kernel_off_t
150 # define loff_t __kernel_loff_t
152 # include <asm/stat.h>
164 # define mode_t mode_t
165 # define nlink_t nlink_t
169 # define loff_t loff_t
172 #define stat libc_stat
173 #define stat64 libc_stat64
174 #include <sys/stat.h>
177 /* These might be macros. */
184 #ifdef MAJOR_IN_SYSMACROS
185 # include <sys/sysmacros.h>
188 #ifdef MAJOR_IN_MKDEV
189 # include <sys/mkdev.h>
194 #if defined(SPARC) || defined(SPARC64)
202 int st_pad1[3]; /* network id */
211 int st_pad3; /* st_size, off_t expansion */
212 timestruct_t st_atime;
213 timestruct_t st_mtime;
214 timestruct_t st_ctime;
218 int st_pad4[8]; /* expansion area */
222 printstatsol(struct tcb *tcp, long addr)
224 struct solstat statbuf;
226 if (umove(tcp, addr, &statbuf) < 0) {
231 tprintf("{st_dev=makedev(%lu, %lu), st_ino=%lu, st_mode=%s, ",
232 (unsigned long) ((statbuf.st_dev >> 18) & 0x3fff),
233 (unsigned long) (statbuf.st_dev & 0x3ffff),
234 (unsigned long) statbuf.st_ino,
235 sprintmode(statbuf.st_mode));
236 tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
237 (unsigned long) statbuf.st_nlink,
238 (unsigned long) statbuf.st_uid,
239 (unsigned long) statbuf.st_gid);
240 tprintf("st_blksize=%lu, ", (unsigned long) statbuf.st_blksize);
241 tprintf("st_blocks=%lu, ", (unsigned long) statbuf.st_blocks);
244 tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode));
245 switch (statbuf.st_mode & S_IFMT) {
246 case S_IFCHR: case S_IFBLK:
247 tprintf("st_rdev=makedev(%lu, %lu), ",
248 (unsigned long) ((statbuf.st_rdev >> 18) & 0x3fff),
249 (unsigned long) (statbuf.st_rdev & 0x3ffff));
252 tprintf("st_size=%u, ", statbuf.st_size);
256 tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime.tv_sec));
257 tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime.tv_sec));
258 tprintf("st_ctime=%s}", sprinttime(statbuf.st_ctime.tv_sec));
264 # if defined(SPARC64)
266 printstat_sparc64(struct tcb *tcp, long addr)
268 struct stat_sparc64 statbuf;
270 if (umove(tcp, addr, &statbuf) < 0) {
276 tprintf("{st_dev=makedev(%lu, %lu), st_ino=%lu, st_mode=%s, ",
277 (unsigned long) major(statbuf.st_dev),
278 (unsigned long) minor(statbuf.st_dev),
279 (unsigned long) statbuf.st_ino,
280 sprintmode(statbuf.st_mode));
281 tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
282 (unsigned long) statbuf.st_nlink,
283 (unsigned long) statbuf.st_uid,
284 (unsigned long) statbuf.st_gid);
285 tprintf("st_blksize=%lu, ",
286 (unsigned long) statbuf.st_blksize);
287 tprintf("st_blocks=%lu, ",
288 (unsigned long) statbuf.st_blocks);
291 tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode));
292 switch (statbuf.st_mode & S_IFMT) {
293 case S_IFCHR: case S_IFBLK:
294 tprintf("st_rdev=makedev(%lu, %lu), ",
295 (unsigned long) major(statbuf.st_rdev),
296 (unsigned long) minor(statbuf.st_rdev));
299 tprintf("st_size=%lu, ", statbuf.st_size);
303 tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime));
304 tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime));
305 tprintf("st_ctime=%s}", sprinttime(statbuf.st_ctime));
310 # endif /* SPARC64 */
311 #endif /* SPARC[64] */
313 #if defined POWERPC64
314 struct stat_powerpc32 {
317 unsigned int st_mode;
318 unsigned short st_nlink;
321 unsigned int st_rdev;
322 unsigned int st_size;
323 unsigned int st_blksize;
324 unsigned int st_blocks;
325 unsigned int st_atime;
326 unsigned int st_atime_nsec;
327 unsigned int st_mtime;
328 unsigned int st_mtime_nsec;
329 unsigned int st_ctime;
330 unsigned int st_ctime_nsec;
331 unsigned int __unused4;
332 unsigned int __unused5;
336 printstat_powerpc32(struct tcb *tcp, long addr)
338 struct stat_powerpc32 statbuf;
340 if (umove(tcp, addr, &statbuf) < 0) {
346 tprintf("{st_dev=makedev(%u, %u), st_ino=%u, st_mode=%s, ",
347 major(statbuf.st_dev), minor(statbuf.st_dev),
349 sprintmode(statbuf.st_mode));
350 tprintf("st_nlink=%u, st_uid=%u, st_gid=%u, ",
351 statbuf.st_nlink, statbuf.st_uid, statbuf.st_gid);
352 tprintf("st_blksize=%u, ", statbuf.st_blksize);
353 tprintf("st_blocks=%u, ", statbuf.st_blocks);
356 tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode));
357 switch (statbuf.st_mode & S_IFMT) {
358 case S_IFCHR: case S_IFBLK:
359 tprintf("st_rdev=makedev(%lu, %lu), ",
360 (unsigned long) major(statbuf.st_rdev),
361 (unsigned long) minor(statbuf.st_rdev));
364 tprintf("st_size=%u, ", statbuf.st_size);
368 tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime));
369 tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime));
370 tprintf("st_ctime=%s}", sprinttime(statbuf.st_ctime));
375 #endif /* POWERPC64 */
377 #include "xlat/fileflags.h"
380 realprintstat(struct tcb *tcp, struct stat *statbuf)
383 tprintf("{st_dev=makedev(%lu, %lu), st_ino=%lu, st_mode=%s, ",
384 (unsigned long) major(statbuf->st_dev),
385 (unsigned long) minor(statbuf->st_dev),
386 (unsigned long) statbuf->st_ino,
387 sprintmode(statbuf->st_mode));
388 tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
389 (unsigned long) statbuf->st_nlink,
390 (unsigned long) statbuf->st_uid,
391 (unsigned long) statbuf->st_gid);
392 #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
393 tprintf("st_blksize=%lu, ", (unsigned long) statbuf->st_blksize);
395 #ifdef HAVE_STRUCT_STAT_ST_BLOCKS
396 tprintf("st_blocks=%lu, ", (unsigned long) statbuf->st_blocks);
400 tprintf("{st_mode=%s, ", sprintmode(statbuf->st_mode));
401 switch (statbuf->st_mode & S_IFMT) {
402 case S_IFCHR: case S_IFBLK:
403 #ifdef HAVE_STRUCT_STAT_ST_RDEV
404 tprintf("st_rdev=makedev(%lu, %lu), ",
405 (unsigned long) major(statbuf->st_rdev),
406 (unsigned long) minor(statbuf->st_rdev));
407 #else /* !HAVE_STRUCT_STAT_ST_RDEV */
408 tprintf("st_size=makedev(%lu, %lu), ",
409 (unsigned long) major(statbuf->st_size),
410 (unsigned long) minor(statbuf->st_size));
411 #endif /* !HAVE_STRUCT_STAT_ST_RDEV */
414 tprintf("st_size=%lu, ", (unsigned long) statbuf->st_size);
418 tprintf("st_atime=%s, ", sprinttime(statbuf->st_atime));
419 tprintf("st_mtime=%s, ", sprinttime(statbuf->st_mtime));
420 tprintf("st_ctime=%s", sprinttime(statbuf->st_ctime));
421 #if HAVE_STRUCT_STAT_ST_FLAGS
422 tprints(", st_flags=");
423 printflags(fileflags, statbuf->st_flags, "UF_???");
425 #if HAVE_STRUCT_STAT_ST_ACLCNT
426 tprintf(", st_aclcnt=%d", statbuf->st_aclcnt);
428 #if HAVE_STRUCT_STAT_ST_LEVEL
429 tprintf(", st_level=%ld", statbuf->st_level);
431 #if HAVE_STRUCT_STAT_ST_FSTYPE
432 tprintf(", st_fstype=%.*s",
433 (int) sizeof statbuf->st_fstype, statbuf->st_fstype);
435 #if HAVE_STRUCT_STAT_ST_GEN
436 tprintf(", st_gen=%u", statbuf->st_gen);
446 printstat(struct tcb *tcp, long addr)
454 if (syserror(tcp) || !verbose(tcp)) {
455 tprintf("%#lx", addr);
459 #if defined(SPARC) || defined(SPARC64)
460 if (current_personality == 1) {
461 printstatsol(tcp, addr);
465 else if (current_personality == 2) {
466 printstat_sparc64(tcp, addr);
470 #endif /* SPARC[64] */
472 #if defined POWERPC64
473 if (current_personality == 1) {
474 printstat_powerpc32(tcp, addr);
479 if (umove(tcp, addr, &statbuf) < 0) {
484 realprintstat(tcp, &statbuf);
487 # define printstat printstat64
490 #if !defined HAVE_STAT64 && (defined AARCH64 || defined X86_64)
492 * Linux x86_64 has unified `struct stat' but its i386 biarch needs
493 * `struct stat64'. Its <asm-i386/stat.h> definition expects 32-bit `long'.
494 * <linux/include/asm-x86_64/ia32.h> is not in the public includes set.
495 * __GNUC__ is needed for the required __attribute__ below.
497 * Similarly, aarch64 has a unified `struct stat' but its arm personality
498 * needs `struct stat64' (which also expects a 32-bit `long' but which
499 * shouldn't be packed).
502 unsigned long long st_dev;
503 unsigned char __pad0[4];
504 unsigned int __st_ino;
505 unsigned int st_mode;
506 unsigned int st_nlink;
509 unsigned long long st_rdev;
510 unsigned char __pad3[4];
512 unsigned int st_blksize;
513 unsigned long long st_blocks;
514 unsigned int st_atime;
515 unsigned int st_atime_nsec;
516 unsigned int st_mtime;
517 unsigned int st_mtime_nsec;
518 unsigned int st_ctime;
519 unsigned int st_ctime_nsec;
520 unsigned long long st_ino;
523 __attribute__((packed))
524 # define STAT64_SIZE 96
526 # define STAT64_SIZE 104
529 # define HAVE_STAT64 1
534 printstat64(struct tcb *tcp, long addr)
539 struct stat64 statbuf;
543 (void) sizeof(char[sizeof statbuf == STAT64_SIZE ? 1 : -1]);
550 if (syserror(tcp) || !verbose(tcp)) {
551 tprintf("%#lx", addr);
555 #if defined(SPARC) || defined(SPARC64)
556 if (current_personality == 1) {
557 printstatsol(tcp, addr);
561 else if (current_personality == 2) {
562 printstat_sparc64(tcp, addr);
566 #endif /* SPARC[64] */
569 if (current_personality != 0) {
570 printstat(tcp, addr);
575 if (current_personality != 1) {
576 printstat(tcp, addr);
581 if (umove(tcp, addr, &statbuf) < 0) {
587 tprintf("{st_dev=makedev(%lu, %lu), st_ino=%llu, st_mode=%s, ",
588 (unsigned long) major(statbuf.st_dev),
589 (unsigned long) minor(statbuf.st_dev),
590 (unsigned long long) statbuf.st_ino,
591 sprintmode(statbuf.st_mode));
592 tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
593 (unsigned long) statbuf.st_nlink,
594 (unsigned long) statbuf.st_uid,
595 (unsigned long) statbuf.st_gid);
596 #ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
597 tprintf("st_blksize=%lu, ",
598 (unsigned long) statbuf.st_blksize);
599 #endif /* HAVE_STRUCT_STAT_ST_BLKSIZE */
600 #ifdef HAVE_STRUCT_STAT_ST_BLOCKS
601 tprintf("st_blocks=%lu, ", (unsigned long) statbuf.st_blocks);
602 #endif /* HAVE_STRUCT_STAT_ST_BLOCKS */
605 tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode));
606 switch (statbuf.st_mode & S_IFMT) {
607 case S_IFCHR: case S_IFBLK:
608 #ifdef HAVE_STRUCT_STAT_ST_RDEV
609 tprintf("st_rdev=makedev(%lu, %lu), ",
610 (unsigned long) major(statbuf.st_rdev),
611 (unsigned long) minor(statbuf.st_rdev));
612 #else /* !HAVE_STRUCT_STAT_ST_RDEV */
613 tprintf("st_size=makedev(%lu, %lu), ",
614 (unsigned long) major(statbuf.st_size),
615 (unsigned long) minor(statbuf.st_size));
616 #endif /* !HAVE_STRUCT_STAT_ST_RDEV */
619 tprintf("st_size=%llu, ", (unsigned long long) statbuf.st_size);
623 tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime));
624 tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime));
625 tprintf("st_ctime=%s", sprinttime(statbuf.st_ctime));
626 #if HAVE_STRUCT_STAT_ST_FLAGS
627 tprints(", st_flags=");
628 printflags(fileflags, statbuf.st_flags, "UF_???");
630 #if HAVE_STRUCT_STAT_ST_ACLCNT
631 tprintf(", st_aclcnt=%d", statbuf.st_aclcnt);
633 #if HAVE_STRUCT_STAT_ST_LEVEL
634 tprintf(", st_level=%ld", statbuf.st_level);
636 #if HAVE_STRUCT_STAT_ST_FSTYPE
637 tprintf(", st_fstype=%.*s",
638 (int) sizeof statbuf.st_fstype, statbuf.st_fstype);
640 #if HAVE_STRUCT_STAT_ST_GEN
641 tprintf(", st_gen=%u", statbuf.st_gen);
648 #endif /* HAVE_STAT64 */
650 #if defined(HAVE_STRUCT___OLD_KERNEL_STAT)
652 convertoldstat(const struct __old_kernel_stat *oldbuf, struct stat *newbuf)
654 newbuf->st_dev = oldbuf->st_dev;
655 newbuf->st_ino = oldbuf->st_ino;
656 newbuf->st_mode = oldbuf->st_mode;
657 newbuf->st_nlink = oldbuf->st_nlink;
658 newbuf->st_uid = oldbuf->st_uid;
659 newbuf->st_gid = oldbuf->st_gid;
660 newbuf->st_rdev = oldbuf->st_rdev;
661 newbuf->st_size = oldbuf->st_size;
662 newbuf->st_atime = oldbuf->st_atime;
663 newbuf->st_mtime = oldbuf->st_mtime;
664 newbuf->st_ctime = oldbuf->st_ctime;
665 newbuf->st_blksize = 0; /* not supported in old_stat */
666 newbuf->st_blocks = 0; /* not supported in old_stat */
670 printoldstat(struct tcb *tcp, long addr)
672 struct __old_kernel_stat statbuf;
673 struct stat newstatbuf;
679 if (syserror(tcp) || !verbose(tcp)) {
680 tprintf("%#lx", addr);
684 # if defined(SPARC) || defined(SPARC64)
685 if (current_personality == 1) {
686 printstatsol(tcp, addr);
691 if (umove(tcp, addr, &statbuf) < 0) {
696 convertoldstat(&statbuf, &newstatbuf);
697 realprintstat(tcp, &newstatbuf);
702 sys_stat(struct tcb *tcp)
705 printpath(tcp, tcp->u_arg[0]);
708 printstat(tcp, tcp->u_arg[1]);
715 printstat64_x32(struct tcb *tcp, long addr)
717 struct stat64 statbuf;
723 if (syserror(tcp) || !verbose(tcp)) {
724 tprintf("%#lx", addr);
728 if (umove(tcp, addr, &statbuf) < 0) {
734 tprintf("{st_dev=makedev(%lu, %lu), st_ino=%llu, st_mode=%s, ",
735 (unsigned long) major(statbuf.st_dev),
736 (unsigned long) minor(statbuf.st_dev),
737 (unsigned long long) statbuf.st_ino,
738 sprintmode(statbuf.st_mode));
739 tprintf("st_nlink=%lu, st_uid=%lu, st_gid=%lu, ",
740 (unsigned long) statbuf.st_nlink,
741 (unsigned long) statbuf.st_uid,
742 (unsigned long) statbuf.st_gid);
743 tprintf("st_blksize=%lu, ",
744 (unsigned long) statbuf.st_blksize);
745 tprintf("st_blocks=%lu, ", (unsigned long) statbuf.st_blocks);
748 tprintf("{st_mode=%s, ", sprintmode(statbuf.st_mode));
749 switch (statbuf.st_mode & S_IFMT) {
750 case S_IFCHR: case S_IFBLK:
751 tprintf("st_rdev=makedev(%lu, %lu), ",
752 (unsigned long) major(statbuf.st_rdev),
753 (unsigned long) minor(statbuf.st_rdev));
756 tprintf("st_size=%llu, ", (unsigned long long) statbuf.st_size);
760 tprintf("st_atime=%s, ", sprinttime(statbuf.st_atime));
761 tprintf("st_mtime=%s, ", sprinttime(statbuf.st_mtime));
762 tprintf("st_ctime=%s", sprinttime(statbuf.st_ctime));
771 sys_stat64(struct tcb *tcp)
775 printpath(tcp, tcp->u_arg[0]);
779 printstat64_x32(tcp, tcp->u_arg[1]);
781 printstat64(tcp, tcp->u_arg[1]);
786 return printargs(tcp);
791 sys_newfstatat(struct tcb *tcp)
794 print_dirfd(tcp, tcp->u_arg[0]);
795 printpath(tcp, tcp->u_arg[1]);
799 if (current_personality == 0)
800 printstat(tcp, tcp->u_arg[2]);
802 printstat64(tcp, tcp->u_arg[2]);
803 #elif defined HAVE_STAT64
804 printstat64(tcp, tcp->u_arg[2]);
806 printstat(tcp, tcp->u_arg[2]);
809 printflags(at_flags, tcp->u_arg[3], "AT_???");
814 #if defined(HAVE_STRUCT___OLD_KERNEL_STAT)
816 sys_oldstat(struct tcb *tcp)
819 printpath(tcp, tcp->u_arg[0]);
822 printoldstat(tcp, tcp->u_arg[1]);
829 sys_fstat(struct tcb *tcp)
832 printfd(tcp, tcp->u_arg[0]);
835 printstat(tcp, tcp->u_arg[1]);
841 sys_fstat64(struct tcb *tcp)
845 printfd(tcp, tcp->u_arg[0]);
849 printstat64_x32(tcp, tcp->u_arg[1]);
851 printstat64(tcp, tcp->u_arg[1]);
856 return printargs(tcp);
860 #if defined(HAVE_STRUCT___OLD_KERNEL_STAT)
862 sys_oldfstat(struct tcb *tcp)
865 printfd(tcp, tcp->u_arg[0]);
868 printoldstat(tcp, tcp->u_arg[1]);
874 #if defined(SPARC) || defined(SPARC64)
877 sys_xstat(struct tcb *tcp)
880 tprintf("%ld, ", tcp->u_arg[0]);
881 printpath(tcp, tcp->u_arg[1]);
885 if (tcp->u_arg[0] == _STAT64_VER)
886 printstat64(tcp, tcp->u_arg[2]);
889 printstat(tcp, tcp->u_arg[2]);
895 sys_fxstat(struct tcb *tcp)
898 tprintf("%ld, %ld, ", tcp->u_arg[0], tcp->u_arg[1]);
901 if (tcp->u_arg[0] == _STAT64_VER)
902 printstat64(tcp, tcp->u_arg[2]);
905 printstat(tcp, tcp->u_arg[2]);
911 sys_lxstat(struct tcb *tcp)
914 tprintf("%ld, ", tcp->u_arg[0]);
915 printpath(tcp, tcp->u_arg[1]);
919 if (tcp->u_arg[0] == _STAT64_VER)
920 printstat64(tcp, tcp->u_arg[2]);
923 printstat(tcp, tcp->u_arg[2]);
928 #endif /* SPARC || SPARC64 */