I am getting a 64bit address for char pointer for a 32 bit process. I don't know if I am getting the casting correct.
#!/usr/sbin/dtrace -qs typedef struct door_arg { char *data_ptr; /* Argument/result buf ptr*/ size_t data_size; /* Argument/result buf size */ door_desc_t *desc_ptr; /* Argument/result descriptors */ uint_t desc_num; /* Argument/result num desc */ char *rbuf; /* Result buffer */ size_t rsize; /* Result buffer size */ } door_arg_t; fbt::door_call:entry /curpsinfo->pr_dmodel == PR_MODEL_ILP32/ { self->r = (struct door_arg *)copyin(arg1,sizeof(struct door_arg)); printf("32bit char data pointer is %a and size %x\n",self->r->data_ptr, self->r->data_size); tracemem(self->r,100); } I am getting a 64 bit address here, am I missing some casting here? 32bit char data pointer is 0xff1e0000000000b0 and size 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 0: ff 1e 00 00 00 00 00 b0 00 00 00 00 00 00 00 00 ................ 10: ff 1e 00 00 00 00 40 00 ff 33 37 c0 00 00 00 07 ......@..37..... 20: ff 33 37 c8 00 00 00 b0 00 00 40 00 ff 1e 00 90 .37.......@..... 30: 00 00 00 1c ff ff ff ff 7d 60 00 00 00 00 00 00 ........}`...... 40: 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 ..d............. 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 .... Thanks -- This message posted from opensolaris.org _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org