I managed to get it working by hard-coding the offset (ugh!): syscall::lstat64:return / self->stat && pid == $target / { this->path = copyinstr(self->path); printf("Path: %s\n", this->path);
this->stat = copyin( self->stat + 0x34, sizeof(long long) ); printf("File size: %lld\n", *((long long *)(this->stat))); self->stat = 0; } On 6 September 2011 09:51, <casper....@oracle.com> wrote: > > >>The size of the file (hex a8) appears at byte 34 which doesn't agree >>with any of the different structs... (in struct stat32 it's at offset >>30). > > I run the mdb command on SPARC, on x86 it is: > >> ::print -at "struct stat64_32" > 0 struct stat64_32 { > 0 dev32_t st_dev > 4 int32_t [3] st_pad1 > 10 ino64_t st_ino > 18 mode32_t st_mode > 1c nlink32_t st_nlink > 20 uid32_t st_uid > 24 gid32_t st_gid > 28 dev32_t st_rdev > 2c int32_t [2] st_pad2 > 34 off64_t st_size <--- offset 0x34 > 3c timestruc32_t st_atim { > 3c time32_t tv_sec > 40 int32_t tv_nsec > } > 44 timestruc32_t st_mtim { > 44 time32_t tv_sec > 48 int32_t tv_nsec > } > 4c timestruc32_t st_ctim { > 4c time32_t tv_sec > 50 int32_t tv_nsec > } > 54 int32_t st_blksize > 58 blkcnt64_t st_blocks > 60 char [16] st_fstype > 70 int32_t [8] st_pad4 > } > > > Not sure about the why the code doesn't work. > > Casper > > _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org