On Tue, Sep 06, 2011 at 10:53:13AM +0100, Toby Riddell wrote: > 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; > }
The problem is that dtrace is trying to prevent unaligned loads, mainly because SPARC faults on them; I'm not entirely sure, but I believe amd64 wouldn't have a problem with performing the load. If you want to make this less hardcoded, you could do: this->stat = copyin(self->stat + offsetof(struct stat64_32, st_size), sizeof (long long)); Cheers, - jonathan > 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
_______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org