I see in the vdso that all functions are marked as STT_FUNC instead of STT_GNU_IFUNC. Especially I know "gettimeofday" is an Ifunc.
Is it true that all the functions in the VDSO are Ifuncs so they aren't tagged as such? if not - Why aren't these functions tagged as Ifuncs?
See the following on Ubuntu:
root@host:# objdump -T /lib/modules/3.13.0-32-generic/vdso/vdso.so
/lib/modules/3.13.0-32-generic/vdso/vdso.so: file format elf64-x86-64
DYNAMIC SYMBOL TABLE:
ffffffffff700354 l d .eh_frame_hdr 0000000000000000 .eh_frame_hdr
ffffffffff700700 w DF .text 00000000000005ad LINUX_2.6 clock_gettime
0000000000000000 g DO *ABS* 0000000000000000 LINUX_2.6 LINUX_2.6
ffffffffff700cb0 g DF .text 00000000000002e5 LINUX_2.6 __vdso_gettimeofday
ffffffffff700fc0 g DF .text 000000000000003d LINUX_2.6 __vdso_getcpu
ffffffffff700cb0 w DF .text 00000000000002e5 LINUX_2.6 gettimeofday
ffffffffff700fa0 w DF .text 0000000000000016 LINUX_2.6 time
ffffffffff700fc0 w DF .text 000000000000003d LINUX_2.6 getcpu
ffffffffff700700 g DF .text 00000000000005ad LINUX_2.6 __vdso_clock_gettime
ffffffffff700fa0 g DF .text 0000000000000016 LINUX_2.6 __vdso_time