Laurent Desnogues wrote:
> A recent compiler (gcc 4.4.0) produces this code for a statically
> compiled program:
> 
> 00000000005779e0 <time>:
>   5779e0:     48 83 ec 08             sub    $0x8,%rsp
>   5779e4:     48 c7 c0 00 04 60 ff    mov    $0xffffffffff600400,%rax
>   5779eb:     ff d0                   callq  *%rax
>   5779ed:     48 83 c4 08             add    $0x8,%rsp
>   5779f1:     c3                      retq

Yes.  It's a fixed address.  See the kernel at
linux/arch/x86/kernel/vsyscall_64.c.  There are only 3 vsyscall
functions defined: vgettimeofday, vtime and vgetcpu.

Even though it's a statically linked program, I'm not sure if the
above code will work on really old kernels.

The vsyscall page is different from the vdso, which has variable
address, and the address is supplied to Glibc.  vdso provides nearly
the same functions in a different way.

-- Jamie


Reply via email to