Hi, currently on GNU/Linux running i386 inferior on x86_64 host you do not see some of the debug info for the vDSO32 provided by the kernel. Unpatched: ------------------------------------------------------------------------------ 0xffffe410 in __kernel_vsyscall () (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0x00c7a853 in __read_nocancel () from /lib/libc.so.6 #2 0x0804b263 in ?? () #3 0x0804941f in ?? () #4 0x00bcd3a0 in __libc_start_main () from /lib/libc.so.6 #5 0x08048c61 in ?? () (gdb) info line *0xffffe410 No line number information available for address 0xffffe410 <__kernel_vsyscall+16> ------------------------------------------------------------------------------ Patched: ------------------------------------------------------------------------------ __kernel_vsyscall () at arch/x86_64/ia32/vsyscall-sysenter.S:26 26 pop %ebp Current language: auto; currently asm (gdb) bt #0 __kernel_vsyscall () at arch/x86_64/ia32/vsyscall-sysenter.S:26 #1 0x00c7a853 in __read_nocancel () from /lib/libc.so.6 #2 0x0804b263 in ?? () #3 0x0804941f in ?? () #4 0x00bcd3a0 in __libc_start_main () from /lib/libc.so.6 #5 0x08048c61 in ?? () (gdb) info line $eip Convenience variables used in line specs must have integer values. (gdb) info line $rip Convenience variables used in line specs must have integer values. (gdb) p/x $eip $1 = 0xffffe410 (gdb) info line *0xffffe410 Line 26 of "arch/x86_64/ia32/vsyscall-sysenter.S" starts at address 0xffffe410 <__kernel_vsyscall+16> and ends at 0xffffe411 <__kernel_vsyscall+17>. ------------------------------------------------------------------------------ The problem is this vDSO is in assembly language, therefore its <0>: Abbrev Number: 1 (DW_TAG_compile_unit) < c> DW_AT_stmt_list : 0 <10> DW_AT_ranges : 0 <14> DW_AT_name : arch/x86_64/ia32/vsyscall-sysenter.S <39> DW_AT_comp_dir : /usr/src/debug////////kernel-2.6.22/linux-2.6.22.x86_64 <71> DW_AT_producer : GNU AS 2.17.50.0.18 <85> DW_AT_language : 32769 (MIPS assembler) Contents of the .debug_ranges section: Offset Begin End 00000000 ffffffff 00000000 (start > end) 00000000 ffffe400 ffffe414 00000000 ffffe500 ffffe508 00000000 ffffe600 ffffe607 00000000 DW_TAG_compile_unit has no children and it has neither DW_AT_low_pc nor DW_AT_high_pc but it has DW_AT_ranges instead. So far DW_AT_ranges was not parsed into PSYMTABS and so this file was ignored during the debug info search later. Reasons for the discontinuous vDSO32 layout/hack are in the Linux kernel sources. Thanks to Roland McGrath for pointing out this .debug_info is not broken for `.S'. Regards, Jan