This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: vdso
- From: vijay nag <vijunag at gmail dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- Cc: gdb at sourceware dot org
- Date: Wed, 3 Jul 2013 14:18:48 +0530
- Subject: Re: vdso
- References: <CAKhyrx_TULNrWwSJ0zPq4tgd8MOpkhSRYZfbMRFcRLw7P0mj4Q at mail dot gmail dot com> <20130703084207 dot GA598 at host2 dot jankratochvil dot net>
On Wed, Jul 3, 2013 at 2:12 PM, Jan Kratochvil
<jan.kratochvil@redhat.com> wrote:
> On Wed, 03 Jul 2013 10:34:43 +0200, vijay nag wrote:
>> cat /proc/15896/smaps | grep vdso
>> 778:b7fff000-b8000000 r-xp b7fff000 00:00 0 [vdso]
>>
>> Does vdso come with symbols ?
>
> For basic ELF symbols it does. Try:
> dump memory /tmp/vdso.so 0xb7fff000 0xb8000000
> readelf -Ws /tmp/vdso.so
>
> and .dynsym section there should contain the symbols:
> 4: ffffffffff700ba0 404 FUNC GLOBAL DEFAULT 15 __vdso_gettimeofday@@LINUX_2.6
> 5: ffffffffff700d60 61 FUNC GLOBAL DEFAULT 15 __vdso_getcpu@@LINUX_2.6
> etc.
>
> Then there are also DWARF symbols to see even filenames / line numbers but
> those .debug_* sections at least Fedora ships only on disk in kernel-debuginfo
> rpm. The symbols get loaded automatically by GDB:
> lrwxrwxrwx 1 root root 61 Jul 2 00:43 /usr/lib/debug/.build-id/92/0bba09195bde2b45a7a4eaec1dc78c3157c0f5 -> ../../../../../lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so*
> lrwxrwxrwx 1 root root 58 Jul 2 00:43 /usr/lib/debug/.build-id/92/0bba09195bde2b45a7a4eaec1dc78c3157c0f5.debug -> ../../lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so.debug
> -rwxr-xr-x 1 root root 4856 Jun 28 16:56 /lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so*
> -r--r--r-- 1 root root 104848 Jun 28 16:56 /usr/lib/debug/lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so.debug
> $ rpm -qf /lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so /usr/lib/debug/lib/modules/3.9.8-200.fc18.x86_64/vdso/vdso.so.debug
> kernel-3.9.8-200.fc18.x86_64
> kernel-debuginfo-3.9.8-200.fc18.x86_64
>
>
> You should check first /tmp/vdso.so to see whether your Linux kernel or GDB is
> the problem.
>
>
> Jan
Following are output of readelf and something is surely amiss like you suggested
readelf -Ws /tmp/vdso.so
Symbol table '.dynsym' contains 9 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: ffffe400 0 SECTION LOCAL DEFAULT 6
2: ffffe478 0 SECTION LOCAL DEFAULT 8
3: ffffe480 0 SECTION LOCAL DEFAULT 9
4: ffffe618 0 SECTION LOCAL DEFAULT 11
5: ffffe400 20 FUNC GLOBAL DEFAULT 6 __kernel_vsyscall@@LINUX_2.5
6: 00000000 0 OBJECT GLOBAL DEFAULT ABS LINUX_2.5
7: ffffe440 7 FUNC GLOBAL DEFAULT 6
__kernel_rt_sigreturn@@LINUX_2.5
8: ffffe420 8 FUNC GLOBAL DEFAULT 6 __kernel_sigreturn@@LINUX_2.5