Re: vdso
vijay nag <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAKhyrx8nSOR4Sq2K3XbyVytUnQMyn42Xpbo1aX0=Df4r5Pebtw@mail.gmail.com> |
On Wed, Jul 3, 2013 at 2:32 PM, Jan Kratochvil <[email protected]> wrote: > On Wed, 03 Jul 2013 10:48:48 +0200, vijay nag wrote: >> 5: ffffe400 20 FUNC GLOBAL DEFAULT 6 __kernel_vsyscall@@LINUX_2.5 > > So your Linux kernel is OK. You should check GDB function add_vsyscall_page > on your system why it did not do what it should do. > > > Regards, > Jan Below are the code excerpts from that function. My gdb version is 7.5 dd_vsyscall_page (struct target_ops *target, int from_tty) { CORE_ADDR sysinfo_ehdr; if (target_auxv_search (target, AT_SYSINFO_EHDR, &sysinfo_ehdr) > 0 && sysinfo_ehdr != (CORE_ADDR) 0) { struct bfd *bfd; struct symbol_file_add_from_memory_args args; if (core_bfd != NULL) bfd = core_bfd; else if (exec_bfd != NULL) bfd = exec_bfd; else /* FIXME: cagney/2004-05-06: Should not require an existing BFD when trying to create a run-time BFD of the VSYSCALL page in the inferior. Unfortunately that's the current interface so for the moment bail. Introducing a ``bfd_runtime'' (a BFD created using the loaded image) file format should fix this. */ { warning (_("Could not load vsyscall page " "because no executable was specified\n" "try using the \"file\" command first.")); return; } args.bfd = bfd; args.sysinfo_ehdr = sysinfo_ehdr; args.name = xstrprintf ("system-supplied DSO at %s", paddress (target_gdbarch, sysinfo_ehdr)); /* Pass zero for FROM_TTY, because the action of loading the vsyscall DSO was not triggered by the user, even if the user typed "run" at the TTY. */ args.from_tty = 0; catch_exceptions (current_uiout, symbol_file_add_from_memory_wrapper, &args, RETURN_MASK_ALL); } }