Thank you, Roland,

Roland Mainz wrote:
> Jason Zhao wrote:
>   
>> Adam Leventhal wrote:
>>     
>>> Hi Jason,
>>>
>>> It would appear that your shell is a 32-bit process and you're
>>> recording the stack on entry to exece rather than the return. That is
>>> to say, you're recording the stack of your shell rather than the stack
>>> of the 64-bit ls process:
>>>
>>> # dtrace -n 'syscall::exece:return{ stack(); ustack(); }'dtrace:
>>> description 'syscall::exece:return' matched 1 probe
>>> CPU     ID                    FUNCTION:NAME
>>>   1  82155                     exece:return
>>>               unix`sys_syscall32+0x1fc
>>>
>>>               0xfffffd7fff3bd8da
>>>       
>> Yes, my shell is 32-bit, as following:
>>
>> # file /usr/bin/bash
>> /usr/bin/bash:    ELF 32-bit LSB executable 80386 Version 1 [FPU],
>> dynamically linked, stripped
>>
>> In other words, I should have run 64-bit bash other than 32-bit one. So
>> that I could get 64-bit address.
>>     
>
> Solaris doesn't ship a 64bit version of "bash" (yet ; I'll work on that
> soon), right now the only 64bit shell shipped with the OS is ksh93, e.g.
> - /usr/bin/ksh93 is a link to "isaexec" which selects a 32bit or 64bit
> version of ksh93 based on /usr/bin/isalist output
> - /usr/bin/i86/ksh93 is 32bit/i386
> - /usr/bin/amd64/ksh93 is 64bit/AMD64
> - /usr/bin/sparcv7/ksh93 is 32bit/SPARC
> - /usr/bin/sparcv9/ksh93 is 64bit/SPARC
> - /usr/bin/s390/ksh93 is 32bit/SystemZ
> - /usr/bin/s390x/ksh93 is 64bit/SystemZ
>
> ----
>   
It seems like the 64-bit address not only depends on
shell type, but also depends on utilities(commands)
you run.
I run "/usr/bin/ls" got 32-bit, but "/usr/bin/amd64/ls"
got 64-bit address. Is that because 32-bit application
map to memory with 32-bit address? How the address
space is mapped out for a 64 bit application and for
32-bit application?

# file /usr/bin/amd64/ksh93
/usr/bin/amd64/ksh93:    ELF 64-bit LSB executable AMD64 Version 1 [SSE 
FXSR FPU], dynamically linked, not stripped, no debugging information 
available

# /usr/bin/amd64/ksh93
# dtrace -n 'syscall::exece:return{ stack(); ustack(); }'
dtrace: description 'syscall::exece:return' matched 1 probe
CPU     ID                    FUNCTION:NAME
  0  59013                     exece:return
              unix`_sys_sysenter_post_swapgs+0x14b              <----- 
run /usr/bin/amd64/ls

              0xfffffd7fff3bbaea

  0  59013                     exece:return
              unix`_sys_sysenter_post_swapgs+0x14b               <---- 
run /usr/bin/ls

              0xfefc50c2

Thanks
Jason
> Bye,
> Roland
>
>   


Reply via email to